一:简单零碎的知识汇总
1)
2)将字符串转换为基本类型的值主要有两种方法:
1.利用包装类的parseXxx(String s)的静态方法(除Character之外的所有包装类都提供了该方法)。
2.利用包装类的valueOf(String s)的静态方法。
3)将基本数据类型转换成字符串可以使用String类的valueOf()静态方法。也可以将其与""进行连接运算。
4)所有包装类都有一个静态的compare(xxx val1,xxx val2)方法,这个方法可以比较两个基本类型值的大小,包括比较两个boolean类型(true>false)。
5)toString()方法是Object类里的一个实例方法,所有的java类都是Object类的子类,因此所有类都具有toString()方法。如下两行代码输出相同:
6)==运算符比较两个基本数据类型时,只要两个变量的值相同(不一定要求数据类型严格相同),就会返回true。
==运算符比较两个引用类型变量时,只有它们指向同一个对象时才返回true,==不可用于比较类型上没有父子关系的两个对象。
7)关于常量池。
8)equals()方法是Object类所有的一个实例方法,因此所有引用变量都可调用该方法来判断是否与其他引用变量相等。但使用这个方法判断两个对象相等的标准与==没有区别,同样要求两个引用变量指向同一个对象才会返回true。如果希望采用自定义的相等标准,则可采用重写equals()方法来实现。String类已经重写了Object的equals()方法。
二:易混淆出错的难点汇总
1)包装类的实例与数值类型的值进行比较时,直接取出包装类实例所包装的数值进行比较。如下图所示
两个包装类的实例进行比较时,只有两个包装类的引用指向同一个对象时才会返回true。如下图所示
两个由自动装箱生成的Integer实例进行比较时,会出现如下特殊情况:
这与如下Interger类的源代码设计有关,从下面源码可知系统将-128~127之间的整数自动装箱成Integer实例,并放入了名为cache的数组中缓存了起来,所以当-128~127的整数自动装箱成Integer类型时,实际上总指向已缓存的对应数组元素。但超过这个范围的整数自动装箱成Integer类型时,则系统总是重新创建一个实例。因此会出现上图所示结果