- Java code
public String makinStrings() { String s = "Fred"; s = s + "47"; s = s.substring(2, 5); s = s.toUpperCase(); return s.toString(); }
How many String objects will be created when this method is invoked?
请大家详细的给讲解一下~~
我觉得有
s = "Fred",
"47",
s = s+"47"
s = s.substring(2, 5)
s = s.toUpperCase()
5个String Object,不晓得对不对~~
------解决方案--------------------
就是一个对象
java中只有new才创建对象,这里只有一个哈,所有的操作都是指向同一个内存地址的,也就是一个对象
------解决方案--------------------
同意2楼的
------解决方案--------------------
【shuai45】:
对象 本来就是一个比较抽象的东西.
你要问什么是对象 需要自己理解.
希望LZ能看看 java编程思想
【luyang1016】:
java编成思想:一切都是对象。
只要是个东西,他就是一个对象
通俗的来说,一脱大便也是对象
【luckycat】:
什么是对象,关于这个问题看再多的书你也不能理解。等你有了大量的编程经验的时候你就彻底明白了。
Class类和Method类还有Constructor类等等,他们都是一个类。他们当然也会有实例(对象),只不过他们的实例所包含的数据是其他类,其他方法,其他构造函数的信息而已。他们的实例都是要占用内存的。Class类的实例可以这么写,例如String.class,这里的String.class并不是指硬盘上的String.class文件,他就是一个Class类的实例,存在于内存之中。至于他到底是如何存储的,LZ可以参阅Inside JVM这本书,说的很详细。
【njqibin】:
用java的眼光看,万物皆对象。
【CrazyGou】:
对象,就是你的另一半
【lew830715】:
路过
【For_suzhen】:
对象确实很抽象,一个方法也能算一个对象啊.造诣太浅,实在说不明白
【unhappyless_22】:
就算一切都是对象,那这个对象也是实例化来的,既然是实例化来的就应该占用内存,对吧
【zhaochunhui】:
仔细看看 Think in java 第一和第二 章 相信你会找到答案的
【jy19801226】:
对象就是自己的老婆(具体的实例)就是一个具体的对象,她属于女人(一个类),也属于人类(一个类)
------解决方案--------------------
我认为楼主的解释是对的。
s "Fred" "47" "Fred47" "ED47",个人意见。
------解决方案--------------------
java中只有new才创建对象这个是没错,
但是String类型是不可变的,
当它的值发生变化的时候就会从新开辟内存,从新创建对象!
在这段代码中创建了四个String对象,创建了一个引用,
分别指向前四个的内存地址,s.toString(); 并没有改变内存地址!
public String makinStrings()
{
String s = "Fred";
system.out.println();
s = s + "47";
system.out.println(s.hashCode());
s = s.substring(2, 5);
system.out.println(s.hashCode());
s = s.toUpperCase();
system.out.println(s.hashCode());
return s.toString();
}
去打印一下,他们的哈希码绝对不会一样的!证明他们的地址发生了变化!