1.每个程序语言都有其独特的数据操作方式,必须关注其型别(type),你实际是直接操作对象,或是通过某种中介形式。而在java中大大简化了,所有事物都被视为对象,但是以操作对象的标识符是“Reference”.
2.Reference与object之外独立存在,你可以拥有某个Reference,却不见得要将它连接至某个对象。
3.String s:这样只会产生一个Reference,不会产生实际的对象,因此此刻将消息传给s,执行时期便发生error.
4.New :可将某个Reference连接到某个新产生的对象中,故new的意思是“请给我一个新对象”。
5.存储数据的位置:registers(CPU),stack(Reference),heap(Object),static storage(RAM),constant storage(ROM),NON-RAM storage(streamed objects/persistent objects).
6.基本型别:如果用new来产生这一类极小极简单的变量会因“new将对象置于heap之上”而效率不高。而是用一种所谓的“automatic”变量(不是Reference)来解决效率问题,置于statck.
7.基本型别有所谓的“外覆类(wrapper class)”。他可以在heap中产生可以代表该基本型别的非原始对象(nonprimitive object)。
character c = new character(“X”);
8.Array: 在C/C++中,array其实就是一块内存而已而已,但容易造成出界,溢出等error,而是java中将保证数组一定会被初始化,而且对数组的访问无法逾越其范围。代价是每个数组得额外多出一点点空间,并在执行期间对其索引值检索。
9.在使用任何Reference之前,必须给他指派对象,如果使用的某个Reference为null,会在执行期发生error。
10. 对象的Scoping(生存空间)
{
String s = new String(“xxxx”);
}
s 这个Reference将在这个Scoping之外消失无踪,但用new来产生的JAVA 对象仍然存在。
11. 回收器(garbage collector)它会逐一检视所有通过new产生的对象,当不再有任何Reference指向他们时,他便会释放这些对象。
12. 数据成员:当是一个object Reference,那就得在其构造函数种为该Reference进行初始化动作,籍以连接某个实际对象。
13. Return: 1.离开这个method, 2,返回值。
14. 某个class除非以new来产生对象,否则并不存在任何实质的对象。产生对象之际,才会为其分配存储空间,其Data和method才可供外界使用。 例如:System.Out.Println( new Data()) 在这个语句执行完毕,产生出来的DATA对象再也不会被使用了,因此garbage collector便会在适当的时机将这个对象所占有的空间收回。
15. 如果自行定义任何一个构造函数(不论有无引数),编译器就不会为你在default构造函数。
16. 以构造函数(constructor)确保初始化的进行。Java中“定义”和“初始化”是一体的,两者不能彼此脱离而独立存在。
17. 当你传递某个object是,实际上传递的是一个Reference,而你把Reference传入函数,Reference仍然会指向原先所指的同一对象。
18. Aliasing(别名):代表的意思是多个Reference被绑定到同一对象。不要在同一范围(SCOPING)中产生一个以上的Reference别名。不过,当你将Reference当作引数,便会自动产生别名,因此被产生出来的局域性的(LOCAL)Reference可以修改外界对象(此对象在method范围之外被产生出来) 注意点 :1) 引数传递过程中会自动产生别名(alias); 2)没有局域网对象(local objects),只有局域性的local Reference; 3)Reference受范围(scoping)的限制,对象则没有;4)对象的寿命从来不是java讨论的议题。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/senmon2004/archive/2006/05/22/750102.aspx
2.Reference与object之外独立存在,你可以拥有某个Reference,却不见得要将它连接至某个对象。
3.String s:这样只会产生一个Reference,不会产生实际的对象,因此此刻将消息传给s,执行时期便发生error.
4.New :可将某个Reference连接到某个新产生的对象中,故new的意思是“请给我一个新对象”。
5.存储数据的位置:registers(CPU),stack(Reference),heap(Object),static storage(RAM),constant storage(ROM),NON-RAM storage(streamed objects/persistent objects).
6.基本型别:如果用new来产生这一类极小极简单的变量会因“new将对象置于heap之上”而效率不高。而是用一种所谓的“automatic”变量(不是Reference)来解决效率问题,置于statck.
7.基本型别有所谓的“外覆类(wrapper class)”。他可以在heap中产生可以代表该基本型别的非原始对象(nonprimitive object)。
character c = new character(“X”);
8.Array: 在C/C++中,array其实就是一块内存而已而已,但容易造成出界,溢出等error,而是java中将保证数组一定会被初始化,而且对数组的访问无法逾越其范围。代价是每个数组得额外多出一点点空间,并在执行期间对其索引值检索。
9.在使用任何Reference之前,必须给他指派对象,如果使用的某个Reference为null,会在执行期发生error。
10. 对象的Scoping(生存空间)
{
String s = new String(“xxxx”);
}
s 这个Reference将在这个Scoping之外消失无踪,但用new来产生的JAVA 对象仍然存在。
11. 回收器(garbage collector)它会逐一检视所有通过new产生的对象,当不再有任何Reference指向他们时,他便会释放这些对象。
12. 数据成员:当是一个object Reference,那就得在其构造函数种为该Reference进行初始化动作,籍以连接某个实际对象。
13. Return: 1.离开这个method, 2,返回值。
14. 某个class除非以new来产生对象,否则并不存在任何实质的对象。产生对象之际,才会为其分配存储空间,其Data和method才可供外界使用。 例如:System.Out.Println( new Data()) 在这个语句执行完毕,产生出来的DATA对象再也不会被使用了,因此garbage collector便会在适当的时机将这个对象所占有的空间收回。
15. 如果自行定义任何一个构造函数(不论有无引数),编译器就不会为你在default构造函数。
16. 以构造函数(constructor)确保初始化的进行。Java中“定义”和“初始化”是一体的,两者不能彼此脱离而独立存在。
17. 当你传递某个object是,实际上传递的是一个Reference,而你把Reference传入函数,Reference仍然会指向原先所指的同一对象。
18. Aliasing(别名):代表的意思是多个Reference被绑定到同一对象。不要在同一范围(SCOPING)中产生一个以上的Reference别名。不过,当你将Reference当作引数,便会自动产生别名,因此被产生出来的局域性的(LOCAL)Reference可以修改外界对象(此对象在method范围之外被产生出来) 注意点 :1) 引数传递过程中会自动产生别名(alias); 2)没有局域网对象(local objects),只有局域性的local Reference; 3)Reference受范围(scoping)的限制,对象则没有;4)对象的寿命从来不是java讨论的议题。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/senmon2004/archive/2006/05/22/750102.aspx