String[] str1=new String[]{
new String("Zhangsan"),
new String("Lisi"),
new String("Wangwu") };
String[] str2={
new String("Zhangsan"),
new String("Lisi"),
new String("Wangwu") };
String[] str3={
"Zhangsan",
"Lisi",
"Wangwu" };请问:str1, str2, str3 三者的区别是?
new String("Zhangsan"),
new String("Lisi"),
new String("Wangwu") };
String[] str2={
new String("Zhangsan"),
new String("Lisi"),
new String("Wangwu") };
String[] str3={
"Zhangsan",
"Lisi",
"Wangwu" };请问:str1, str2, str3 三者的区别是?
前两个String[] str1 是申明变量类型和名字 就和 int a 一样 所以习惯把括号跟在String后面。
前两个都是栈里面的一个地址指向推里面的一个数组。
前两个我自己也不是很明白就不乱解释了 我觉得没什么区别。而第三个没有使用new关键字的 就在常量池中 分配 不会进入堆栈。
例子:
String str1 = new String();//看见new就分配内存
String str2 = new String("aaa");//分配两个内存,一个new,一个"aaa"
String str3 = "aaa";//不分配内存,指向str2的"aaa"引用简单说:程序开发不用new关键字,因为每次new都会分配内存,而用常量字符串即使实例化多个相同的"aaa",都是指向同一个内存地址。
String s1 = "fuck";
String s2 = new String("fuck");
的区别一样
就像C++的,都直接去看内存。