`

第五章 初始化与清理

阅读更多
2013年6月15日 星期六 16时30分20秒


5.1 用构造器确保初始化
      public class Rock {

                public Rock() {
                        super();
                }

        }

5.2 方法重载
        5.2.1 区分重载方法
                通过参数类型来区分

        5.2.2 设计基本类型的重载
                如果传入的实际参数类型较大,就得通过类型转换来执行窄化转换。
                如果传入的数据类型(实际参数类型)小于方法中声明的形式参数类型,实际数据类型就会被提升。
       
        5.2.3 以返回值区分重载方法
                根据返回值来区分重载方法是行不通的。

5.3 默认构造器
        如果已经定义了一个构造器,编译器就不会帮你自动创建默认构造器了。

5.4 this关键字
        5.4.1 在构造器中调用构造器
       
        5.4.2 static含义
5.5 清理,终结处理和垃圾回收
        5.5.1 垃圾回收只与内存有关
        5.5.2 你必须实施清理
        5.5.3 终结条件
        5.5.4 垃圾回收器如何工作
                垃圾回收器的原理分类: 1.引用计数
                        “标记--扫清”,“停止--复制”
                JIT(Java In Time )“即时”编译技术
                Lazy evaluation 惰性评估
                Java HotSpot技术
5.6 成员初始化
        5.6.1 指定初始化

5.7 构造初始化
        5.7.1 初始化顺序
        5.7.2 静态数据的初始化
        5.7.3 显式的静态初始化 (静态子句 或 静态块)
                        public class Spoon {
                        static int i;
                        static int a;
                        static{
                                i=47;
                                a=56;
                        }
                     }
        5.7.4 非静态实例初始化
               
5.8 数组初始化
                        class other{
                        public static void main(String[] args){
                                for(String s:args){
                                System.out.print(s+" ");
                                }
                        }
                     }

                     public class DynamicArray {
                        public static void main(String[] args){
                        other.main(new String[]{"a","b","c"});
                        }
                     }

        5.8.1 可变参数列表
                        package chapter5;

                     class A{}

                     public class VarArg {
                        //before SE5
                        /*static void printArry(Object[] args){
                          for(Object b:args){
                          System.out.print(b+" ");
                        }
                        System.out.println();       
                       }*/
       
                        //after SE5
                       static void printArry(Object... args){
                        for(Object b:args){
                                System.out.print(b+" ");
                        }
                        System.out.println();       
                        }
       
                        public static void main(String[] args){
                        //VarArg.printArry(new String[]{"one","two","three"});
                        //VarArg.printArry(new Object[]{new A(),new A(),new A()});
                        VarArg.printArry("one","two","three");
                        }
                }
       
5.9 枚举类型
        枚举和switch的结合使用
       package chapter5;
        public class SimpleEnum {
        public enum Spiciness{
                NOT,MILD,MEDIUM,HOT,FLAMING
        }
       
        Spiciness degree;
        public SimpleEnum(Spiciness degree){
                this.degree=degree;
        }

        public void describe(){
                System.out.println("This SimpleEnum is ");
                switch(degree){
                case NOT: System.out.println("This SimpleEnum is "+degree);break;
                case MILD: System.out.println("This SimpleEnum is "+degree);break;
                case MEDIUM: System.out.println("This SimpleEnum is "+degree);break;
                case HOT: System.out.println("This SimpleEnum is "+degree);break;
                case FLAMING: System.out.println("This SimpleEnum is "+degree);break;
                default: System.out.println("This SimpleEnum is default");
                }
        }
       
        public static void main(String[] args){
                Spiciness Hot=Spiciness.HOT;
                /*System.out.print(Hot);
                for(Spiciness s: Spiciness.values()){
                        System.out.println(s+" "+s.ordinal());
                }*/
                SimpleEnum s= new SimpleEnum(Spiciness.HOT),
                                   s1=new SimpleEnum(Spiciness.MEDIUM),
                                   s3=new SimpleEnum(Spiciness.FLAMING);
                s.describe();
                s1.describe();
                s3.describe();
               
        }
       
        }

5.10 总结
分享到:
评论

相关推荐

    编程思想下篇

    第5章 初始化与清理 5.1 用构造器确保初始化 5.2 方法重载 5.2.1 区分重载方法 5.2.2 涉及基本类型的重载 5.2.3 以返回值区分重载方法 5.3 缺省构造器 5.4 this关键字 5.4.1 在构造器中调用构造器 5.4.2 static的...

    Thinking in java4(中文高清版)-java的'圣经'

    4.4 Foreach语法 4.5 return 4.6 break和 continue 4.7 臭名昭著的“goto” 4.8 switch 4.9 总结 第5章 初始化与清理 5.1 用构造器确保初始化 5.2 方法重载 5.2.1 区分重载方法 5.2.2 涉及基本类型的重载 5.2.3 以...

    java基础补足和thinking In Java学习.rar

    第五章 初始化与清理 5.1 用构造器确保初始化 1.构造器命名必须与类名相同 2.构造器也是方法,满足方法的各种特征,无参数的构造器称为默认构造器,默认构造方法或者无参构造器。在没有其他构造方法的时候可以...

    thinkinjava源码-Thinking-in-Java:ThinkingInJava源代码和练习题

    初始化与清理(18年6月) 第6章 访问权限控制(18年6月) 第7章 复用类(18年6月) 第8章 多态(18年7月) 第9章 接口(18年10月) 第10章 内部类 第11章 持有对象 第12章 通过异常处理错误 第13章 字符串 第14章 类型信息 第...

    [Objective-c程序设计].杨正洪等.扫描版

    第5章 复合58 5.1 什么是复合58 5.1.1 Car程序58 5.1.2 自定义NSLog()59 5.2 存取方法62 5.2.1 设置发动机的属性64 5.2.2 设置轮胎的属性64 5.2.3 跟踪汽车的变化66 5.3 扩展CarParts程序67 5.4 复合还是继承68 5.5 ...

    informix 实用大全

    第5章 informix sql的独特特性 5.1 informix sql及其特性 5.2 遵循ansi sql标准 5.3 informix数据类型 5.4 更多信息 5.5 informix和其他参考资料 第6章 取得数据:界面 6.1 为什么要dbaccess与isql ...

    Visual C++ 6.0.rar

    第5章 创建Windows应用程序 5.1 创建Windows应用程序的方法 5.2 用AppWizard创建应用程序框架 5.2.1 准备工作 5.2.2 生成应用程序框架 5.2.3 应用程序的编译.链接与运行 5.3 浏览新项目 5.3.1 新项目的目录...

    寒江独钓-Windows内核安全编程(高清完整版).part4

    第5章 磁盘的虚拟 100 5.1 虚拟的磁盘 101 5.2 一个具体的例子 101 5.3 入口函数 102 5.3.1 入口函数的定义 102 5.3.2 Ramdisk驱动的入口函数 103 5.4 EvtDriverDeviceAdd函数 104 5.4.1 EvtDriverDeviceAdd的定义 ...

    DIRECTX.9.0.3D游戏开发编程基础.pdf

    第5章 光照 5.1 光照的组成 5.2 材质 5.3 顶点法线 5.4 光源 5.5 例程:光照 5.6 一些附加例程 5.7 小结 第6章 纹理映射 6.1 纹理坐标 6.2 创建并启用纹理 6.3 纹理过滤器 6.4 多级渐进纹理 6.4.1 多级...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

    第5章 对象-关系映射基础  5.1 持久化类的属性及访问方法  5.1.1 基本类型属性和包装类型属性  5.1.2 Hibernate访问持久化类属性的策略  5.1.3 在持久化类的访问方法中加入程序逻辑  5.1.4 设置派生属性  ...

    Windows内核安全与驱动开发光盘源码

    第5章 应用与内核通信 67 5.1 内核方面的编程 68 5.1.1 生成控制设备 68 5.1.2 控制设备的名字和符号链接 70 5.1.3 控制设备的删除 71 5.1.4 分发函数 72 5.1.5 请求的处理 73 5.2 应用方面的编程 74 5.2.1 ...

    C++编程思想(第2版 第2卷)

     第5章 深入理解模板   第6章 通用算法   第7章 通用容器   第三部分 专题  第8章 运行时类型识别   第9章 多重继承   第10章 设计模式   第11章 并发   附录  附录A 推荐读物   附录B...

    TCPIP详解--共三卷

    第5章 RARP:逆地址解析协议 47 5.1 引言 47 5.2 RARP的分组格式 47 5.3 RARP举例 47 5.4 RARP服务器的设计 48 5.4.1 作为用户进程的RARP服务器 49 5.4.2 每个网络有多个RARP服务器 49 5.5 小结 49 第6章 ICMP:...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

    第5章 对象-关系映射基础  5.1 持久化类的属性及访问方法  5.1.1 基本类型属性和包装类型属性  5.1.2 Hibernate访问持久化类属性的策略  5.1.3 在持久化类的访问方法中加入程序逻辑  5.1.4 设置派生属性  ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

    第5章 对象-关系映射基础  5.1 持久化类的属性及访问方法  5.1.1 基本类型属性和包装类型属性  5.1.2 Hibernate访问持久化类属性的策略  5.1.3 在持久化类的访问方法中加入程序逻辑  5.1.4 设置派生属性  ...

    精通Hibernate:对象持久化技术第二版part3

    第5章 对象-关系映射基础 101 本章主要介绍单个持久化类与单个数据库表之间进行映射的方法,尤其是当持久化类的属性不和数据库表的字段一一对应时的映射技巧。 5.1 持久化类的属性及访问方法 101 5.1.1 基本类型...

Global site tag (gtag.js) - Google Analytics