黑马程序员技术交流社区
标题:
String s = new String("xyz");创建了几个对象?
[打印本页]
作者:
隔夜修书
时间:
2014-9-4 23:01
标题:
String s = new String("xyz");创建了几个对象?
String s = new String("xyz");创建了几个对象?
作者:
双皮奶
时间:
2014-9-4 23:30
两个,一个是s ,一个是xyz
作者:
花开彼岸天
时间:
2014-9-5 00:52
确却的说一个是引用 一个是对象 ,对象指向引用 , 否则new String("xyz") 就是个匿名对象
作者:
低调小邦
时间:
2014-9-5 01:05
2个对象哦
作者:
低调小邦
时间:
2014-9-5 01:06
一个是new String() 一个是“xyz”
作者:
viliv715
时间:
2014-9-5 09:38
两个对象 等号左右各是一个
作者:
Peach2014
时间:
2014-9-5 15:28
我觉得你要结合你的代码上下文来看这个问题:
1.如果你的代码之前有声明过“xyz”,如String s = "xyz";那么你这段代码只声明了一个对象;
2.如果你的代码之前没有声明过“xyz”,则这段代码声明了两个对象;
原理:“xyz”作为一个值,按照java中的机制,这个值会存放在栈内存中,当其他变量再声明数值为“xyz”时,则会直接将栈内存中“xyz”的引用传递过去。
而String s = new String("xyz");这里声明一个String类型的变量,变量中的值为“xyz”,实际上变量s是存在于堆内存中的。这里new出的String类型的变量,变量中的值指向栈内存中的“xyz”
作者:
单线程xia
时间:
2014-9-5 15:47
两个对象,一个引用变量
作者:
liaorubei
时间:
2014-9-5 16:08
String a1="java";
String a2="java";
a1==a2;//结果为true,其实a1和a2是同一个数据
String b1=new String("java");
String b2=new String("java");
b1==b2//结果为false,b1和b2是两个对象
和还有一个帖子的内容差不多,
1、String s="java"; 这里产生得到一个字符串常量。系统首先会去“常量池”寻找,看是否有“java”常量存在,如果有那么就将这个常量“java”赋给s,如果没有则系统在常量池里创建“java”,并将其给s。
2、String s = new String("java"); 意思是根据常量“java”创建一个字符串的对象,如此他首先会执行1中的操作,然后根据常量“java”在堆中创建对象,并为其分配内存。
就是说无论如何,都会有两个对象,当然,还有一个引用变量
作者:
袁枭飞
时间:
2014-9-5 16:44
结合代码来看,一个是对象一个是引用变量
作者:
范鹏霄
时间:
2014-9-5 18:22
new运算了了,在内存上创建string对象,并将其返回给s,又一个对象,共两个对象
作者:
bullfrog
时间:
2014-9-5 19:06
liaorubei 发表于 2014-9-5 16:08
String a1="java";
String a2="java";
a1==a2;//结果为true,其实a1和a2是同一个数据
那么这两个在堆中的String对象,是各保存一份"java"的值呢?还是保存的同一个对常量池中"java"的引用呢?
作者:
简一
时间:
2014-9-5 19:40
创建的对象应该是两个,
String s = new String("xyz");
String类比较特殊 会先在常量池里查看 如果有"xyz" 就不会再创建 而你的代码明显是没有,所以是会创建一个,
然后new 就要在堆内存中创建一个对象, 但是是常量池中的"xyz"创建的副本
String 类包括的方法可用于检查序列的单个字符、比较字符串、搜索字符串、提取子字符串、
创建字符串副本
并将所有字符全部转换为大写或小写
String(String original)
初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列;换句话说,新创建的字符串是该参数字符串的副本。
所以是两个
作者:
liaohongjie
时间:
2014-9-5 20:56
本帖最后由 liaohongjie 于 2014-9-5 20:59 编辑
一个对象啊,“xyz”只是传递给构造函数的,String构造方法String(String value),字符串参数指定字符串的内容
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2