当前位置: 首页 > 后端技术 > Java

【Java访谈】newString(-abc-)创建了多少个对象?

时间:2023-04-01 23:02:43 Java

一位从业6年的粉丝告诉我,最近面试越来越难了。基本上都会问技术底层原理,有的甚至会问操作系统方面的知识。我说现在很多优秀的程序员都是从各个一线公司毕业的,市场环境不好对程序员的需求也在减少。如果技术背景不好,找工作会非常困难。今天分享的问题是:“newString("abc")创建了多少个对象?关于这个问题,看看普通人和高手的回答。普通人:"newString("abc")创建了多少个对象??对象我觉得有两个对象,一个是新的Sting本身,一个是字符串“abc”师父:好的,面试官。首先,这段代码中有一个new关键字,它是程序运行时根据加载的系统类String在堆内存中实例化的字符串对象。然后,在这个String的构造方法中,传入了一个“abc”字符串,因为String中的string成员变量是final修饰的,所以是一个字符串常量。接下来,JVM会将字面量“abc”拿到字符串常量池中,尝试获取其对应的String对象引用。如果获取不到,它会在堆内存中创建一个“abc”String对象,并将引用保存到字符串常量池中。如果以后定义了字面量“abc”,因为字面量“abc”的引用已经存在于字符串常量池中,只需要从常量池中获取对应的引用即可,没有需要重新创建它。所以,对于这个问题,我认为答案是,如果字符串常量abc不存在,那么创建两个对象,即字符串常量abc和实例对象newString。如果存在字符串常量abc,则只会创建一个对象。小结从专家的回答可以看出,需要对JVM中的运行时内存划分和JVM常量池有足够深入的了解。现在的技术面试也偏向系统考察,不再是点状的问题。喜欢的朋友记得点赞收藏哦。工作学习有什么问题可以随时私信我。版权声明:除特别声明外,本博客所有文章均采用CCBY-NC-SA4.0许可协议。转载请注明来自Mic带你学建筑!如果本文对您有帮助,请给个关注和点赞。您的坚持是我不断创作的动力。欢迎关注同名微信公众号获取更多技术干货!