《Thinking In Java》学习笔记:第5章 初始化与清理
来源:互联网 发布:股票行情分析软件下载 编辑:程序博客网 时间:2024/05/14 03:45
默认构造器(无参构造器)
如果你没有自己编写构造器,编译器会默认一个无参构造器。但是,如果你已经定义了自己的构造器,编译器就不会帮你自动创建构造器。
this关键字
对当前对象的引用,只能在方法内部使用,表示对“调用方法的那个对象”的引用,与其他对象引用方式并无不同。
static关键字
static方法内部不能调用非静态方法(编译器怎么知道是哪个对象在调用非静态方法?),反过来却可以。
成员初始化
不像其他语言(比如C),Java尽量保证所有变量在使用前都能得到恰当的初始化。
对于方法中的局部变量,Java以编译错误的形式保证其必须被初始化。
对于类的成员变量,如果是基本类型,Java会保证给他们初值;如果是对象引用,Java会自动赋值为null。
同时,Java可以在定义的时候直接为成员变量赋初值(C++中不能)。
初始化顺序
在类内部,成员变量定义的先后顺序决定其初始化顺序,所有成员变量的都会在构造器调用之前得到初始化。对于未初始化的static变量,编译器将赋予默认初值。初始化的顺序是先静态成员初始化,后非静态成员初始化。
显示的静态初始化:
public class Spoon { static int i; static { i = 47; } }
相比之下,非静态成员也可以这样操作:
public class Mugs { Mug mug1; Mug mug2; { mug1 = new Mug(1); mug2 = new Mug(2); } }
可变参数列表
public class NewVarArgs { static void printArray(Object... args) { for(Object obj : args) System.out.print(obj + " "); System.out.println(); } public static void main(String[] args) { // Can take individual elements: printArray(new Integer(47), new Float(3.14), new Double(11.11)); printArray(47, 3.14F, 11.11); printArray("one", "two", "three"); printArray(new A(), new A(), new A()); // Or an array: printArray((Object[])new Integer[]{ 1, 2, 3, 4 }); printArray(); // Empty list is OK }}
有了可变参数,就再也不用显式地编写数组语法了。当然,编译器事实上会将你传入的参数转成数组。如果你已经传入了一个数组作为参数,编译器会发现它已经是一个数组,因此不会进行任何转换。同时,可变参数允许用户传入0个参数。然而,如果出现以下情况:
static void f(Integer... args) {}static void f(String... args) {}
在上述情况下,如果执行 f( ),程序将无所适从。
0 0
- 《Thinking In Java》学习笔记:第5章 初始化与清理
- 《Thinking in Java》学习笔记-----第5章 初始化与清理
- Thinking in Java学习笔记 第五章:初始化与清理
- Java - Thinking in Java 第5章 初始化与清理
- Thinking In Java 学习笔记 - 初始化与清理
- 《Thinking in Java》笔记 - 第五章 - 初始化与清理
- #Thinking in Java阅读笔记# 第五章 初始化与清理
- Thinking in Java 第5章 初始化与清理 【可变参数列表】
- Thinking in Java 第5章 初始化与清理 【枚举类型】
- Thinking in Java笔记之初始化清理
- Thinking in Java 读书笔记-初始化与清理
- Thinking in Java---初始化与清理
- Thinking in Java--第五章-初始化与清理
- Thinking in Java 读书笔记 第五章 初始化与清理
- Thinking in Java:第五章-初始化与清理
- JAVA基础学习篇----《thinking in java》第四章:初始化与清理
- thinking in java 笔记 思维导图 第五章初始化与清理
- Thinking In Java笔记(第五章 初始化与清理(二))
- Windows 10操作系统非常垃圾的一个设计,居然还没有改过来???难怪黑客总能找到一堆安全漏洞
- android每隔5s显示时间
- 大数据平台监控(二):Ganglia与Nagios的整合
- IIS网站配置
- 十四、ContentProvider往通讯录添加联系人和获取联系人
- 《Thinking In Java》学习笔记:第5章 初始化与清理
- c++随机数产生
- U盘使用MBR分区安装win8/8.1/10
- 网站设计需要的基本知识
- Lucene系列-Fieldcache
- 优秀开源代码解读之JS与iOS Native Code互调的优雅实现方案
- MySQL数据库十大优化技巧
- Codeforces Round #331 (Div. 2) _A. Wilbur and Swimming Pool
- Python的可变与不可变数据类型