[英]Objects in SCP memory location
String s = new String("test");
上面创建了一个对象进行测试,但是如果我在不使用new
关键字的情况下将字符串文字分配给字符串变量该怎么办,在SCP中为此对象创建的内存将被视为对象吗? 如果是这样,没有new
关键字怎么办?
String s = "test";
我的意思是将"test"
视为对象吗?
String s = "test";
下面就将把一个实习 String对象。 这意味着,字符序列“ test”将存储在中央位置,并且每当再次使用相同的文字“ test”时,JVM都不会创建新的String对象,而是使用缓存的String的引用。
String s1 = new String("test");
这两个String,s1都为您提供String对象,但是它们之间有细微的差别。 使用new()运算符创建String对象时,它总是在堆内存和SCP中创建一个新对象。 另一方面,如果使用String文字语法(例如“ test”)创建对象,则它可能会从String池(Perm gen空间中String对象的缓存,现在移至最近的Java版本中的堆空间)中返回现有对象。 ,如果已经存在。 否则,它将创建一个新的字符串对象并将其放入字符串池中以供将来重用,因此在这种情况下,我们有:
s1 == s // is false
s1.equals(s) // is true
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.