String toString()
*重写toString方法
*当我们调用一个类的toString方法时,就应当重写该方法,
*因为Object提供的toString方法返回的句柄没有什么实际意义。
*toString返回的字符串应当包含当前类的属性信息。
*具体格式可以根据实际开发需求而定。
*需要看到那些属性,就将那些属性接到字符串中
public class Point{
public StringtoString(){
return"("+x+","+y+")";//point-->(x,y)
}
}
Object中定义的toString方法
* 返回的是对象的句柄(对象的地址)
* 格式为:类名@地址
Point p=new Point(1,2);
String str=p.toString();
System.out.println(str);//day02.Point@27391d
Point p1=newPoint(1,2);
System.out.println(p==p1);//false 地址不等
boolean equals(Object o)
* 重写equals方法
* 目的是比较两个对象的内容是否一致。
* 并不是说所有属性都一样,才叫内容一致,这个要结合将来实际开发需求。
* 如果不重写,默认的是Object的equals,那么比较的就是地址了。
Object提供的equals方法就是用“==”进行比较的,但是并无实际义。
* 当我们需要使用一个类的equals方法时应当重写它。
* java API提供的类基本都实现了该方法(已经重写过了)。
对于引用类型变量而言:
* “==”:值比较,在这里就是地址的比较,所以两个引用类型变量指向同一个对象时才为true,所以比较的是是否为“同一个”
* “equals”:内容比较,比较的是两个对象的内容是否一样,所以比较的是“像不像”
System.out.println(p.equals(p1));//true
包装类(引用类型)
* 基本类型由于没有面向对象特性,所以不能直接参与面向对象开发,为此java为8个基本类型定义了8个包装类,
* 使用包装类可以将基本类型以对象的形式存在,从而参与面向对象开发。
* 6个数字类型(Byte类 Short类 Integer类 Long类 Float类 Double类)包装类继承自Number。
* Number要求数字类型包装提供了6个数字类型转换的方法。
基本类型-->引用类型(包装类)
将基本类型转换为包装类时,推荐使用包装类的静态方法valueOf(),而不是使用new创建
Integer in=Integer.valueOf(127);//value有范围
System.out.println(in.intValue());//127 以int形式返回并输出
System.out.println(in.doubleValue());//127.0 以double形式返回
数字类型Number包装类支持两个常量
* MAX_VALUE:包装类对应基本类型的最大值
* MIN_VALUE:包装类对应基本类型的最小值
包装类都提供了一个静态方法:parseXXX(String str)
* 可以将给定的字符串转换为对应的基本类型值。
* 但是前提是该字符串必须能正确描述该基本类型值。
自动拆装箱
* 自动拆装箱是编译器认可,而不是JVM认可的。
* 编译器在编译源程序时,自动补充了代码在基本类型与引用类型之间转换的过程,称为自动拆装箱。
下面的代码触发了自动装箱:
* 编译器(内部自动)会将代码改为:
* Integer in=Integer.valueOf(1);
Integer in=1;
System.out.println(in);//1
下面的代码触发了自动拆箱:
* 编译器会将代码改为:
* int i=in.intValue();
int i=in;
System.out.println(i);//1