这里用到了JUnit,用来测试String pool。
第一个测试,说明两个String是同一个Object,(==就是用来比较object的reference)。而第二个测试则说明两个String Object不同。
众所周知,Java的String是不可改变的字符串对象。为了提高效率,Java为String类提供了串池(String pool)。正如大家所看到的那样,在第一个test中就使用了串池。当你重新声明一个String型变量为abc时,将使用串池里原来的那个abc,而不重新分配内存,也就是说,string2与string1将会指向同一块内存。所以结果为true。在第二个test case中使用了普通对象的声明方式,系统将会为string1和string2各分配一块内存。所以结果为false。
结论:我们比较两个String的值,最好用equals()方法,而最好不要使用==。这就避免了一些不必要的麻烦。另外,声明String的时候,最好用=,这样就可以体现String pool的作用了。
Powered by: BlogJava Copyright © Java求索