社区
Java SE
帖子详情
String a = new String("b");到底是几个对象?
sunwei_07
2007-12-14 02:16:07
我只知道一个是“b”,一个是引用它的a
为什么有人说这是3个对象呢?
...全文
3657
148
打赏
收藏
String a = new String("b");到底是几个对象?
我只知道一个是“b”,一个是引用它的a 为什么有人说这是3个对象呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
148 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hnthchuan
2011-09-01
打赏
举报
回复
绝对是两个。。。
tyzqqq
2010-05-17
打赏
举报
回复
高人们都笑呢
chendabian
2008-06-26
打赏
举报
回复
小菜鸟 来学习
jiaxinyuck110
2008-06-26
打赏
举报
回复
呵呵什么都要拿事实说话
这个问题只能在2和3之间讨论至于1个基本排除
82楼测试已经明确说明
hemaily
2008-06-26
打赏
举报
回复
我肯定 是两个对象 一个池中的 一个堆中的
jiaxinyuck110
2008-06-26
打赏
举报
回复
[Quote=引用 12 楼 mysticpsvm 的回复:]
String s = "b";
String sg = new String("bb");
[/Quote]
解释下?
难道我以前的理解正好反了
这是我头次碰到这种说法!
jianghao168
2008-06-26
打赏
举报
回复
迷了啊,我对java中的存储方式一点都不了解啊
楼上那么多的讲解让我觉得自己好像不懂编程一样
要学习和了解的东西很多啊!!!
software820830
2008-06-26
打赏
举报
回复
8个,也有可能是十个或二十个,嘿嘿嘿,
zhouxianglh
2008-06-23
打赏
举报
回复
是两个吧? 我找不到第三个对象.
lzx6169936
2008-06-23
打赏
举报
回复
绝对是俩
goosman
2008-06-23
打赏
举报
回复
关于String a = new String("b");到底有几个对象.
说三种也是不错的.
head中一个对象.
stack中一个引用.
datasegement中一个字符串常量.
cryinghawk
2008-06-23
打赏
举报
回复
两个啊!!
绝对两个。。
sd5816690
2008-06-23
打赏
举报
回复
这帖子居然能顶这么高?
看来我还没理解存在于冥冥中JAVA的灵魂
m99801148
2008-06-23
打赏
举报
回复
如果别人有意见 那请问 生成一个String的对象a 并为其赋值"b" 怎么写?
m99801148
2008-06-23
打赏
举报
回复
String a = new String("b");
只有一个对象a
解析
String a 声明一个字符串类String的对象a
new String() 为对象a分配空间
=...("b") 为对象a赋值"b"
生成一个对象需要声明 分配空间 赋值.
这是java生成对象的基本格式
------------------------------------
lyric1812
2008-06-21
打赏
举报
回复
没有必要争执下去了!
only two!!
老话题了
richard_first
2008-06-21
打赏
举报
回复
2个,"b"和new String("b")
wyyl00
2008-06-21
打赏
举报
回复
很明显是俩个嘛。。。
phoenix_dt
2008-06-21
打赏
举报
回复
[Quote=引用 82 楼 java2000_net 的回复:]
同意80楼说法,比较容易理解!
支持2个对象
String a = new String("b");
可以拆分成如下2步操作
String b = "b"; // 创建一个字符串对象 b
String a = new String(b); // 此时,会再次创建一个对象a;
帖一段测试代码和运行结果
public class TestString {
public static void main(String[] args) {
String a = "b";
String b = new String(a);
String c = "b";
System.ou…
[/Quote]
可以理解为a是一个字符串引用它指向String pool中的字符串b;
b是一个字符串引用的对象指向heap里新创建的字符串对象b
这跟创建几个对象有何关系?
phoenix_dt
2008-06-20
打赏
举报
回复
以前都没想过这种问题!我也觉得是2个!!24楼解释的很清楚了!
加载更多回复(126)
String
str = “abc“;和
String
str =
new
String
(“abc“);
到底
分别创建了
几个
对象
?
一、
到底
创建了
几个
对象
1、
String
str = “abc”; 创建了
几个
对象
?0个 或者 1个 2、
String
str =
new
String
(“abc”);创建了
几个
对象
? 1个或2个 二、首先了解
几个
基本的概念: 点击了解 JVM的内存管理 1、
String
是一个特殊的包装类数据。即可以用
String
str =
new
String
(“abc”);的形式来创建,也可以用Stri...
String
a=
new
String
(“aa“) 创建了
几个
对象
?
String
拼接 字符串的拼接分为两种情况: 字面量的拼接 编译器优化,直接视为拼接后的结果 存在变量的拼接 实际调用的是
String
Builder 不在存储在
String
Pool中而是直接在堆中创建新的
String
实例。
String
a=
new
String
(“aa”) 创建了
几个
对象
? 创建了两个,因为
new
在堆空间中创建了一个,并且在字符串常量池中也创建了一个。
new
String
(“a”) +
new
String
(“b”) 创建了
几个
对象
? 创建了六个
对象
第一个
对象
是Str
String
a =
new
String
(“abc”)创建了
几个
对象
String
a =
new
String
(“abc”) 实际上是创建了两个
对象
(假设之前
String
的常量池中没有创建任何
对象
), 一个是“abc”,一个是
new
String
()。 “abc”创建后就会放入常量池中(下次创建
String
对象
时先查找常量池 有需要的就使用, 没有就重新创建并存入常量池),如果常量池中有的话,则就创建了一个
new
的
对象
,每
new
一次就创建一个
对象
。 而
String
a=
new
String
(“abc”)这是在堆里面创建了一个空白
对象
,并将a初始化(如图),在去查找常量池是
String
a=
new
String
("b","c")会创建
几个
对象
?
String
a=
new
String
("b","c")会创建
几个
对象
?
String
a=
new
String
("b"+"c")又会创建
几个
?为什么? 1.
String
a=
new
String
("b"+"c"); b一个 c一个 b+c一个 a一个 总共四个 1、Java中
New
出的
对象
则始终被JVM存放在堆中,创建的字串常量则始
关于
String
a=
new
String
("abc")与
String
a="abc"的各创建了
几个
对象
两种创建方式如下所示:
String
a =
new
String
(“abc”)实际上是创建了两个
对象
(假设之前
String
的常量池中没有创建任何
对象
),一个是“abc”,是
new
String
()。“abc”创建后就会放入常量池中(下次创建
String
对象
时先查找常量池 有需要的就使用, 没有就重新创建并存入常量池),如果常量池中有的话,则就创建了一个
new
的
对象
,每
new
...
Java SE
62,627
社区成员
307,258
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章