┏数值型━┳━整数型:byte short int long
┏基本数据类型━━┫ ┗━浮点型:float double
┃ ┣字符型:char
数据类型╋ ┗布尔型:boolean
┃ ┏类(class)
┗引用数据类型━━╋接口(interface)
┗数组(array)
两者作用:
“==”:比较简单基本数据类型的数值是否相等
比较两个引用变量是否指向同一个对象(判断内存地址是否相等)
==是比较内存中的地址、是对象的句柄
"equals":比较两个对象的内容是否相等
equals比较的是地址内的内容、是对象
2.举例
public 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));
}
}打印: string1== string2? truestring3== 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。这些包装类是类了,也就是引用类型了。