答案是3个。 String s = new String("abc"); 分两种情况, 1)如果String常量池中,已经创建"xyz",则不会继续创建,此时只创建了一个对象new String(“xyz”),此时为一个Obeject对象; 2.如果String常量池中,没有创建"xyz",则会创建两个对象,一个对象的值是"xyz",一个对象new String(“xyz”),此时为二个...
答案是 两个对象,要理解这个,就要知道string类的工作原理。下面来慢慢分析一下: publicclassStringTest{ publicstaticvoidmain(String[] args){ String s1="Hello"; String s2="Hello"; String s3=newString("Hello"); System.out.println("s1和s2 引用地址是否相同:"+(s1 == s2)); System.out.println("...
因为new 关键字,会在内存中重新开辟一个空间,创建一个对象。所以他的内存地址为:380936215 最后执行 String str4 = "Hello" 的时候,因为jvm中存在这个对象,所以直接返回内存地址为1112280004的对象引用。 回归问题: 如果只是单纯的 String str = new String("xyz") ,那么jvm首先会去字符串常量池中查找这个对象,...
String str1 =new String ("abc"); 引用的对象在内存/堆中。 2.String str1 = "string";在栈中 String str3 = "str";在栈中 String str4 = "ing";在栈中 1. 2. 3. 4. 5. String str2 = str3+str4; 在堆中,因为+号的作用是返回另外一个新建的String对象,而不是在栈中找string这个值。...
1.如果String常理池中,已经创建"xyz",则不会继续创建,此时只创建了一个对象new String("xyz") 2.如果String常理池中,没有创建"xyz",则会创建两个对象,一个对象的值是"xyz",一个对象new String("xyz")。 String类不能被继承,因为它是被final修饰的。 (3) 问题扩展 1、栈区(stack)—由编译器自动...
对于String c = new String("xyz");的代码,与String a = "abc"不同的是一概在堆中创建新对象,不管其字符串值是否相等,是否有必要创建新对象,从而加重了程序的负担。 程序1 String s1 = new String("xyz"); //创建二个对象,一个引用 String s2 = new String("xyz"); //创建一个对象,并且以后每执...
String str=new String(“a”)和String str = "a"有什么区别? String s = new String(“xyz”);创建了几个StringObject? 这条语句一共创建了多少个对象:String s=“a”+“b”+“c”+“d”; String s1 = "a"; String s2 = s1 + "b";s2 == “ab” 吗?
两个。第一个对象是字符串常量"xyz" 第二个对象是new String("xyz")的时候产生的 1、内存存放的地址不同:当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。堆内存用来存放由...
百度试题 结果1 题目(10-8)语句“ String str = new String("good"); ”创建了几个String 对象?相关知识点: 试题来源: 解析 该语句创建了两个String对象,一个是常量String对象”good”,另一个是对象引用str。 解析见答案反馈 收藏
Stringstr1="abc";//运行时会在堆中新建一个“abc”的对象,然后将其引用存入到字符串常量池中,且返回给 str1Stringstr2=newString("abc");//运行时会先去字符串常量池中查看是否有“abc”对象的引用,如果有则不需要创建。之后在堆中创建一个“abc”对象,将该对象的引用返回给str2 ...