一、Object类
java.lang.Object类,是所有类的根父类
1.== 和equals的比较
==:
- 基本数据类型:根据基本数据类型的值判断是否相等,相等返回true,反之返回false
- 注:两端数据类型可以不同,在不同的情况下,也可以返回true。
- 引用数据类型:比较类型变量的地址值是否相等。
equals():
- 只能处理引用类型变量
- 在Object类,发现equals()仍然比较的两个引用变量的地址值是否相等。
- 像String类,包装类,File类,Data类这些重写Object类的equals()方法,比较是两个对象的“实体内容”是否完全相同。
若我们自定义一个类,希望比较两个对象的属性值都相同的情况下返回true的话,就需要重写Object类的equals(Object obj)方法。
举例1:
// == // 1.基本数据类型:根据基本数据类型的值判断是否相等,相等返回true,反之返回false // 注:两端数据类型可以不同,在不同的情况下,也可以返回true。 // 2.引用数据类型,比较类型变量的地址值是否相等。 int i = 12; int j = 12; System.out.println(i == j); // true char c = 12; System.out.println(i == c); // true float f = 12.0F; System.out.println(i == f); // true int k = 65; char a = 'A'; System.out.println(k == a); // true Object obj1 = new Object(); Object obj2 = new Object(); System.out.println(obj1 == obj2); Person p1 = new Person(); Person p2 = new Person(); Person p3 = p1; System.out.println(p1 == p2); // false System.out.println(p1 == p3); // true
举例2:
public static void main(String[] args) { TestEquals t = new TestEquals(); t.test1(); // equals():1.只能处理引用类型变量 2.在Object类,发现equals()仍然比较的两个引用变量的地址值是否相等。 // java.lang.Object类,是所有类的根父类 Person p11 = new Person(); Person p12 = new Person(); System.out.println(p11 == p12); // false System.out.println(p11 == p12); // false // 像String类,包装类,File类,Data类这些重写Object类的equals()方法,比较是两个对象的“实体内容”是否完全相同。 String str1 = new String("AA"); String str2 = new String("AA"); System.out.println(str1 == str2); // false System.out.println(str1.equals(str2)); // true }
二、String类
1.toString()方法
(1)当我们输出一个对象的引用时,会调用toString()方法。
public String toString() { getClass().getName() + "@" + Integer.toHexString(hashCode()); }
当我们没有重写Object类的toString()方法时,打印的就是对象所在的类,以及对象实体在堆空间的位置。
(2)一般我们需要重写Object类的toString()方法,将此对象的各个属性值返回。
(3)像String类、Date类、File类、包装类都重写了toString()方法。
三、包装类
1.包装类
基本数据类型由于不是类,不能够使用java库里提供的大量的方法,所以在设计上,我们让每一个基本数据类型都对应一个类,同时数据存储的范围还不变。此时相当于基本数据类型就具有了类的特点。这些类即为包装类(wrapper或封装类)。
2.基本数据类型、包装类、String类之间的转换
总结:
(1)基本数据类型与对应的包装类有自动装箱、自动拆箱
int i = 10; Integer i1 = i; // 自动装箱 int j = i1; // 自动拆箱
(2)基本数据类型、包装类--->String类:调用String类的重载的valueOf(Xxx xx);
String类--->基本数据类型、包装类:调用相应的包装类的parseXxx(String str);
注意:
// 错误写法,String和int之间没有关系 String str = "123"; int i = (int)str;
参考文献: