Stirng s=new String("a" +"b");这个大家认为创建了几个对象?

研究的深入一点,不要那么浅

String s表示声明了一个引用字符串的变量,这个变量存在栈中。new表示在内存中开辟一块新的空间,至于多大的空间,由后面的具体类型决定。通过new关键字生成的对象存在堆中。常量字符串都是在池中,不能算是创建了对象,当然你可以说它是一个String对象(之前已经存在了)。这里总共创建了两个对象。如果像楼上说的那样:一个字符串对象a。那么我们用==比较,看他们是否相等。因为==比较的是地址,如果他们不相等,说明地址不一样,有新的对象被创建了。不过实际情况“a”=="a"结果为true。即像这样的使用:"a" +"b"并没有创建新的对象。 而new String("a")==new String("a")结果才为false.
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-16
4个对象..
一个字符串对象a
一个字符串对象b
一个字符串对象ab
还有一个String对象
第2个回答  2012-05-16
只创建了一个String的对象s
new String("a" +"b");里面的东西只是这个对象的参数罢了
第3个回答  2012-05-16
创建两个,这是面试题经常问到的问题!
第4个回答  2012-05-16
一个对象s,"a"+"b"是参数,而"a"和"b"是字符串,不能称之为对象

Stirng s=new String("a" +"b");这个大家认为创建了几个对象?
即像这样的使用:"a" +"b"并没有创建新的对象。 而new String("a")==new String("a")结果才为false.

String a= "aaa" 与 Stirng a= new String,请问具体差别
string *a=new string才是正确的

String a= "aaa" 与 Stirng a= new String,请问具体差别
就创建一个新的对象保存"aa".String a=new String ("aa") 就是不管内存里是不是已经有"aa"这个对象,都新建一个对象保存"aa"String a = new String("aa");是在堆里面建立的对象 String,a和"aa"ab="aa";

java中String问题,String a=new String(""); 和String a=new Stri...
1. 首先String不属于8种基本数据类型,String是一个对象。因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。2. new String()和new String(“”)都是申明一个新的空字符串,是空串不是null;3. String str=”kvill”;String str=new Stri...

java为什么Stirng不能和int一起用?
可以用这个方法来实现 String aString=Arrays.toString(new int[]{1,2,4});System.out.println("==="+aString);\/\/下面sun的实现,我反编译的public static String toString(int[] a) { if (a == null) return "null";int iMax = a.length - 1;if (iMax == -1) return "[...

string a="" 和string a=""的区别
有区别 String a=new String("")创建一个空的字符串,注意这里的空不是指NULL 而是"",是占内存的 在堆内存创建了一个对象,在Stirng池中也创建了一个对象 String a=new String();创建一个空的字符串,其值为NULL,不占内存

string在c语言中是什么意思
String是C++、java、VB等编程语言中的字符串,用双引号引起来的几个字符,如"Abc","一天"。在java、C#中,String类是不可变的,对String类的任何改变,都是返回一个新的String类对象。 String 对象是 System.Char 对象的有序集合,用于表示字符串。String 对象的值是该有序集合的内容,并且该值是不...

java中String, StringBuffere,StringBuilder, StringTokenizer的区别是什...
String对象的创建:1、当使用任何方式来创建一个字符串对象s时,JVM会拿这个s在String池中找是否存在内容相同的字符串对象。如果不存在,则在池中创建一个字符串s,否则,不在池中添加。2、Java中,只要使用new关键字类创建对象,则一定会(在堆区或栈区)创建一个新对象。3、使用直接指定或者使用纯...

LiteIDE开发工具简明使用指南
函数就是一个值(Values),是“一等对象“。 如下,声明一个函数 复制代码 代码如下: var myFunc = func(a, b int) int { return a + b } 可以指定参数类型和返回值类型,如果指定了返回值类型,则函数中必须有return语句。 函数值(value)被赋值给了变量myFunc。也可以按照通常的方式定义函数,这是变量myFunc...

java高手来啊,字符串相等问题
System.out.println(cd==t);\/\/ 肯定是true不解释 我写了这么多,只是觉得大家对于String这个对象特别的执着,不论是面试还是考试 ,其实你只要不再循环里+或者+=字符串的话其实是没有什么问题。你平时写个 Stirng aaa = "a'+"b"的话编译器是会帮你优化的。无关痛痒。

相似回答