技术开发 频道

再读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一个对象后,如:

{ String a = new String(“a string”); }
    a 这个reference会在作用域外面消失,但是 a 指向的String类型的对象仍然会占据内存。这时候大家可能会有疑问,java这样做会不会创建好多没有reference指着的无用的对象把内存全部占据呢??
这个问题大家可以不必担心:因为java有垃圾回收机制:垃圾回收器(gabage collector)它会替你照管这些对象,如果没有reference指着这个对象,那个它就会释放这个对象占据的内存.(very good),这样内存空间有可以重复利用了.

    (4 ) 创建新的数据类型 
    java同样使用了大多数面向对象语言使用的关键词:class
    你可以往类里放两种元素: 数据(field又可以称:数据成员)以及方法(method又可以称:成员函数)
    数据可以是primitive类型的变量,也可以是对象的reference,注:如果为reference你必须用一种称做构造函数的特殊方法进行初始化.这样才能确保reference连上真实的对象。如果是primitive类型的变量,你可以在定义的时候就对它初始化,如果你没有这样做,java会给类里primitive类型的变量一个初始指(具体参照think in java)
0
相关文章