首先贴一份代码:
package thread_1;
public class test {
public static void main(String[] args){
String str1= "helo";
String str2 = "helo";
System.out.println(str1.hashCode());
System.out.println(str2.hashCode());
}
}
这里申明的是局部变量,在数据区存放着“helo”,因此输出两个局部变量的地址的时候,这两个的地址是相同的,都指向着同样的一块数据区域。
这样的内存管理机制让人想起了python,但是python对长字符串有着特殊的方法,即长的字符串地址又是不同的,因此写下下面的测试代码:
package thread_1;
public class test {
public static void main(String[] args){
String str1= "helo world dweipdwjeidjoqijdjwoifoerijfioerwjofijro";
String str2 = "helo world dweipdwjeidjoqijdjwoifoerijfioerwjofijro";
System.out.println(str1.hashCode());
System.out.println(str2.hashCode());
}
}
输出结果如下:
130616888
130616888
130616888
可以看出,Java和python是不相同的,可见不同的程序语言有着不同的设计理念,在学习不同的语言时要多做对比才行。
本文通过两个示例探讨了Java中字符串池的工作原理,并比较了Java与Python在处理字符串时的不同之处。

374

被折叠的 条评论
为什么被折叠?



