认识String之一:比较String

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

java.lang.Object有一个equals类用于比较俩个类是否相等,因此比较俩个String是否相等很简单,比如:

String str1 = “hello quanjizhu“;

String str2 = “hello quanjizhu“;

System.out.println(str1.equals(str2));

这时,肯定会有人指出,其实比较str1和str2还可以直接用==来验证俩着相等:

System.out.println(str1==str2);

这是因为str1,str2都是指向的同样的实例,java编译的时候,会将常量“hello quanjizhu“放到String pool里(我想应该是为了节约存储空间或者提高性能),因此,结果是str1,str2都是指向同样的实例。同样 String str3 =“hello “+“quanjizhu“;在编译的时候会优化成String str3 = “hello quanjizhu“;也是指向同样的实例。再看一个例子

String var = “quanjizhu“;

String str4 = “hello “+var;

System.out.println(str1==str4)的结果是什么呢?输出结果是false,证明了俩着不是指向同一实例,换用一种定义方法:str4 = (“hello “+var4).intern();intern()方法告诉编译器将此结果放到String pool里,因此,输出结构将是true;

不过你用构造器来初始化String类的时候,则又是另外的情况了

String str5 = new String(“hello quanjizhu”);

System.out.println(st1==str5);结果将是flase.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航