七. == 和 equals() 的区别
== :比较的是,值是不是相等
基本数据类型比较的是值,引用类型比较的是地址值
equals(Object o): Object类中的方法,所以,在每一个java类中,都会有这个方法,
因为每一个java类
都是直接或者间接的Object类的子类,会继承到这个方法
如果自己所写的类中已经重写了equals方法,那么就安装用户自定义的方式来比较
俩个对象是否相等,
如果没有重写过equal方法,那么会调用父类(Object)中的equals方法进行比较,也就是比较地址值
注意:equals(Object o)方法只能是一个对象来调用,然后参数也是要传一个对象的
所以下面是错误的写法:
int a = 1;
a.equals(1);
因为基本数据类型不是算是对象,不能调用方法
如果是基本数据类型那么就用==比较
如果是引用类型的话,想按照自己的方式去比较,就要重写这个类中的equals方法,
如果没有重写,
那么equals和==比较的效果是一样的,都是比较引用的地址值
如果是比较字符串,那么直接用equals就可以了,因为String类里面已经重写了equals方法,
比较的时候字符串的内容,而不是引用的地址值了
toString(): Object类中的方法,所以,在每一个java类中,都会有这个方法,
因为每一个java类都是直接或者
间接的Object类的子类,会继承到这个方法
当前用一个引用指向一个对象的时候,比如:Student s = new Student(),
然后如果直接打印这个引用s,
其实是调用了s.toString()方法,然后就会把这个引用里面的存放的堆区对象的地址值显示出来
所以我们会常常在类中重写这个toString()方法,然后让这个类的引用按照我们要求来返回内容。
getClass():Object类中的方法,所以,在每一个java类中,都会有这个方法,
并且这个方式final修饰的,
不能被子类重写,这个方法可以返回某一个引用在运行的时候指向对象的类型
例如:Person p = new Student()
//会输出:class com.briup.chap06.Student
//说明这个引用p在运行时指向的是Student这个类的对象
//注意这个引用p的类型是Person的(多态)
System.out.println(p.getClass());
八. 基本数据类型对应的包装类型
boolean Boolean
byte Byte
short Short
char Character
int Integer
long Long
float Float
double Double