接下来进入第五章,java中初始化和清理的问题,这是两个涉及安全的重要命题。初始化的功能主要是为库中的构件(或者说类中的域)初始化一些值,清理的功能主要是清除程序中不再被需要的元素,防止资源过分被垃圾占用的出现,为解决这些问题,java中提供了对构造器和垃圾清理器的支持,首先讨论构造器的问题。

  为了保证程序的安全性,java中采用了构造器的机制来保证初始化。第一个问题就是命名的问题,java中的构造器规定名称必须和类名相同。这主要是出于如下的考虑,第一如果让编程者自行命名,则可能会产生于其他任何方法名称冲突的危险,第二,由于是编译器自动调用的构造器方法,必须要能够让编译器知道去调用哪一个方法。构造器一般分为两类,一种是无参构造器,这种构造器不接受任何参数,另一种是可以接受参数的构造器。下面是定义这两种构造器的例子。

 class tree{
int height;
tree(){
System.out.println("无参数构造器");
} tree(int height){
this.height = height;
System.out.println("带参数构造器 " + height);
}
} public class test {
public static void main(String[] args){
tree t1 = new tree();
tree t2 = new tree(10);
}
}

  输出:

无参数构造器 带参数构造器 10

  这一段代码定义了一个简单的类tree,并且创建了两种同名但参数列表不同的构造器(一个不接受参数),我们可以从代码和输出对构造器的机制进行初步的分析。

  (1)首先很容易看到,一个类是允许定义多个构造器方法的,编译器会根据参数列表的不同决定具体调用哪一种方法,这关系到方法重载的话题。

  (2)另外更加细心的话,可以发现构造器方法是没有返回值的,这显然和普通的方法有区别,普通的方法都是有返回值的,即使是返回值为空的方法(返回void),并且你可以让它具体返回某一类型,但是构造器则不行,它本身没有任何返回值。

  (3)java中新对象的创建和构造器的调用时绑定在一起的,代码中没有对构造器的具体调用,但是用new方法创建对象时,明显可以看到构造器被调用了。

  (4)如果在编写类的时候没有写构造器,编译器会自动提供默认的无参构造器并且调用。但是如果写了其他接受参数的构造器,编译器不会帮你创建默认的无参构造器。

Chapter5_初始化与清理_用构造器初始化的更多相关文章

  1. Chapter5_初始化与清理_构造器初始化

    一.构造器初始化的基本顺序 在使用构造器进行初始化时,最需要注意的是初始化的顺序,这种方法可以给初始化的顺序带来很大的灵活性.看如下的一个例子. class Window{ Window(int ma ...

  2. Chapter5_初始化与清理_方法重载

    方法重载是java中编译器在方法调用时采用的一个重要机制.起初方法重载的初衷是方便构造器的调用,比如对于一个类,可以实现用不同的方法来初始化它,又由于构造器的名称都是一样的,所以必须使用到方法重载的机 ...

  3. Chapter5_初始化与清理_数组初始化与可变参数列表

    一.数组初始化 数组是相同类型的,用一个标识符名称封装到一起的一个对象序列或基本类型数据序列.编译器是不允许指定数组的长度的,当使用语句int[] a时,拥有的只是一个符号名,即一个数组的引用,并不拥 ...

  4. Chapter5_初始化与清理_成员初始化

    在java中,成员初始化在使用之前应该都要保证已经完成初始化.对于在方法体中的局部变量,如果没有使用指定初始化的方法对成员变量进行初始化,编译器会提示一个错误.而对于类的数据成员,编译器会对这些成员赋 ...

  5. [THINKING IN JAVA]初始化和清理

    4.5初始化和清理 5.1 构造器初始化 无参:如果一个类没有构造器,那么会有一个默认的无参构造器,并且只能通过无参构造器初始化对象: 带参:传入参数初始化成员变量或者其它初始化操作需要的参数,如果类 ...

  6. 图解 & 深入浅出Java初始化与清理:构造器必知必会

    Writer      :BYSocket(泥沙砖瓦浆木匠) 微         博:BYSocket 豆         瓣:BYSocket FaceBook:BYSocket Twitter   ...

  7. Java编程思想——初始化与清理

    PS:最近一直忙于项目开发..所以一直没有写博客..趁着空闲期间来一发.. 学习内容: 1.初始化 2.清理 1.初始化   虽然自己的Java基础还是比较良好的..但是在解读编程思想的时候还是发现了 ...

  8. 大家一起和snailren学java-(四)初始化与清理

    初始化和清理,是一个生命周期的起始.在java中,对象的初始化和对象的回收是怎样的呢? 在开发c++的时候,有构造器的概念.即对象的创建,首先默认调用构造器进行初始化.在java中也有“构造器”.ja ...

  9. 初读"Thinking in Java"读书笔记之第五章 --- 初始化与清理

    用构造器确保初始化 构造器可以确保每个对象都会得到初始化,Java毁在创建对象时自动调用构造器. 构造器采用与类名相同的名称,因此并不适合"每个方法首字母小写的风格". 构造器默认 ...

随机推荐

  1. Python学习笔记---数 数据类型 运算

    python的四种数类型: 整数 int 浮点型 float 布尔 boolen 复数 complex >>> type(5)<class 'int'>>>& ...

  2. bootstrap之bootstrap-table插件使用心得以及实现过程

    1.首先一个页面(增删改查) 2.实现增删改查(一个框架) 3.编码问题(前端meta utf-8:引用中文包:contentType参数区utf-8的设置:响应的utf-8的编码设置) 4.多条件查 ...

  3. 不用安装Oracle客户端

    1 pl/sql developer 1.1 下载解压instantclient-basic-nt-12.1.0.2.0. 1.2 在其目录下新建Network/ADMIN/tnsnames.ora文 ...

  4. python数据类型及其详解

    一.数据类型介绍 1.字符串(string) 三种类型:单引号,双引号,三引号 a = 'jam' b = "JamHsiao" c = '''JAMHSIAO''' print( ...

  5. CentOS7 PHP+Redis实现Session共享

    先yum简单的安装redis wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/epel-7.repo ...

  6. Centos 7 配置邮件发送

    一.环境 系统:centos 7 sendmail:sendmail.x86_64 0:8.14.7-5.el7 mailx版本:mailx-12.5-19.el7.x86_64 二.软件安装: 1. ...

  7. 微信小程序——编辑

    记录一下 微信小程序分页编辑,可增页删除当前页面.第一页为主图片和主句子.其他页面一致. 左滑右滑可切换页面.每页可增加0到1页.小黑点与页面一致. /* pages/booktool/write/w ...

  8. LeetCode至 少有 1 位重复的数字

    给定正整数 N,返回小于等于 N 且具有至少 1 位重复数字的正整数. 示例 1: 输入:20 输出:1 解释:具有至少 1 位重复数字的正数(<= 20)只有 11 . 示例 2: 输入:10 ...

  9. python3 urllib 类

    urllib模块中的方法 1.urllib.urlopen(url[,data[,proxies]]) 打开一个url的方法,返回一个文件对象,然后可以进行类似文件对象的操作.本例试着打开google ...

  10. css文本垂直居中的实现

    本案例已经有新的比较简便的解决方案,可以直接采用 vertical-align:middle 样式对行内元素进行垂直居中布局,详见: 微信小程序开发——如何让商品标题类文本根据内容长度垂直居中. 以下 ...