首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

毕竟调用时涉及了几个Object

2011-12-22 
到底调用时涉及了几个Object?Java code11. public String makinStrings() {12. String s “Fred”13. s

到底调用时涉及了几个Object?

Java code
11. public String makinStrings() {12. String s = “Fred”;13. s = s + “47”;14. s = s.substring(2, 5);15. s = s.toUpperCase();16. return s.toString();17. }How many String objects will be created when this method is invoked?A. 1B. 2C. 3D. 4E. 5F. 6//我觉得是5个。。 不同意见的顶上


[解决办法]
涉及的三个对象是 "Fred47", "ed4" ,"ED4" 

String s = “Fred”; //在字符串池中创建对象“Fred”
s = s + “47”; //不产生新对象,string + 基本类型,是当成常量表达式直接求值来优化的,第一个对象变成“Fred47”。
s = s.substring(2, 5); //创建对象“ed4”
s = s.toUpperCase(); //创建对象“ED4”
return s.toString();

参考:
http://java.ccidnet.com/art/3539/20070912/1210357_1.html



[解决办法]
Java code
String s = “Fred”;     //对象"Fred",别说字符串常量不是对象...Java基本类型里可没有String型..."Fred"是有完整方法和属性的对象s = s + “47”;          //对象"47",以及对象"Fred47",字符串间接相加Java编译是不会优化的,同直接"Fred"+"47"不同...s = s.substring(2, 5); //对象"ed4"s = s.toUpperCase();   //对象"ED4"return s.toString();   //s返回它自己,前面s的指向一共改变了4次,涉及5个对象 

热点排行