5.6 成员初始化
1)类的每一个基本数据类型成员,如果不显式赋予初值,都会有一个初始值;
2)对于引用类型成员,如果不显式赋予初值,则其初始值为null。
3)也可以直接在类中,对成员变量直接赋予初值。

5.7 构造器初始化
构造器也可以用于初始化。
5.7.1 初始化顺序
类内部的初始化,要先于构造器中初始化。
5.7.2 静态数据的初始化
静态成员变量的初始化值与非静态成员变量的初始化情形相同。在初始化顺序上,要先于非静态成员变量而初始化,并且一旦被初始化后,其不会再被初始化,即无论利用该类创建多少对象,静态数据都只能有一次初始化。
5.7.3 显式的静态初始化
静态代码块中也可以对静态成员变量进行初始化,且其初始化优先于直接在类中初始化的静态成员变量。

public class Spoon {static int i;static {i = 47;}
}

静态代码块只执行一次,只有当首次生成该类的第一个对象或者首次访问该类的静态数据时,静态代码块才会被执行。
5.7.4 非静态实例初始化
初始化代码块,可以对非静态成员变量进行初始化,在初始化顺序上要优先于构造器初始化。

public class Spoon2{int i;{i = 47;}
}

5.8 数组初始化
数组是相同类型的、用一个标识符名称封装到一起的一个对象序列或基本类型数据序列。
定义(本质是定义一个指向数组的引用)

int[] a; //与 int a[]效果相同

初始化

int[] a = {1, 2, 3, 4, 5};

指定长度

int[] a = new int[5];

所有的数组都有一个固定的成员,即length,表示数组的长度。

可变参数列表
可以定义接收任意个参数(包括零)的方法,这任意个参数将作为数组才传入。

f(Object... args){ //等效于 f(Object[] args)
}

可变参数可以与自动包装机制共存。
可变参数列表可以使得方法重载变得更为复杂。
1) 编译器会使用自动包装机制来匹配重载的方法;

public class OverloadingVarargs {static void f(Character... args){for(Character c : args){System.out.print(" " + c);}System.out.println();}static void f(Integer... args){for(Integer i : args){System.out.print(" " + i);}System.out.println();}static void f(Long... args){for(Long l : args){System.out.print(" " + l);}System.out.println();}public static void main(String[] args){f('a', 'b', 'c');f(1);f(2, 1);f(0);f(0L);//f(); //无法判断是运行哪一个f方法}
}

2) 如果在某个方法中增加一个非可变参数的话

public class OverloadingVarargs2 {static void f(float i, Character... args){System.out.println("first");}static void f(Character... args){System.out.println("second");}public static void main(String[] args){f(1, 'a');f('a', 'b'); //无法通过编译,对f的引用不明确}
}

3) 只能两个方法都加入一个非可变参数

public class OverloadingVarargs3 {static void f(float i, Character... args){System.out.println("first");}static void f(char c, Character... args){System.out.println("second");}public static void main(String[] args){f(1, 'a');f('a', 'b');}
}

总之,最好只在重载方法的一个版本上使用可变参数列表,或者不在任何一个重载方法上使用。

5.9 枚举类型
enum关键字,是在JDK 5之后加入的特性,主要用于处理常量集。

需要注意的是,在枚举类型中指定多少个常量,内存中就只会存在相应个数的枚举类型实例,每个实例对应于一个常量。

编译器还会自动创建ordinal()方法和values()方法,这两个方法都是静态方法。前者表示枚举类型声明的顺序(可在遍历时,便是按照该顺序遍历),后者生成由这些常量组成的数组。

枚举类型可以用于switch语句中。

