本文主要是介绍对JAVA中的String重新认识,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Java运行环境有一个字符串池,由String类维护。执行语句String str="abc"时,首先查看字符串池中是否存在字符串"abc",如果存在则直接将"abc"赋给str,如果不存在则先在字符串池中新建一个字符串"abc",然后再将其赋给str。执行语句String str=new String("abc")时,不管字符串池中是否存在字符串"abc",直接新建一个字符串"abc"(注意:新建的字符串"abc"不是在字符串池中),然后将其付给str。前一语句的效率高,后一语句的效率低,因为新建字符串占用内存空间。
因些,在判断字符串相等时,
String a = "abc";
String b = "abc";
在这种情况下,a==b是返回true的。因为建第二个"abc"的时候,java内部是把已有的"abc"的地址给了b。因此,a和b的地址是相同的,此时a,b指向的是内存中的同一个"abc"。
而当判断 a=="abc"时,返回的是false。因为一个地址和一个字符串,一般是不相等的吧。
而如果用 a.equals(b) 或者 a.equals("abc") 都返回true。
这篇关于对JAVA中的String重新认识的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!