繁体   English   中英

SCP记忆位置中的物体

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM