社区
Java SE
帖子详情
String a = new String("b");到底是几个对象?
sunwei_07
2007-12-14 02:16:07
我只知道一个是“b”,一个是引用它的a
为什么有人说这是3个对象呢?
...全文
3613
148
打赏
收藏
String a = new String("b");到底是几个对象?
我只知道一个是“b”,一个是引用它的a 为什么有人说这是3个对象呢?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
a=
new
String
("b"+"c")会创建
几个
对象
?
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
String
a =
new
String
(“abc“); 创建了
几个
对象
?
String
a = “abc“; 呢?
可以看到
String
类的equals方法**先比较两个
对象
的引用地址,此时运用了 == 的关系运算符。如果两个
对象
的引用地址不同,会比较字符串中的每个字符是否相同,全部相同则返回true,否则返回false。编译器通过语法分析,会将常量表达式计算求值,并用求出的值来替换表达式,而不必等到运行期间再进行运算处理,从而在运行期间节省处理器资源。所以上面的语句在运行期就等同于
String
a = “abcd”;通过之前的
几个
问题可知变量a、b、c的引用地址相同。故a == b和a == c的结果为true。
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 =
new
String
(“abc”) 实际上是创建了两个
对象
(假设之前
String
的常量池中没有创建任何
对象
), 一个是“abc”,一个是
new
String
()。 “abc”创建后就会放入常量池中(下次创建
String
对象
时先查找常量池 有需要的就使用, 没有就重新创建并存入常量池),如果常量池中有的话,则就创建了一个
new
的
对象
,每
new
一次就创建一个
对象
。 而
String
a=
new
String
(“abc”)这是在堆里面创建了一个空白
对象
,并将a初始化(如图),在去查找常量池是
String
s=
new
String
(“a“)
到底
创建了几次
对象
?
1.首先你肯定知道
String
类是不可变的.当jvm看到"a",便在串池中寻找,找不到 jvm会创建一个
对象
,这里创建了一个
对象
,然后
new
是 在内存上创建
string
对象
,并将其返回给s,又一个
对象
,所以一共创建了两个
对象
. 2.那么
String
s=
new
String
("a"+"b");创建了几次
对象
? 当jvm 看到 "a","b"时候 各创建了一次
对象
,"a"+"b"又创建了一个...
Java SE
62,634
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章