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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

String s1 = "ab"; String s3 = s1 + "c";创建了几个对象??为啥?

6 个回复

倒序浏览
本帖最后由 iamsellen 于 2016-3-21 16:55 编辑

java编译期间会对其进行优化,优化后的结果就是  String s3=“abc”;
所以最后只有一个String对象。
回复 使用道具 举报
iamsellen 发表于 2016-3-21 04:24
2个对象,分别为s1和s3

大兄弟 2个明显不对啊 最少创造了4个 s1 s2 "c" s1+"c"
回复 使用道具 举报
这是创建对象?我怎么觉得只是在声明字符串变量啊?根本没进堆内存
String s1="ab";      String s3="abc";
回复 使用道具 举报
CangYe 发表于 2016-3-21 14:54
这是创建对象?我怎么觉得只是在声明字符串变量啊?根本没进堆内存
String s1="ab";      String s3="abc"; ...

   
String s1 是声明一个字符串变量。   
= 是赋值。
“abc” 是String对象。
回复 使用道具 举报
3个,S1,S3,“c"也是个字符串对象,但是没有被引用,会被垃圾回收机制回收
回复 使用道具 举报
String s1 = "abc";
--------s1是一个类类型变量, "abc"是一个对象。
--------字符串最大特点:一旦被初始化就不可以被改变。
  String s2 = new String("abc");
  //s1和s2有什么区别?
  //s1在内存中有一个对象。
  //s2在内存中有两个对象。

所以:
String s1 ="ab";     //这里已经有一个对象"ab"了
String s2 = s1+"c";    //这里"c"一个对象,s1+"c"结果是"abc"也是一个对象。
所有一共有创建了三个对象,分别是:"ab","c","abc".

详细可以参考:黑马程序员_毕向东_Java基础视频教程第13天的01-String(概述)。



回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马