问题
很多初学者对于java中的”==”不知道怎么时候使用,其实很简单,我们可以来分析一下原理!
原理分析
1、先记住一句话:“==比较的是2个对象的地址”
2、只要知道了这句话,那么就好理解了,首先,基本数据类型是直接保存在栈里面的,所以如果两个基本数据类型的值相同,则他们的栈的地址也相同。如果两个引用数据类型使用==比较,只要是两个分别new出来的对象,得到的结果就一定是false了。
public class HelloWorld
{
public static void main(String[] args)
{
String hello = "123";
String hello2 = "123";
System.out.println("由于字符串特性,得到结果为true=====>" + (hello == hello2));
String hello3 = new String("123");
System.out.println("由于字符串特性,新创建了一个对象,得到的结果为false====>" + (hello == hello3));
Integer test1 = 1;
Integer test2 = 1;
System.out.println("基本数据类型比较时,比较的是值,所以得到的是true====>" + (test1 == test2));
Integer test3 = new Integer(1);
System.out.println("引用类型比较时,比较的是值,所以得到的是false====>" + (test1 == test3));
Person p1 = new Person();
Person p2 = new Person();
System.out.println("因为是两个引用类型,比较的是栈的值,所以得到的是false===>" + (p1 == p2));
Person p3 = p2;
System.out.println("虽然都是引用类型,但是都是一个地址,所以得到的True===>" + (p3 == p2));
}
}