Chapter5_初始化与清理_用构造器初始化
接下来进入第五章,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_初始化与清理_用构造器初始化的更多相关文章
- Chapter5_初始化与清理_构造器初始化
一.构造器初始化的基本顺序 在使用构造器进行初始化时,最需要注意的是初始化的顺序,这种方法可以给初始化的顺序带来很大的灵活性.看如下的一个例子. class Window{ Window(int ma ...
- Chapter5_初始化与清理_方法重载
方法重载是java中编译器在方法调用时采用的一个重要机制.起初方法重载的初衷是方便构造器的调用,比如对于一个类,可以实现用不同的方法来初始化它,又由于构造器的名称都是一样的,所以必须使用到方法重载的机 ...
- Chapter5_初始化与清理_数组初始化与可变参数列表
一.数组初始化 数组是相同类型的,用一个标识符名称封装到一起的一个对象序列或基本类型数据序列.编译器是不允许指定数组的长度的,当使用语句int[] a时,拥有的只是一个符号名,即一个数组的引用,并不拥 ...
- Chapter5_初始化与清理_成员初始化
在java中,成员初始化在使用之前应该都要保证已经完成初始化.对于在方法体中的局部变量,如果没有使用指定初始化的方法对成员变量进行初始化,编译器会提示一个错误.而对于类的数据成员,编译器会对这些成员赋 ...
- [THINKING IN JAVA]初始化和清理
4.5初始化和清理 5.1 构造器初始化 无参:如果一个类没有构造器,那么会有一个默认的无参构造器,并且只能通过无参构造器初始化对象: 带参:传入参数初始化成员变量或者其它初始化操作需要的参数,如果类 ...
- 图解 & 深入浅出Java初始化与清理:构造器必知必会
Writer :BYSocket(泥沙砖瓦浆木匠) 微 博:BYSocket 豆 瓣:BYSocket FaceBook:BYSocket Twitter ...
- Java编程思想——初始化与清理
PS:最近一直忙于项目开发..所以一直没有写博客..趁着空闲期间来一发.. 学习内容: 1.初始化 2.清理 1.初始化 虽然自己的Java基础还是比较良好的..但是在解读编程思想的时候还是发现了 ...
- 大家一起和snailren学java-(四)初始化与清理
初始化和清理,是一个生命周期的起始.在java中,对象的初始化和对象的回收是怎样的呢? 在开发c++的时候,有构造器的概念.即对象的创建,首先默认调用构造器进行初始化.在java中也有“构造器”.ja ...
- 初读"Thinking in Java"读书笔记之第五章 --- 初始化与清理
用构造器确保初始化 构造器可以确保每个对象都会得到初始化,Java毁在创建对象时自动调用构造器. 构造器采用与类名相同的名称,因此并不适合"每个方法首字母小写的风格". 构造器默认 ...
随机推荐
- 啊哈算法第四章第二节解救小哈Java实现
package corejava; public class FourTwo { static int m;//(m,n)为几行几列 static int n; static int p;//(p,q ...
- leetcode1035
class Solution: def maxUncrossedLines(self, A: 'List[int]', B: 'List[int]') -> int: m = len(A) n ...
- EMQTT本地源码搭建填坑记录
因业务需求需要本地搭建一个emqtt的消息队列服务器,根据官网提示搭建失败,具体如下 官方步骤: Erlang 安装: http://www.erlang.org/ MSYS2 安装: http:// ...
- P1100 高低位交换
题目描述 给出一个小于2^{32}232的正整数.这个数可以用一个3232位的二进制数表示(不足3232位用00补足).我们称这个二进制数的前1616位为“高位”,后1616位为“低位”.将它的高低位 ...
- css note
1.text-align规定了其子元素的对齐方式,当设置在子元素无效时,尝试设置在父元素,子元素可以水平居中: 2.vertical-align使用的前提,首先元素必须是display:inline ...
- 宝塔搭建laravel所需要的lnmp环境linux-nginx-mysql-php-composer-git
这里示例是使用 CentOS 7.4 哈:如果还没有服务器建议购买阿里云的或者是腾讯云的:这台服务器需要是未安装过 php 的环境:如果服务器已经被折腾过一番:建议备份下数据后重装下环境:阿里云和腾讯 ...
- [SF] Symfony 标准 HttpFoundation\Request 实现分析
使用方式 /** * 如果直接示例化 Request 默认是没有参数的,可以自己传入 * 本方法将 PHP 超全局变量作为参数然后实例化自身(Request)进行初始化. */ $request = ...
- saver.restore()遇到的错误
运行python程序执行 saver.restore(sess,"E:/pythonFile/untitled/deepLearning/model/model.ckpt") ...
- 深入理解C++11【3】
[深入理解C++11[3]] 1.POD类型 Plain Old Data. Plain 表示 了POD是个普通的类型.C++11将POD划分为两个基本概念的合集: 1)平凡的(trivial) 2) ...
- LocalDate的使用
LocalDate的一些使用方法 今天半天的时间都用在了LocalDate上,然后呢,也是自己的第一次写博客. 首先来看看会用上的方法吧. 两个构造器,用的是静态工厂方法 static Local ...