最近看到一道面试题,问String s=new String(“xyz”);创建了几个对象,一开始习以为常以为是一个,看了一下答案是一个或者两个,这里分享一下答案:
①. 一个:在String常量池中,如果已经存在"xyz"对象,则不会再创建"xyz"对象,仅创建new String("xyz")对象;
②. 两个:在String常量池中,如果不存在"xyz"对象,则会创建"xyz"对象和new String("xyz")对象。
最近看到一道面试题,问String s=new String(“xyz”);创建了几个对象,一开始习以为常以为是一个,看了一下答案是一个或者两个,这里分享一下答案:
①. 一个:在String常量池中,如果已经存在"xyz"对象,则不会再创建"xyz"对象,仅创建new String("xyz")对象;
②. 两个:在String常量池中,如果不存在"xyz"对象,则会创建"xyz"对象和new String("xyz")对象。