您的位置:首页 > 编程语言 > Java开发

疯狂java讲义笔记(李刚)6.1

2018-03-15 19:26 106 查看
java提供了final关键字来修饰变量,方法和类,系统不允许为final变量重新赋值,子类不允许覆盖父类的final方法,final类不能派生子类。通过使用final关键字,允许java实现不可变类,不可变类会让系统更加安全
abstract和interface两个关键字分别用于定义抽象类和接口,抽象类和接口都是从多个子类中抽象出来的共同特征,但抽象主要作为多个类的模板,而接口则定义了多类应该遵守的规范。
6.1 java8增强的包装类
基本数据类型及其包装类
int---Integer        char---Character
byte---Byte        short---Short        long---Long        float---Float        double---Double        boolean---Boolean
自动装箱和自动拆箱功能
自动装箱,就是可以把一个基本类型变量直接赋给对应的包装类对象,或者赋给Object对象(Object是所有类的父类,子类对象可以直接赋给父类对象)
自动拆箱则与之相反,允许直接把包装类对象直接赋给一个对应的基本类型变量
public class AutoBoxingUnboxing
{
public static void main(String[] args)
{
Integer inObj=5;
Object boolObj=true;
int it=inObj;
if(boolObj instanceof Boolean)
{
boolean b=(Boolean)boolObj;
System.out.println(b);
}
}

}
进行自动装箱和自动拆箱时必须注意类型匹配
除此之外,包装类还可实现基本类型和字符串之间的转换,把字符串类型的值转换为基本类型的值有两种方式:
*利用包装类提供的parseXXX(String s)静态方法(除了Character之外的所有包装类都提供了该方法)
*利用包装类提供的XXX(String s)构造器
String类提供了多个重载ValueOf()方法
public class Primitive2String
{
public static void main(String[] args)
{
String intStr="123";
int it1=Integer.parseInt(intStr);
int it2=new Integer(intStr);
System.out.println(it2);
String floatStr="4.56";
float ft1=Float.parseFloat(floatStr);
float ft2=new Float(floatStr);
System.out.println(ft2);
String ftStr=String.valueOf(2.345f);
System.out.println(ftStr);
String dbStr=String.valueOf(3.344);
System.out.println(dbStr);
String boolStr=String.valueOf(true);
System.out.println(boolStr.toUpperCase());
}

}
如果希望把基本类型转换为字符串,还有一种更简单的方法:将基本类型变量和”“进行连接运算,例如:String intStr=5+”“;
虽然包装类型的变量是引用数据类型,但包装类的实例可以与数值类型的值进行比较,这种比较是直接取出包装类实例所包装的数值来进行比较的
public class WrapperClassCompare
{
public static void main(String[] args)
{
String b="6";
//Integer a=new Integer(6);
Integer a=Integer.parseInt(b);
System.out.println("6的包装类实例是否大于5"+(a>5));
}

}
两个包装类的实例进行比较时就比较复杂,因为包装类的实例实际上是引用类型,只有两个包装类引用指向同一个对象时才会返回true
public class WrapperCompare
{
public static void main(String[] args)
{
System.out.println("比较两个包装类的实例是否相等:"+(new Integer(2)==new Integer(2)));
}

}
自动装箱的特殊情形
public class WrapperCompareTest
{
public static void main(String[] args)
{
Integer ina=2;
Integer inb=2;
System.out.println("两个2自动装箱是否相等:"+(ina==inb));//true
Integer biga=128;
Integer bigb=128;
System.out.println("两个128自动装箱后是否相等:"+(biga==bigb));//false
}

}
系统把-128~127之间的整数自动装箱成Integer实例
通过包装类提供的compare(XXX,XXX)可以比较两个基本类型值的大小(当两个boolean类型进行比较时,true>false)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: