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、
位运算符都是作用于基本正数类型。该运算符主要是针对硬件编程使用(我们用得不多,)
待续