别再问我 new 字符串创建了几个对象了!我来证明给你看!
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 我想所有 Java 程序员都曾被这个 new String 的问题困扰过,这是一道高频的 Java 面试题,但可惜的是网上众说纷纭,竟然找不到标准的答案。有人说创建了 1 个对象,也有人说创建了 2 个对象,还有人说可能创建了 1 个或 2 个对象,但谁都没有拿出干掉对方的证据,这就让我们这帮吃瓜群众们陷入了两难之中,不知道到底该信谁得。 但是今天,老王就斗胆和大家聊聊这个话题,顺便再拿出点证据。 以目前的情况来看,关于new String("xxx")创建对象个数的答案有 3 种: 1.有人说创建了 1 个对象; 2.有人说创建了 2 个对象; 3.有人说创建了 1 个或 2 个对象。 而出现多个答案的关键争议点在「字符串常量池」上,有的说 new 字符串的方式会在常量池创建一个字符串对象,有人说 new 字符串的时候并不会去字符串常量池创建对象,而是在调用 intern()方法时,才会去字符串常量池检测并创建字符串。 那我们就先来说说这个「字符串常量池」。 字符串常量池 字符串的分配...