A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 风雪边城   /  2016-4-27 20:54  /  11770 人查看  /  57 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String s1 = "abc";建立第一个对象....String s2 = s1 + "c"中,s1已存在,c为一个对象  ,s2为一个对象,总共是3个对象.多看看堆栈,静态区等方面的数据结构  就会了
回复 使用道具 举报
两个对象,一个在方法区常量池s1,一个在堆内存中s2
回复 使用道具 举报
两个对象,“abc”和 “abcc”,都在常量池中,s1指向“abc”,s2指向“abcc”
回复 使用道具 举报
两个对象,“abc”和 “abcc”,都在常量池中,s1指向“abc”,s2指向“abcc”
回复 使用道具 举报
两个对象,“abc”和 “abcc”,都在常量池中,s1指向“abc”,s2指向“abcc”
回复 使用道具 举报
两个对象,均 s2  和  后面的s1   前面的s1是常量池的地址值,和后面的s1是不相同的
回复 使用道具 举报
两个对象,均 s2  和  后面的s1   前面的s1是常量池的地址值,和后面的s1是不相同的
回复 使用道具 举报
几个变量几个对象
回复 使用道具 举报
4个,4,4,4
回复 使用道具 举报
两个对象啊
回复 使用道具 举报
两个,常量池中存储。
回复 使用道具 举报
两个对象啊    这个字符串拼接的+号   在底层是  StringBulider    通过append方法拼接的
回复 使用道具 举报
两个对象 在常量池创建"abc"
回复 使用道具 举报
2个,一个是“abc”,一个是 “abcc”。如果你再加一句println(s1 + s2)就是3个了。
回复 使用道具 举报
楼主,你好。
你给出的题目是:String s1 = "abc";String s2 = s1 + "c";
现在为您分析该题目:
分号代表语句的结束,首先我们看第一句代码,String s1 = "abc";等号左边声明了一个字符串变量s1.因为是赋值语句,所以这句代码是意思是将字符串abc赋值给变量s1."abc"是一个字符串,cpu会先看常量区是否已经存在字符串常量"abc",如果已经存在,则不创建,直接把地址传给变量s1,s1指向该字符串。如果常量区中找不到该字符串"abc",那么会在常量区中创建该字符串,然后再把地址传给变量s1,让s1变量指向它。(这里有可能不创建对象,有可能创建一个。)
第二句:String s2 = s1 + "c";同理,先在常量区查找是否已经存在字符串常量"c",如果有,则不创建,如果没有,则创建。(这里有可能不创建对象,有可能创建一个)。然后将s1与“c”的值相加,相加后的结果又会创建一个在常量区创建字符串对象。
所以,综上所述:建立的对象是:最少一个,最多三个。
纯手打的,满意请采纳,谢谢!
回复 使用道具 举报
2个对象,s1和 s2
回复 使用道具 举报
“abc”是一个对象,“c”是一个对象是
回复 使用道具 举报
两个对象。
字符串的对象池,一个是"abc"。一个是"abcc"
回复 使用道具 举报
123
您需要登录后才可以回帖 登录 | 加入黑马