永发信息网

String str = new String("hello"); str+="Java";这两句代码共有几个对象?

答案:6  悬赏:40  手机版
解决时间 2021-04-28 22:24
String str = new String("hello"); str+="Java";这两句代码共有几个对象?
最佳答案
5个。
直接量"hello"存在池中。由这个串创建一个新对象(存在堆中),赋给str。这已经两个了。直接量"java"存在池中。三个。
从池中取出"java",再从堆中取出原来的str,即"hello",追加起来成为一个新串"hellojava"(存在池中),然后把这个新串赋值给变量str(存在堆中)。共5个。
freish太有才了。这个算他的。

需要说明的是:第一次出现字符串直接量时会在池中创建一个新的,之后出现就不会创建了,而是直接把引用指向第一次创建的对象。 但对于new出来的对象,无论怎样赋值,new一次创建一次(在堆中),不会考虑之前是否已经已存在相同的。而且,字符串是不可追加的,所以每次使用连接符号其实相当于先产生一个常量,然后再赋给引用,原来指向的串就成垃圾被回收了。
全部回答
我被弄迷糊了
String str = new String("hello");
这句话会在字符串常量池里有一个"hello"的对象。str是new出来的,在堆中也会有一个对象空间,指向hello的引用。
str+="Java";
Java也会在常量池产生一个对象。由于String是不可变长度的,那么同时会在字符串常量池产生helloJava这样一个对象,str引用指向它。
所以一共4个对象
一个,只有在str在实例化以后才在栈里划分内存空间
String str = new String("hello");
实例化对象
str+="Java"重新赋值而已
我不一定对 我说3个
一个 hello 实体对象
一个 str引用对象
还一个 是helloJava 对象 赋值给 str 引用
public class StringTest {
public static void main(String... arguments) {
String str1 = "Java";
System.out.println(str1.intern() == str1);//true,表名str1是常量池的
String str2 = new String("hello");
System.out.println(str2.intern() == str2);//false,表名str2不是常量池的

String str3 = new String("hello") + "Java";
System.out.println(str3.intern() == str3);//false,表明str3不是常量池的,也说明编译的时候没有将“hello”和“Java”相连

String str4 = "hello" + "Java";
System.out.println(str4.intern() == str4);//true,表明str4是常量池的,也从侧面表明在编译的时候已经做了相加的操作了
}
}
综上
LZ的例子中会有5个对象,因为是new String("hello"),所以这个不是常量,而“Java”是常量
首先,“hello”在堆和常量池各一个
其次,“Java”在常量池有一个
最后,“helloJava”在堆和常量池各一个
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
货源自动找上门可信不可信?
嘉善到慈溪乌山站怎么走?
微信怎么改绑定手机号,怎样把微信绑定的手机
网上买东西被骗了怎么办?跪求解决方法。
为什么河南的简称是豫、湖北的简称是鄂、
福州的诺基亚5230要多少钱?还送的有什么东西
09年10月30日,真三国无双Ol电信四区,R3哪种
胆子咋泡妞阿,各位给我想个招
【请问沈阳皇姑哪有空手道道场】
南塘秋荷地址在哪,我要去那里办事
斯琴塔娜艺术博物馆在什么地方啊,我要过去处
移动发短信到10086除了11,18,1581,1681,1
帮我查查这个号是哪里的?
未成年少女怀孕有什么危害?
我忘记手机型怎么办
推荐资讯
有没有像天煞online的网络游戏。简单点的的网
如何在QQ上查找添加好友与被添加的记录
推荐几部悦读记的小说吧!要言情的!谢谢哈!
上排长智齿为什么下排的牙龈肿痛
寻界首舒庄小兰姓朱,30岁左右,谁知道?
团结友善名言警句,团结友善,不侮辱他人的名言
为什么在浙江金华七夕要吃鸡啊T.T
W7玩不起穿越火线弹出窗口
谁知道 方正财税5代200 报价是多少?
QQ农场升8级送的房子在那里可以找到?
电影频道创建于哪一年?
苍天游戏什么时候开始的啊?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?