可能重复: How many java objects generated by this code? and why?
我很困惑于以下几点
String s1 = new String("Java");
String s2 = new String("Java");这里创建了多少个对象?
String s1 = new String("Java");
String s2 = new String("Ruby");这里创建了多少个对象?
String s1 = new String("Java");
String s2 = "Java";这里创建了多少个对象?
String s1 = "Java";
String s2 = "Java";这里创建了多少个对象?
发布于 2013-01-24 09:02:29
您的第一部分代码:
创建了2个对象。如果字符串池中不存在"Java“,则会在其中创建并添加一个字符串。
你的第二部分代码:
创建了两个对象,如果字符串池中既没有"Java“也没有"Ruby”,则创建两个字符串并将其添加到其中。
您的第3部分代码:
创建了一个对象。并执行相同的条件来添加字符串池。
您的第4部分代码:
如果字符串池中没有"Java“,则只创建一个对象。否则没有创建新对象。
发布于 2013-01-24 09:05:58
String s1 = new String("Java");
String s2 = new String("Java");它将在堆中创建2个对象。
String s1 = new String("Java");
String s2 = new String("Ruby");这将在堆中创建2个对象。
String s1 = new String("Java");
String s2 = "Java";这将为第一行在堆中创建一个对象。对于第二行,它将检查"Java“是否存在于字符串池中还是not.If是否存在,它将不会创建一个新的string.It来返回对池中已经存在的字符串的引用。
String s1 = "Java";
String s2 = "Java";第一行将检查字符串池中是否存在"Java“,或者not.If是否存在,它不会创建一个新的string.It,将返回对池中已经存在的字符串的引用。第二行将获得对已经创建的string.So的引用,如果存在"Java“或最大一个对象,则没有新的对象。
https://stackoverflow.com/questions/14497335
复制相似问题