2 qq591009006 qq591009006 于 2014.10.27 20:18 提问

Java:String s=new String("xyz")

String s =new String("xyz");创建了几个对象?
一个或两个,其中"xyz"对应一个对象,这个对象存放在常量缓冲区,常量"xyz"不论出现多少次,都是缓冲区那个。每new一次就会创建一个新对象,它会用常量"xyz"对象的内容来创建对象,但是如果在前面使用过"xyz"对象,那么它就不会创建自己,只会创建一个对象。
这种说法正确吗?
那么 String s1= "xyz";String s2="xyz"创建了几个对象?

3个回答

x31001333
x31001333   2014.10.27 20:26
public static void main(String[] args) {
    String a = new String("abc");
    System.out.println(a == "abc");
    String s1 = "xyz";
    String s2 = "xyz";
    System.out.println(s1 == s2);
}

false
true
qq591009006
qq591009006 谢谢,第一个返回结果为false只是说明了它俩不为同一个对象,我想问的是如果我在前面使用过"xyz",那么这句话会创建几个对象?
3 年多之前 回复
freedamjustice
freedamjustice   2014.10.29 18:02

应该这么说,他会在内存分配s1,s2的空间,而s1,s2会指向常量池的"xyz"。

u012293467
u012293467   2014.11.01 12:54

这么简答还来问,自己不知道上网查查吗??

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
【java】String s = new String("xyz")创建了几个对象
原文地址:http://blog.csdn.net/lolashe/article/details/20000293 要理解这个,就要知道string类的工作原理。 你知道在java中除了8中基本类型外,其他的都是类对象以及其引用。所以"xyz"在java中它是一个String对象.对于string类对象来说他的对象值是不能修改的,也就是具有不变性。 看: public class Tes
String s=new String("xyz") 创建了几个对象(详细解析)
String s=new String("sdd") 这个产生了2个对象,一个是new关键字创建的new Sring();另一个是“sdd”对象,abc在一个字符串池中s这个对象指向这个串池 这个题的考点知识很多: 引用变量与对象的区别; 字符串文字"abc"是一个String对象; 文字池(pool of literal strings)和堆(heap)中的字符串对象。 一、
String s=new String("xyz");创建了几个String Object?二者之前的区别是什么?
String s=new String("xyz");创建了几个String Object?二者之前的区别是什么?       两个。第一个对象是字符串常量"xyz" 第二个对象是new String("xyz")的时候产生的,在堆中分配内存给这个对象,只不过这个对象的内容是指向字符串常量"xyz" 另外还有一个引用s,指向第二个对象。这是一个变量,在栈中分配内存。 转载自:htt
String s = new String("xyz")创建了几个对象
本文转自:http://bbs.csdn.net/topics/120074669下的某个评论。 要理解这个,就要知道string类的工作原理。 你知道在java中除了8中基本类型外,其他的都是类对象以及其引用。所以"xyz"在java中它是一个String对象.对于string类对象来说他的对象值是不能修改的,也就是具有不变性。 看: String s="Hello"; s
String s="xyz" 与 String s=new String("xyz")
不知道以下说的对不对,先整理一下看看转贴自 http://hi.baidu.com/piao_live/blog/item/c1edb1fb0605ef136c22ebe2.html要理解这个,就要知道string类的工作原理。 你知道在java中除了8中基本类型外,其他的都是类对象以及其引用。所以 "xyz "在java中它是一个String对象.对于string类对象来说他的对象值是不能修
String s = new String("xyz");创建了几个String Object? 二者之间有什么区别?
String s = new String("xyz"); 这个跟常量池没有关系,只要是new,都是重新分配堆空间,如果不区分栈和堆,这里创建了1个String Object。如果是从jvm角度来说的话,它是创建了两个对象,String s是在栈里创建了一个变量,new String("xyz")是在堆里创建了一个对象并被s引用到。 如果是String s = "xyz",那就要看常量池里
String str = new String("xyz") 会创建几个对象
答案是 两个对象,要理解这个,就要知道string类的工作原理。下面来慢慢分析一下: public class StringTest { public static void main(String[] args){ String s1="Hello"; String s2="Hello"; String s3=new String("
面试题--String s=new String("xyz"); 创建了几个对象
答案:两个对象一个指针(一个编译期创建内建对象xyz ,一个运行期new的对象new String 一个指针 s) 以下部分内容来源于网上 String s=new String("xyz"); String类有一个特殊的创建方法,就是使用""双引号来创建.例如new String("i am")实际创建了2个 String对象,一个是"i am"通过""双引号创建的,另一个是通过new创建的
String s = new String("xyz");创建了几个String Object?
2,在栈中的引用对象s和在堆中的xyz
String s = new String("xyz")——创建了几个String对象?
 String s = new String("xyz")——创建了几个String对象?  String s = new String("xyz");这句话创建了几个String Object?答案:(1)如果是第一次运行这句话,则创建两个对象;这句话相当于:string s=new String("xyz");首先在调用string类的构造方法时需要传入一个字符串参数,这里传入"xyz