junhong

Thinking in java review

1、  Java  中所有的 member function 都是动态绑定

2、  Java 中所有的对象都是通过 new 来动态产生

3、  所有的容器 (collection) Object array( 对象数组 e.g String []str=new String[10]) 内都包含都是对象的 reference

4、  java 中, java 编译器有责任产生“将 stack 指针前后移动“的程序代码,所以 它必须能够完全掌握它所编译的的程序中“存在 stack 里头的所有数据的实际大小和存活时间“, 如此一来便会限制程序的弹性。 由于这个限制,尽管我们可以将对象的 reference 存储与 stack 内,但却不能将一般的 java 对象放在 stack
特例:( primitive types
基本型别会经常被使用,如果使用 new 来产生此类极小,极简单的变量,会因“ new 将对象置于 heap 之上“ 而效率不好。因此对于此类变量 java 采取 c/c++ 的方式,也就是不用 new 分配器空间,而是产生一种所谓的 ”automatic “变量,存于 static

5、  当你产生某个存储对象的数组,真正产生的是个存储 reference 的数组。此数组建立之后,其中的每一个 reference 都会被自动设为某个特殊的值 null,

6、  { String s=new String(“ddd”);} s 这个 reference 会在生存空间之外消失无踪,但是, s 先前所指的那个 String 对象仍然会继续占用内存

7、  Class 内的基本型别变量都有初值,但是在函数内的 local variable 是没有初值的

8、  Java 中,所有传递的对象的场合,传递的都是对象的 reference.

9、  Return 说明这个函数运行结束,返回到其调用函数。 Return 2 :返回一个数 2 给调用者,同时结束本函数的运行。

10、              Class 内的 non-static data(state) method , 都是和特定的对象绑定的,一般情况下,你的产生某个对象,再通过该对象取用其数据和函数。所以 non-static 数据 / 函数必须知道他们隶属于哪一个对象,才有办法运行 .static 函数内不能使用 non-static 数据和函数

11、              (object1= = object2 ) 两个对象的 reference = = 比较得是两个对象的内存的地址。所以我们不能使用 = = 来测试两个对象的内容是否相等。如果想测试对象的内容是否相等,应该使用 equal(), 任何一个对象都拥有这个函数。不过你自己的 class 需要 override 这个函数,否则默认的 equal() 函数是还是比较的两个对象的内存地址。
Java
标准程序库中的大多数 class override equal(), 所以他们都会比较对象的内容是否相等。

12、              位运算符都是作用于基本正数类型。该运算符主要是针对硬件编程使用(我们用得不多,)

待续

 

 

posted on 2006-06-27 17:40 junhong 阅读(1794) 评论(0)  编辑  收藏 所属分类: java技术


只有注册用户登录后才能发表评论。


网站导航: