日积跬步03

控制程序流程:“就象任何有感知的生物一样,程序必须能操纵自己的世界,在执行过程中作出判断与选择”

   java是建立在C++基础之上的,所有大部分语句和运算符都继承下来,但java做过改进与简化工作。

   1.运算符根据自己的运算对象生成一个值,也可改变运算对象的值(“副作用”,side effect)。几乎所有运算符都只操作“主类型”,除了“=” “==” 和“!=”,可以操作所有对象。

   2.对主类型赋值,由于主类型表示实际值,其赋值就是实际值的复制;对象的“赋值”,实际就是句柄从一个地方复制到另一个地方。

   3.一元运算符是唯一具有“副作用”的运算符;

   4.关系运算符中,equals()的默认行为是比较句柄,除非在自己的类中重新定义了equals()的行为。

   5.Java不同于C/C++,不能将一个非布尔值当作布尔值在逻辑表达式中使用;

   6.逻辑运算的“短路”原理,类似C/C++;

   7.逗号运算符,Java中唯一用到逗号的场所是for循环;

   8.C++中引入了运算符过载机制,但java程序狗不能像C++程序员那样设计自己的过载运算符,虽然java更易实现,但这种特性过于复杂;

   9.Java允许将任何基本类型“造型”为其他任何一种类型(“造型”,等价于C/C++中的“强制类型转换”),但布尔值除外;

  10.C/C++ 中sizeof()运算符:获取数据类型所分配得到的字符数量;sizeof()运算符常应用于“移植”。而Java本身的平台无关性,不需要这个运算符;

===========================================================================================

 初始化和清除 :“随着计算机的进步,‘不安全’的程序设计已成为造成编程代价高昂的罪魁祸首之一。”

   1.方法过载:构建器是方法过载的特殊应用,方法过载也可应用于其他任何类方法;

           区分过载方法的规则:每个过载方法采用独一无二的自变量类型;

           关键字this只能应用于那些特殊的类——需要明确使用当前对象的句柄,即将句柄返回给当前对象;

   2.对象的创建过程(以类型Dog为例):

      (1)类型为Dog的对象首次创建时,或者Dog类型的static方法/static字段首次访问时,Java解释器在路径下找到Class Dog;

      (2)找到Class Dog后(解释器会创建一个Class对象),同时Dog 类型的所有static初始化模块会运行。因此,static初始化仅发生一次——在Class对象首次载入的时候;

   (3)接着上一步中的创建一个new Dog()时,Dog对象的构建进程会在内存堆(Heap)里为每一个Dog对象分配足够多的存储空间;(注意这里可能会创建多个Dog对象);

   (4)上一步中的存储空间会清零,即将Dog中的所有基本类型设置为默认值;

   (5)进行字段定义时发生的所有初始化都会执行;(注意这里主要是指非static定义的初始化)

       (6)执行构建器。

       初始化的顺序:首先是static(前提是尚未被前一次对象创建过程初始化),然后非static对象;参照圣经《Thinking in Java》该部分的例子代码StaticInitialization.java 可以更好地理解上述初始化过程;

 3.数组初始化:int[] a1 = { 1, 2, 3, 4, 5 };

 

 

   

 

posted @ 2016-10-27 16:26  A.ArmStrong  阅读(132)  评论(0编辑  收藏  举报