==:运算符
可以使用在基本数据类型变量和引用数据类型变量中
①如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等(类型不一定要相同,当要能够统一)。
int i = 9; int j = 9; double d = 9.0; System.out.println(i == j); //true System.out.println(i == d); //true char c = 9; System.out.println(i == c); //true char c1 = 'A'; char c2 = 65; System.out.println(c1 == c2); //true
②如果比较的是引用数据类型变量:比较两个对象的地址值是否相同,即两个引用是否指向同一个对象实体。
Account a1 = new Account("Tom",21); Account a2 = new Account("Tom",21); System.out.println(a1 == a2); //false String s3 = new String("相同内容"); String s4 = new String("相同内容"); System.out.println(s3 == s4); //false //静态域常量池问题,所以是true String s1 = "相同内容"; String s2 = "相同内容"; System.out.println(s1 == s2); //true
equals():所有类都继承了Object,也就获得了equals()方法,也可以重写。
只能比较引用类型,其作用与“==”相同,比较是否指向同一个对象。
格式:obj1.equals(obj2)
特别的,对类File、String、Date及包装类(Wrapper Class)来说,equals()方法是比较类型和内容,而不考虑引用的是否是同一个对象,因为在这些类中重写了Object类的equals()方法。我们自定义类通常也需要重写equals()方法。
String s1 = "相同内容"; String s2 = "相同内容"; System.out.println(s1.equals(s2)); //true String s3 = new String("相同内容"); String s4 = new String("相同内容"); System.out.println(s3.equals(s4)); //true