Java里面==和equest的区别及String的要注意的地方

直接上区别

比较类里面的数值是否相等时,用 equals() 方法;当测试两个包装类的引用是否指向同一个对象时,用 ==。

上测试代码

public static void main(String[] args) {
    String str1 = new String("abc");
    String str2 = new String("abc");
    String str3 = "abc";
    String str4 = "abc";
    System.out.println(str1 == str1);
    System.out.println(str1 == str2);
    System.out.println(str3 == str4);
}

输出结果

true
false
true

引用了人家的一段说明

String 是一个特殊的包装类数据。可以用:

String str = new String("abc");

String str = "abc";

两种的形式来创建,第一种是用 new() 来新 建对象的,它会在存放于堆中。每调用一次就会创建一个新的对象。

而第二种是先在栈中创建一个对 String 类的对象引用变量 str,然后查找栈 中有没有存放 "abc",如果没有,则将 "abc" 存放进栈,并令 str 指向”abc”,如果已经有”abc” 则直接令 str 指向“abc”。