为什么如下代码会输出"ABCDE"
foo= "ABCDE";
foo.substring(3);
foo.concat("XYZ");
System.out.println(foo); 而这样就输出"DE"
String fo= "ABCDE".substring(3);
fo.concat("XYZ");
System.out.println(fo);
如下又输出"DEXYZ"
String fo= "ABCDE".substring(3).concat("XYZ");
System.out.println(fo);
解决方案 »
- return 语句应该返回什么,这个函数结果该怎么表示
- 一个很有意思的问题,MyEclipse下可以正常运行,命令行中运行报错
- Java程序图形界面的显示问题
- JAVA里怎么解决占位符啊
- 怎样让一个JFrame在屏幕居中显示?
- 关于一个错误信息
- 家好,请问一下要报考系统设计师(高程),应具备那些条件,比如工龄,学历(我是本科毕业,工作一年半)
- java程序怎么变成可以单独执行的文件,不需要java xxx.class.
- qianyuting(钱),关于Java的问题的解答,来领分,再次感谢!!!
- 做程序员还不如去开个店子卖点烟酒零食算了,郁闷,送分,送完为止(3)
- java 中如何实现累死 vs2005中的工具箱效果??!
- 谁有JAVA连数据库的实例给我发个 让我学习下!
String fo= "ABCDE".substring(3);
就有复制给 foconcat 同样的道理!
如果foo=foo.substring(3);foo=foo.concat("XYZ");第一个就对了,第二段程序以此类推。
楼下会有详细解释的,hoho~
当String的方法被调用时,通常会生成很多新的String常量:
如你上面:
foo= "ABCDE";
foo.substring(3); //生成新的String常量: "DE"
foo.concat("XYZ"); //生成新的常量"ABCDEXYZ"
String fo= "ABCDE".substring(3); //生成两个常量“ABCDE”和“DE”
fo.concat("XYZ"); //生成新的常量“DEXYZ”
这下明白了吧?
你改了二。但是打印的是一。(剩下就交给java垃圾收机制)
明白?
为什么如下代码会输出"ABCDE"
foo= "ABCDE"; //不管你怎么操作foo是不会变的!String是恒常类!
foo.substring(3);
foo.concat("XYZ");
System.out.println(foo); 而这样就输出"DE"
String fo= "ABCDE".substring(3); //这里它已经DE了
fo.concat("XYZ");
System.out.println(fo);
如下又输出"DEXYZ"
String fo= "ABCDE".substring(3).concat("XYZ"); //DE+XYZ=DEXYZ
System.out.println(fo);
努力加油!!!