1.首先我们来复习下Java中的数据类型
┏数值型━┳━整数型:byte short int long ┏基本数据类型━━┫ ┗━浮点型:float double ┃ ┣字符型:char 数据类型╋ ┗布尔型:boolean ┃ ┏类(class) ┗引用数据类型━━╋接口(interface)┗数组(array)
两者作用:
“==”:比较简单基本数据类型的数值是否相等
比较两个引用变量是否指向同一个对象(判断内存地址是否相等)
==是比较内存中的地址、是对象的句柄
"equals":比较两个对象的内容是否相等
equals比较的是地址内的内容、是对象
2.举例
打印: string1== string2? truepublic class TestEqual { public static void main(String[] args) { // 简单类型比较 string1="aaa"; string2="aaa"; System.out.println("string1= = string2? " + (string1 = = string2)); // 引用类型比较 String string3=new String("aaa"); String string4=new String("aaa"); System.out.println("string3= = string4? " + (string3 = = string4)); } }
string3== string4? false从结果可以看出,对简单类型变量,变量string1和string2数值都为aaa,所以“==”比较后返回真,而对于引用型变量,它们指向两个不同的对象,“==”比较后返回假。如果用equals方法比较将返回真。如下:
// 引用类型比较 String string3=new String("aaa"); String string4=new String("aaa"); System.out.println("string3= = string4? " + (string3.equals(string4)));
打印后:"string3= = string4? " true。
小知识点:基本数据类型都有相应的包装类(Wrapper),比如Integer之于int, Double之于double。这些包装类是类了,也就是引用类型了。