Object提供了equals方法,目的是比较两个对象的内容是否一样。
Object实现的equals内部就是“==”比较的,所以(自己写的类)若不重写该方法是没有实际意义的。
java API中大部分类都重写了equals方法,只有自己定义的类我们在需要使用的时候必须重写它。
java中的八大基本类型跟Object是没有关系的,不能参与面向对象的开发当中。
为了解决这种问题,java中提出了拆装箱的想法。
而基本类型与包装类之间的转换:
基本类型->包装类
int i= 124;
Integer i1 = Integer.valueOf(i);
double d = 123.123;
Double d1 = Double.valueOf(d);
注:valueOf在int时只会缓存一个字节内的重用,超出-128~127时会返回新对象。(可以查看源码)
在double时不会缓存,直接返回新对象。
包装类->基本类型
int in = i1.intValue();
double dou = d1.doubleValue();
包装类提供了一个静态方法:parseXXX(String str)可以将字符串转换为对应的基本类型数据。前提是该字符串的内容必须能正确表示基本类型可以保存的值。
String str = "123.123";
int d = Integer.parseInt(str);
syso(d); //此处整数转小数是无法转的,会报numberformatexception.
double dou = Double.parseDouble(str);
syso(dou); //此处是OK的
在JDK1.5时推出了一个新特性,自动拆装箱。
自动拆装箱是编译器认可的特性,而非JVM认可。
当编译器在编译源代码时发现了基本类型与其对应的包装类之间相互赋值使用时,会自动补充代码完成他们之间的转换工作。