再读Think In Java的感受(一)
万物皆对象
【IT168 专稿】(1) 用reference控制对象
java 把一切当作对象,但实际上你操纵的那个标识符是对象的reference,就好比一支部队(对象)和这支部队的指挥部 (reference),我们如何操纵这个部队,很简单只要你去给这个指挥部下命令了。
注:即使没有对象,reference也可以独立存在.例 String s;只是创建了一个字符串类型的reference.如果这时候你往s发送信息,你就会得到一个错误.
Java 对象的标识符,实际上是object reference,所有东西实际是以by value的方式传递的,一句话可以概括为“以by value 的方式传递 object reference”
(2) 你必须创建所有的对象
用new 关键词来完成,new 的意思是:给我创建一个新的那种类型的对象。String s = new String (“abc”);
数据的存放位置通常有:寄存器(处理器里),栈(内存里准确得说是常规内存区),堆(多用途内存区),静态存储(内存),固定存储,非内存存储 primitive类型(char,byte,short,int,long,float,double,boolean)
(3 ) java中的数组
实际上所有的编程语言都是数组(不解)
在java当中当你创建一个数组对象的时候,实际上你是在创建reference的数组,这些reference会自动被初使化为null
注:当你试图使用一个仍为null的reference的时候,就会报错。
作用域 java和c,c ++一样是由{}的位置决定.注:在作用域里定义的变量只能用到这个作用域的结尾.
对象的作用域与primitive类型的变量不同.当你new一个对象后,如:
a 这个reference会在作用域外面消失,但是 a 指向的String类型的对象仍然会占据内存。这时候大家可能会有疑问,java这样做会不会创建好多没有reference指着的无用的对象把内存全部占据呢??...{
String a = new String(“a string”);
}
这个问题大家可以不必担心:因为java有垃圾回收机制:垃圾回收器(gabage collector)它会替你照管这些对象,如果没有reference指着这个对象,那个它就会释放这个对象占据的内存.(very good),这样内存空间有可以重复利用了.
(4 ) 创建新的数据类型
java同样使用了大多数面向对象语言使用的关键词:class
你可以往类里放两种元素: 数据(field又可以称:数据成员)以及方法(method又可以称:成员函数)
数据可以是primitive类型的变量,也可以是对象的reference,注:如果为reference你必须用一种称做构造函数的特殊方法进行初始化.这样才能确保reference连上真实的对象。如果是primitive类型的变量,你可以在定义的时候就对它初始化,如果你没有这样做,java会给类里primitive类型的变量一个初始指(具体参照think in java)
