相等判断符"=="介绍
-
"=="相等判断符用于比较基本数据类型和引用类型数据. 当比较基本数据类型的时候比较的是数值, 当比较引用类型数据时比较的是引用(指针).
-
作用1:判断引用类型数据是否相等
首先基本数据类型指的是Java中的八大数据类型: byte, short, int, long, float, double, char, boolean
这八大基本数据类型有个共同的特点是它们在内存中是有具体值的, 比如说一个int类型的数据"2", 它在8位数据总线的机器上(假设的)保存形式为0000 0010.
当使用"=="比较两个基本数据类型的时候, 就是比较它们各自在内存中的值. -
作用2:判断引用类型数据是否相等
引用数据类型在字面上也是很好理解的, 就是一个引用, 它会指向一个具体的对象.
比如说Student stu = new Student();, 这里的stu就是一个引用, 它指向的是当前new出来的Student对象. 当我们想要操作这个Student对象时, 只需要操作引用即可, 比如说int age = stu.getAge();.
所以用"=="判断两个引用数据类型是否相等的时候, 实际上是在判断两个引用是否指向同一个对象.
看下面的示例public static void main(String[] args) { String s1 = "hello"; //s1指向常量池中的"hello"字符串 String s2 = "hello"; //s2也指向常量池中的"hello"字符串 System.out.println(s1 == s2); //true String s3 = new String("hello"); //s3指向的是堆内存中的字符串对象 System.out.println(s1 == s3); //false }
从上面的例子可以看到, 由于引用"s1"和"s2"指向的都是常量池中的"hello"字符串, 所以返回true.
而"s3"指向的是新创建字符串对象, 因为只要动用了new关键字, 就会在堆内存创建一个新的对象,
也就是说s1和s3指向的是不同的字符串对象, 所以返回false.