每次都做的晕晕乎乎的字符串题:下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d";

tiancaixuchao2009 2013-08-22 08:57:06
下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d";
...全文
1103 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
不懂你的幽默 2015-07-12
  • 打赏
  • 举报
回复
引用 3 楼 lishikai500 的回复:
String s="a"+"b"+"c"+"d"; 我只是猜测 s 是一个 “a” “b” “c” “d” 各一个 “abcd” 是一个 也就是6个
扯谈,不同jvm是不同的,有的因为编译器优化是一个对象,跟s=”abcd"是一样的,有的是7个,分别是,a,b,c,d,ab,abc,abcd
wsadqx 2013-08-29
  • 打赏
  • 举报
回复
4楼正确…楼主可以看字符串创建的一些知识…
流氓T-T兔 2013-08-28
  • 打赏
  • 举报
回复
编译后为String s = "abcd" 现在jvm学聪明了,在编译时就能确定的变量,编译后会直接替换成最终结果。
lcf 2013-08-28
  • 打赏
  • 举报
回复
引用 11 楼 owen1759 的回复:
月经帖 String s="a"+"b"+"c"+"d"; 编译后的代码为: String s=new StringBuilder("a").append("b").append("c").append("d").toString() 拥有常量String类匿名对象"a"、"b"、"c"、"d"四个 拥有变量String类对象s和变量StringBuilder类匿名对象,共计2个
编译后为String s = "abcd"; 不服来战
赏金--猎人 2013-08-28
  • 打赏
  • 举报
回复
11楼说的对
livend 2013-08-28
  • 打赏
  • 举报
回复
管他几个,知道那么回事就可以了,没事闲的慌
绝对在乎妮 2013-08-27
  • 打赏
  • 举报
回复
======================8个
LI597494570 2013-08-26
  • 打赏
  • 举报
回复
总结 楼上 发言: a:1个; b:2ge; c:4个;d:跟JVM有关 晕 到底是什么?
无间虚者 2013-08-23
  • 打赏
  • 举报
回复
引用 7 楼 w215230188 的回复:
[quote=引用 3 楼 lishikai500 的回复:] String s="a"+"b"+"c"+"d"; 我只是猜测 s 是一个 “a” “b” “c” “d” 各一个 “abcd” 是一个 也就是6个
不是4个吗,关S什么事 s只不过是一个变量名而已[/quote] ++
owen1759 2013-08-23
  • 打赏
  • 举报
回复
月经帖 String s="a"+"b"+"c"+"d"; 编译后的代码为: String s=new StringBuilder("a").append("b").append("c").append("d").toString() 拥有常量String类匿名对象"a"、"b"、"c"、"d"四个 拥有变量String类对象s和变量StringBuilder类匿名对象,共计2个
lcf 2013-08-23
  • 打赏
  • 举报
回复
这个问题,你只要回答“取决于编译器”,面试官一定会大为赏识将你录取
hippoppower 2013-08-23
  • 打赏
  • 举报
回复
一个 静态区的abcd
傲骨的小丑 2013-08-23
  • 打赏
  • 举报
回复
只有四个~这几个字母都是在字符串池里被创建,跟堆没有关系。。。。 a,ab,abc,abcd
小飞牛coder 2013-08-23
  • 打赏
  • 举报
回复
引用 7 楼 w215230188 的回复:
[quote=引用 3 楼 lishikai500 的回复:] String s="a"+"b"+"c"+"d"; 我只是猜测 s 是一个 “a” “b” “c” “d” 各一个 “abcd” 是一个 也就是6个
不是4个吗,关S什么事 s只不过是一个变量名而已[/quote]
引用 7 楼 w215230188 的回复:
[quote=引用 3 楼 lishikai500 的回复:] String s="a"+"b"+"c"+"d"; 我只是猜测 s 是一个 “a” “b” “c” “d” 各一个 “abcd” 是一个 也就是6个
不是4个吗,关S什么事 s只不过是一个变量名而已[/quote] 我也觉得是6个
yao442000 2013-08-23
  • 打赏
  • 举报
回复
一个,李刚的突破程序猿基本功的16课有讲
land是 2013-08-23
  • 打赏
  • 举报
回复
走过路过学习一下
失落夏天 2013-08-23
  • 打赏
  • 举报
回复
这题都做烂了,换道把。 网上一搜太多了。 最经典的那个解释就是本论坛 老紫竹 写的。。。
harrisonkao 2013-08-23
  • 打赏
  • 举报
回复
两个,麽的其他的,只有常量池中的'abcd' 和内存中的new String (abcd)对象
fedori 2013-08-23
  • 打赏
  • 举报
回复
引用 5 楼 beowulf2005 的回复:
这种扯谈的题,一再出现。唉。 这个String数量跟JVM 相关。 不同版本的JVM实现,数量会不一样的。
蛋早扯没了,只有扯毛了
jzq114 2013-08-23
  • 打赏
  • 举报
回复
只创建了一个对象,因为虚拟机会在编译期间对字符串进行去加号优化,而不是在运行期进行加法运算把字符串连接起来,所以最终只创建了一个对象abcd
加载更多回复(8)

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