答案众说纷纭,有说创建了1个对象,也有说创建了2个对象。答案对,也不对,关键是要学到问题底层的原理。 底层原理分析 String str1 = "abc";//在常量池中String str2=newString("abc");//在堆上 当直接赋值时,字符串“abc”会被存储在常量池中,只有1份,此时的赋值操作等于是创建0个或1个对象。 如果常量...
我们可以把上面这行代码分成String str、=、"abc"和new String()四部分来看待。String str只是定义了一个名为str的String类型的变量,因此它并没有创建对象;=是对变量str进行初始化,将某个对象的引用(或者叫句柄)赋值给它,显然也没有创建对象;现在只剩下new String("abc")了。那么,new String("abc")为什么又...
大家好,我是Mic老师!创作不易,感谢大家的支持与分享!, 视频播放量 5636、弹幕量 21、点赞数 592、投硬币枚数 59、收藏人数 127、转发人数 62, 视频作者 Java面试最新, 作者简介 观住公粽號【Mic聊架构】回复:321 拿面试资料,相关视频:【Java面试】Integer a1=100 Int
答案是两个,现在我们具体的说一下: String s = new String("abc"); 首先我们要明白两个概念,引用变量和对象,对象一般通过new在堆中创建,s只是一个引用变量。 所有的字符串都是String对象,由于字符串文字的大量使用,java中为了节省时间,在编译阶段,会把字符串文字放在文字池中,文字池的一个好处就是可以把相同的...
答:1个或者2个分析:String a=new String(“abc”) 首先在堆中创建一个空白对象,并且初始化a,然后去常量池中查找是否存在“abc”,存在则直接使用常量...
百度试题 结果1 题目String str = new String("abc") 此代码中有几个对象A.1个B.2个C.3个D.4个 相关知识点: 试题来源: 解析 C 反馈 收藏
今天去面试的时候碰到了这个问题:String str = new String(“abc”); 创建了几个对象,回来自己研究并查阅资料才发现答错了。。 网上的争论不少,有的说是两个,答案应该是:两个或一个 理由解释如下: 都了解java 的字符串常量缓冲区(字符串池,字符串常量池), 如果
new+String(abc)会创建几个对象 #java #Java面试 #Java程序员 #面试 #后端开发 - 徐庶讲Java于20241105发布在抖音,已经收获了17.0万个喜欢,来抖音,记录美好生活!
new String("abc")创建了几个对象 面试官考察点猜想 这种问题,考察你对JVM的理解程度。涉及到常量池、对象内存分配等问题。 涉及背景知识详解 在分析这个问题之前,我们先来了解一下JVM的组成,如图所示。 在JVM1.8中,内存划分为堆、程序计数器、本地方发栈、方法区(元空间)、虚拟机栈。
new String("abc")相当于new String(String s1="abc"),即先要执行String s1="abc"(2.1已经讲过了),然后再在堆区new一个String对象。 因此,现在可以解答本文的标题了,String s=new String("abc")创建了1或2个对象,String s="abc"创建了0或1个对象。