String str = new String("abc"); 首先,new一个对象在堆中,将new String("abc")的对象的引用地址赋值给变量str。先去常量池查找“abc”是否存在。若存在,直接放引用地址;若不存在,创建“abc”对象,并将引用地址赋给String的有参构造里。 答案:如果常量池中存在,则只需创建一个对象,否则需要创建两个对象。
所以String str2 = new String(“abc”); 此时就创建一个对象,而abc 则是从字符串常量缓冲区中取出来的。 ok。就是这个样子。
下面关于代码String str = new String(“abc”);描述正确的是( )下面关于代码String str = new String(“abc”);描述正确的是( )A. 创建了一个字符串对象 B. 创建了两个对象,一个是new String( )对象,一个是”abc”对象 C. (“abc”);将返回true D. (“abc”);将返回false 答案:BC ...
答:产生了两个对象,一个是 New 关键字创建的 new String();另一个是”abc”对象,abc 在一个字符串池中。反馈 收藏
因此,newstr 为 "ABC DEF",newstr2 为 "abc def"。 正确答案是 B。 该题目是一道 Java 字符串类(String)的基础应用题目。给定字符串 str,分别使用 toLowerCase() 转小写和 toUpperCase()转大写方法,然后输出两个转换后的字符串 newstr 和 newstr2 的值,判断哪个选项是正确的。
1、执行 String str = new String(“ab”);后生成的字节码 结论:单纯执行new String(“XXX”),底层会创建两个对象。一个是在堆中创建XXX的对象,另一个是在堆中字符串常量池中创建。这两个对象的内容都是一样的,但是地址是不相同的。 2、升级:执行 String str = new String(“a&... ...
Stringst1=newString(“abc”);答案是:在内存中创建两个对象,一个在堆内存,一个在常量池,堆内存...
String str =new String("abc") String str1 = "abc" System.out.println(str == str1) System.out.println(str.equal(str1)) 结果: false true 原因解析: Java运行环境有一个字符串池,由String类维护。 1.执行语句String str="abc";时。首先查看字符串池中是否存在字符串"abc",如果存在则直接将“abc...
String str = new String(“abc”),“abc”在内存中是怎么分配的()。A.堆B.栈C.字符串常量区D.寄存器
String str = new String("abc"); 首先要看常量池里是否有“abc”这个字符串,如果有,则创建一个,如果没有,则创建两个。 我们可以把上面这行代码分成String str、=、"abc"和new String()四部分来看待。String str只是定义了一个名为str的String类型的变量,因此它并没有创建对象;=是对变量str进行初始化,将...