String str = "xx"; 这个指令无论执行多少次,他们都是指向同一个对象,就是常量池里面的那一个,如果没有就创建,但如果有,就不会再创建了,只会在栈内存开辟一个名字叫 str 的空间,用来存放指向到 "xx" 在常量池里面的地址。 (所以执行太多,栈上而也是有开销的,只是不大而已) 但是,new String("xx") 这...
String str=new String("i"): 创建了一个新的字符串对象,并将其值设置为 "i"。 该字符串对象不在字符串常量池中。 该字符串对象的哈希码是不同的。在这个示例中,str1 和 str2 虽然值相同,但它们不是同一个对象。因此,str1 == str2 返回 false。但是,str1.equals(str2) 返回 true,因为它们的值相同。
解析 答: String str=“123” 在全局数据区开辟存储字符串内存空间,将其地址存储保存在栈区中开辟的内存空间str中。 String str=new String(“123”) 在全局数据区开辟存储字符串内存空间,在堆区中创建一个存储数据的内存空间存储字符串123,并将堆区中的地址保存在栈区中开辟的内存空间str中。
1. 首先String不属于8种基本数据类型,String是一个对象。 因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。 2. new String()和new String(“”)都是申明一个新的空字符串,是空串不是null; 3. String str=”kvill”; String str=new String (“kvi...
在大多数情况下,String str = "i" 和 String str = new String("i") 是等效的,它们都创建了一个包含字符 "i" 的字符串对象。然而,在细微的方面上,它们之间存在一些差异。 1.字符串池:在Java中,字符串池(String Pool)是一块特殊的内存区域,用于存储字符串常量。当使用 ...
)方法,比较的是内容是否相同a1与a2的内容都为"i",所以为true。三、总结 通过以上分析验证:String a1 = "i"是指将内存中"i"的这个地址赋值给了a1,而String a2 = new String("i")是指将这个新new的对象的地址值给了a2。因此String str="i"与 String str=new String("i")之间是不同的。
String str=new String("abc"); 1. 1. 思路 我们可以把上面这行代码分成String str、=、”abc”和new String()四部分来看待。 String str只是定义了一个名为str的String类型的变量,因此它并没有创建对象; =是对变量str进行初始化,将某个对象的引用赋值给它,显然也没有创建对象; ...
简介: String str=“i“与 String str=new String(“i”)一样吗?本文带大家回答这个问题。初级回答 不一样,String str = “i”;是把值放到了常量中,而String str = new String(“i”);是将值放到了堆内存中。 高级回答 String是final修饰的,所以是将值放到了常量中,而new String()是放到了堆内存中。
直接使用String str='字符串'和String str=new String('字符串') 区别 String 开辟一块内存空间,可以自动保存常量池使用。 New String 开辟两块空间,其中有一块成为垃圾空间,不会自动入池,可以使用intern()入池。 1 Java中String是一个特殊的包装类数据有两种创建形式: ...