Java编程思想读书笔记——初始化与清理(二)相关推荐

  1. JAVA编程思想读书笔记(三)--RTTI

    接上篇JAVA编程思想读书笔记(二) 第十一章 运行期类型判定 No1: 对于作为程序一部分的每个类,它们都有一个Class对象.换言之,每次写一个新类时,同时也会创建一个Class对象(更恰当的说, ...

  2. Java编程思想读书笔记(七)

    点击蓝字 关注我们 今天是端午节,在这里祝大家端午节安康.过节的同时也不要忘记知识储备,今天我 为大家带来了Java编程思想第七节多形性读书笔记.请大家一起品鉴,如果发现里面有啥写的不对的地方,请大家 ...

  3. Java编程思想读书笔记一:并发

    1. Thread.yield( )方法 当调用yield()时,即在建议具有相同优先级的其他线程可以运行了,但是注意的是,仅仅是建议,没有任何机制保证你这个建议会被采纳 .一般情况下,对于任何重要的 ...

  4. Java 编程思想 读书笔记

    第一章 对象导论 一.抽象过程 所有编程语言都提供抽象机制,人们所能解决的问题的复杂性直接取决于抽象的类型和质量. 1.1 只针对问题来进行建模 早期:基于约束条件编程的语言和通过图形符号操作来实现的 ...

  5. Java编程思想读书笔记——第七章:复用类

    第七章 复用类 使用类而不破坏现有程序代码,有两种达到这一目的的方法: 在新的类中产生现有类的对象,也就是说new一个对象,这种方法称为组合 按照现有类的类型来创建新类,不改变现有类的形式,在其基础上 ...

  6. Java编程思想读书笔记——复用类

    第七章 复用类 组合和继承是复用类的两种主要方式. 7.1 组合语法 组合只需将对象引用置于新类中即可.这些引用的初始化方式有四种: 1) 在定义对象的地方进行初始化,即在创建新类对象前就被初始化: ...

  7. java编程思想读书笔记

    多态 任何域的访问操作都将有编译器解析,如果某个方法是静态的,它的行为就不具有多态性 java默认对象的销毁顺序与初始化顺序相反 编写构造器时有一条有效的准则:"尽可能用简单的方法使对象进入 ...

  8. Java编程思想读书笔记——多态

    第八章 多态 多态(动态绑定.后期绑定或运行时绑定)分离做什么和怎么做,从另外一个角度讲接口和实现分离. 8.1 再论向上转型 将一个对象的引用同时看作其父类的引用的做法称为向上转型. 8.1.1 忘 ...

  9. Java编程思想读书笔记(02)

    第十三章字符串 字符串是不可变的:是final类固不能继承它:也不能通过指向它的引用来修改它的内容. StringBuilder是Java SE5引用的,在这之前用的是StringBuffer.后者是 ...

最新文章

  1. Windows XP鲜为人知的70招
  2. 剑指offer 24:二叉搜索树的后序遍历序列
  3. 量子纠缠为什么不能用于瞬时通讯?
  4. 图的两种存储方式---邻接矩阵和邻接表
  5. Windows7下安装LabelImg标注工具
  6. 现代密码学4.1--消息完整性
  7. 弹出taskeng.exe窗口的解决方法
  8. PWN-PRACTICE-BUUCTF-30
  9. 微信第三方扫描登录 java源代码_微信开放平台基于网站应用授权登录源码(java)...
  10. 9月22日云栖精选夜读:脑洞 | 横扫围棋界的AlphaGo竟然出纪录片了!介意剧透者慎点…...
  11. 程序员转正述职报告_程序员个人述职报告范文4篇(整理版)
  12. 计算机网络中OUI是什么意思,抓包出现oui Unknown是什么意思,请各位高手指教!!
  13. Correct way to wait for VBLANK on windows 10 in windowed mode
  14. 火星来客创业周刊第1期:独立开发者Twitter小工具60天,从月入300美金到月入3000美金
  15. 使用Nexus添加jar包到私服里
  16. mysql 表名 下划线_我们可以在MySQL表名中加下划线吗?
  17. 硬件工程师七夕鹊桥设计锦集
  18. IE浏览器出现版本过低升级字样的解决方案
  19. STM32F4_定时器输入捕获详解
  20. 英语的句号在c语言中是什么意思,英语中标点符号用法

热门文章

  1. 支持软件是计算机软件,()是计算机必备的支持软件。
  2. STM32 ES8266上阿里云IOT MQTT实践【第一章】:物联网简介(什么是物联网)
  3. python中cv是什么_python里面cv是什么意思
  4. python爬虫爬取当当网的商品信息
  5. php农历生日计算,阴历-农历-转换类 (PHP版),阴历php
  6. 浅谈PageRank
  7. vue/multi-word-component-names报错处理
  8. HTTPDNS基礎知識
  9. 基于AVR单片机: 两轮自平衡智能车
  10. 基于yolov4作者最新力作yolov7目标检测模型实现火点烟雾检测