社区
Java
帖子详情
很简单的OOP问题:String s1=new String("abc");创建了几个对象
空心兜兜
2010-06-03 12:51:55
和某人争论了一晚上编程的东西,爽!
(某人就是坐沙发那个)
我们都是初学者,毕业不到一年,专心学编程实践就更短了
最后的问题:
String s1=new String("abc");
我认为是创建了两个对象,但是我确实不懂该怎么表达
请大家讲讲原理
...全文
276
15
打赏
收藏
很简单的OOP问题:String s1=new String("abc");创建了几个对象
和某人争论了一晚上编程的东西,爽! (某人就是坐沙发那个) 我们都是初学者,毕业不到一年,专心学编程实践就更短了 最后的问题: String s1=new String("abc"); 我认为是创建了两个对象,但是我确实不懂该怎么表达 请大家讲讲原理
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xx314327475
2010-06-03
打赏
举报
回复
[Quote=引用 5 楼 bao110908 的回复:]
Google 搜索:
new String 对象 site:csdn.net
可以搜出 CSDN 中一堆关于这个的帖子。
[/Quote]
还有其他几个问题 帮咱答了呗
xx314327475
2010-06-03
打赏
举报
回复
[Quote=引用 3 楼 bao110908 的回复:]
CSDN Java 版的超级月经帖又来了,呵呵!!!
[/Quote]
还有人和我们一样未眠啊
火龙果被占用了
2010-06-03
打赏
举报
回复
Google 搜索:
new String 对象 site:csdn.net
可以搜出 CSDN 中一堆关于这个的帖子。
xx314327475
2010-06-03
打赏
举报
回复
是Student s1 = new Student();
创建了几个对象好不好,真狡诈……
顺便问下String s1 = new String("abc");和String s1 = "abc";有什么不同?
期待高手启蒙折翅的菜鸟们……
火龙果被占用了
2010-06-03
打赏
举报
回复
CSDN Java 版的超级月经帖又来了,呵呵!!!
空心兜兜
2010-06-03
打赏
举报
回复
Student s1 = new Student();
这又是几个?
xx314327475
2010-06-03
打赏
举报
回复
迷途中小小书童
2010-06-03
打赏
举报
回复
一个在字符串池,一个在堆。
楼主的logo好特别,有意思。
soli11722984
2010-06-03
打赏
举报
回复
月经帖,偶直接围观。。。。。。因为太多了,随便一搜都出来了
孤独剑客
2010-06-03
打赏
举报
回复
又来了, 真纠结!
空心兜兜
2010-06-03
打赏
举报
回复
那么Student s1 = new Student();
这个呢?
Mars_Ma_OK
2010-06-03
打赏
举报
回复
引用:
你知道在java中除了8中基本类型外,其他的都是类对象以及其引用。所以 "abc "在java中它是一个String对象.对于string类对象来说他的对象值是不能修改的,也就是具有不变性。
看:
String s= "Hello ";
s= "Java ";
String s1= "Hello ";
String s2=new String( "Hello ");
啊,s所引用的string对象不是被修改了吗?之前所说的不变性,去那里了啊?
你别着急,让我告诉你说发生了什么事情:
在jvm的工作过程中,会创建一片的内存空间专门存入string对象。我们把这片内存空间叫做string池。
String s= "Hello ";当jvm看到 "Hello ",在string池创建string对象存储它,并将他的引用返回给s。
s= "Java ",当jvm看到 "Java ",在string池创建新的string对象存储它,再把新建的string对象的引用返回给s。而原先的 "Hello "仍然在string池内。没有消失,他是不能被修改的。
所以我们仅仅是改变了s的引用,而没有改变他所引用的对象,因为string对象的值是不能被修改的。
String s1= "Hello ";jvm首先在string池内里面看找不找到字符串 "Hello ",找到,返回他的引用给s1,否则,创建新的string对象,放到string池里。这里由于s= "Hello "了,对象已经被引用,所以依据规则s和s1都是引用同一个对象。所以 s==s1将返回true。(==,对于非基本类型,是比较两引用是否引用内存中的同一个对象)
String s2=String( "Hello ");jvm首先在string池内里面看找不找到字符串 "Hello ",找到,不做任何事情,否则,创建新的string对象,放到string池里面。由于遇到了new,还会在内存上(不是string池里面)创建string对象存储 "Hello ",并将内存上的(不是string池内的)string对象返回给s2。所以s==s2将返回false,不是引用同一个对象。
好现在我们看题目:
String s = new String( "abc ");
首先在string池内找,找到?不创建string对象,否则创建, 这样就一个string对象
遇到new运算符号了,在内存上创建string对象,并将其返回给s,又一个对象
所以总共是2个对象
Mars_Ma_OK
2010-06-03
打赏
举报
回复
Mars_Ma_OK
2010-06-03
打赏
举报
回复
xx314327475
2010-06-03
打赏
举报
回复
[Quote=引用 5 楼 bao110908 的回复:]
Google 搜索:
new String 对象 site:csdn.net
可以搜出 CSDN 中一堆关于这个的帖子。
[/Quote]
果然
JavaSE基础视频精讲⑫:
String
,
String
Builder和
String
Buffer
本课程适用于零基础小白快速入门Java语言技术,通过课程学习可以清晰了解Java
String
,
String
Builder和
String
Buffer。课程配套完整的(笔记+代码+作业)
String
s1
=
new
String
(“
abc
“);这句话
创建
了
几个
对象
?
String
s1
=
new
String
(“
abc
”);这句话
创建
了
几个
对象
?
创建
了两个
对象
。 验证:
String
s1
=
new
String
("
abc
");// 堆内存的地址值
String
s2 = "
abc
"; System.out.println(
s1
== s2);// 输出false,因为一个是堆内存,一个是常量池的内存,故两 者是不同的。 System.out.println(
s1
.equals(s2));// 输出true 结果: false true 解释: 先有字符
经典
问题
:
String
s1
= "
abc
" 与
String
s2 =
new
String
("
abc
")的区别
这是以前刚学Java那会经常被问到的
问题
,并且也会经常出现在面试中。这个
问题
不仅仅只局限于Java,可以适用于其他大部分语言,正好最近有个小朋友在学编程,特此整理一下。
String
s1
= "
abc
" ;
String
s2 =
new
String
("
abc
"); 首先,我们先看看以上两句分别做了什么?
String
s1
= “
abc
” 做了什么 在栈中
创建
了一个名为
s1
的变量...
java
s1
=
abc
s2=
abc
s1
==s2_经典
问题
:
String
s1
= "
abc
" 与
String
s2 =
new
String
("
abc
")的区别...
这是以前刚学Java那会经常被问到的
问题
,并且也会经常出现在面试中。这个
问题
不仅仅只局限于Java,可以适用于其他大部分语言,正好最近有个小朋友在学编程,特此整理一下。
String
s1
= "
abc
" ;
String
s2 =
new
String
("
abc
");首先,我们先看看以上两句分别做了什么?
String
s1
= "
abc
" 做了什么在栈中
创建
了一个名为
s1
的变量(引用)如果 ...
String
s1
=
new
String
("
abc
");这句话
创建
了
几个
对象
?
创建
了两个
对象
: 常量池中有一个
对象
,在堆内存中也有一个
对象
,是复制过去的。
s1
的地址指向的是堆内存的地址。 可以看以下例子:
String
s1
=
new
String
("
abc
");//堆内存的地值值
string
s2 = "
abc
"; System.out.println(
s1
==s2); System.out.println(
s1
.equals(s2)); 输出的结果是
Java
50,528
社区成员
85,607
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章