String str1="java"
String str2="java"str1==str2为什么是对的,不是应该比较的是对象?

解决方案 »

  1.   

    学习下java   string 的内容
      

  2.   

    比较的是地址   str1会先去栈里寻找存在  不存在则创建  str2去栈里找到了java  所以他们引用了同样的地址   为true
      

  3.   

    首先字符串Java存于方法区常量池中,且字符串值不重复,故str1,str2指向同一对象
      

  4.   

    首先String是一个引用类型,但和别的引用类型有所不同。它在方法区里有一个字符串常量池。String str1会存在栈里,值java会存放在方法区的字符串常量池里,str1指向存放java的内存地址。而你在创建str2 时,首先会去字符串常量池找里面有没有java这个字符串,如果有就不会在创建了,str2直接指向存放java的地址。两个引用指向同一个地址,所以是true
      

  5.   

    "java" 是一个字符串常量, 在常量池中只有一份, 所以地址相同.  返回true.   你可以试一下.  String str2=new String("java");   返回的就是false了
      

  6.   

    了解一下   String str2="java"  创建了几个对象,“java" 放在哪里? 还有== 和equals区别
      

  7.   

    String str2="java"  先去常量池中看看有没有java,有的话直接赋给str2,如果没有则在常量池中创建java赋给str2。String str1="java"同理。str1 == str2 结果为true,因为str1和str2都是常量池中的"java"字符串。
      

  8.   

    == 比较的是内存地址,而在JVM中存在一个字符串池,其中保存着很多String对象,并且可以被共享使用,str1和str2指向的是同一个内存地址,所以str1==str2会返回true;
    但是只有使用引号包含文本的方式创建的String对象之间使用“+”连接产生的新对象才会被加入字符串池中