String literal vs String对象不像我那样表现吗?

时间:2016-05-07 19:42:26

标签: java eclipse

编辑?:

我正在编写一些代码以更好地理解String类,特别是使用==和.equals比较器。

我的程序相对简单。我已经声明了2个String文字和1个String对象,它们都具有相同的值“banana”。

我知道==主要是测试物理内存引用,而.equals实际上是检查包含的值。

那么,如果我将strtest4声明为新对象,为什么我的第3个条件语句会成立呢?所有其他人都有意义。

private static String str;   
private static String strtest;  
private static String strtest4 = new String();   


public static void main(String[] args) { 

    str = "banana";
    strtest = "banana";
    strtest4 = "banana";

    if (str == strtest) System.out.println("str and strtest point to same location in memory");
    if (str.equals(strtest)) System.out.println("str and strtest have the same value contained");

    if (str == strtest4) System.out.println("\nstr and strtest4 point to same location in memory");
    if (str.equals(strtest4)) System.out.println("str and strtest4 have the same value contained");     

}

运行程序时收到以下输出:

  

str和strtest指向内存中的相同位置

     

str和strtest包含相同的值

     

str和strtest4指向内存中的相同位置

     

str和strtest4包含相同的值

0 个答案:

没有答案