资讯专栏INFORMATION COLUMN

Java 初始化与清理(5)

cheng10 / 1788人阅读

摘要:随着计算机革命的发展,不安全的编程方式已逐渐成为编程代价高昂的主因之一。

随着计算机革命的发展,“不安全”的编程方式已逐渐成为编程代价高昂的主因之一。

1.用构造器确保初始化

构造器:在创建对象时被自动调用的特殊方法.

构造器命名问题:1.所取得任何名字可能与类的某个成员命名冲突;2.调用构造器是编译器的责任,所以应该让编译器知道该调用哪个方法.

构造器命名:与类名相同,所以"每个方法首字母小写"的编程风格不适用于构造器.

构造器没有返回值(new表达式返回了对新建对象的引用,但构造器本省并没有返回任何值).

2.方法重载

目的:为了让方法名相同而形式参数不同的构造器同时存在.

方法重载是构造器所必需的,但亦可用于其他方法.

区分:参数类型列表,参数顺序(代码难以维护),涉及基本类型的重载(易混淆),返回值(为了副作用而调用就会忽略其返回值 ×)

3.默认构造器

如果类中没有构造器,编译器会自动创建一个默认构造器.

如果已有构造器,则不会创建.

4.this关键字

为了能用简便,面向对象的语法来编写代码,编译器做了一些幕后工作,他把"所操作对象的引用"作为第一个参数传给方法(注:一般是通过对象的引用来调用方法,编译之后通过对象来调用).

只能在方法内部使用,表示对"调用方法的那个对象"的引用.

如果在方法内部,调用同一个类的另一个方法,则不必使用this,直接调用即可.

需要返回当前对象的引用时,return this;.

将当前对象作为参数传递给其他对象.

在构造器中调用构造器(只能调用一个,且必须将构造器的调用至于最起始处).

static方法:没有this的方法.

5.清理:终结处理和垃圾回收

finalize().

对象可能不被垃圾回收.

垃圾回收并不等于"析构".

垃圾回收只与内存有关.

引用计数:常用开说明垃圾收集的工作方式.

复制式回收器:效率低(1,空间大;2,复制).

标记-清扫 模式.

6.成员初始化

局部变量必须进行初始化.

类的数据成员(全局变量),基本类型会默认有一个初始值,对象引用会获得特殊值null.

指定初始化:定义的时候直接赋值或通过方法调用赋值.

7.构造器初始化

通过构造器来进行初始化(无法阻止自动初始化的进行,它将在构造器调用之前发生).

变量定义的先后顺序决定了初始化的顺序.

静态数据初始化:只有在第一个对象创建(或者第一次访问静态数据)的时候,才会被初始化,仅执行一次.

显式的静态数据初始化:静态代码块.

非静态实例初始化:普通代码块(匿名内部类的chu"shi"hua).

构造器没有显式地使用static,但也是静态方法.

对象的创建过程
1.当诗词创建对象或者类的静态方法/静态域首次被访问时,Java解释器查找类路径,定位.class文件.
2.载入.class,有关静态初始化的所有动作被执行(首次加载时进行一次).
3.用new操作符创建对象,在堆上为对象分配足够的存储空间.
4.存储空间清零,为对象中的全局变量赋值.
5.执行所有出现于字段定义处的初始化动作.
6.执行构造器.

8.数组初始化

数组:相同类型的,用一个标识符名称封装到一起的一个对象序列或基本类型数据序列.通过方括号下标操作符来定义和使用的.

编译器不允许指定数组的大小.

初始化表达式:由一对花括号括起来的值组成.在这种情况下,存储空间的分配(等价于使用new)由编译器负责.

固有成员length,只能访问不能修改.

可变参数列表.

9.枚举类型

枚举类型的实例是常量,按照命名惯例使用大写字母表示(多个单词用下划线隔开).

为了使用enum,需要创建一个该类型的引用,并将其赋值给某个实例.

编译器自动添加toString(),ordinal()(声明顺序),values()(按声明顺序,产生由常量构成的数组)方法.

与switch配合使用.

END

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/71527.html

相关文章

  • Java编程思想》笔记5.始化清理

    摘要:点击进入我的博客初始化和清理是编程安全的两个问题。延续了中的构造器确保初始化,并引入了垃圾回收器管理和释放内存。用构造方法确保初始化构造方法和类名相同。用于强制进行终结动作。载入该文件,静态数据进行初始化,执行静态代码块。 点击进入我的博客 初始化和清理是编程安全的两个问题。Java延续了C++中的构造器确保初始化,并引入了垃圾回收器管理和释放内存。 5.1 用构造方法确保初始化 ...

    wangym 评论0 收藏0
  • Java编程思想》笔记8.多态

    摘要:多态的作用是消除类型之间的耦合关系。编写构造器准则用尽可能简单的方法使对象进入正常状态,如果可以的话,避免调用其他方法。 点击进入我的博客 在面向对象的程序设计语言中,多态是继数据抽象(封装)和继承之后的第三种基本特征。多态通过分离做什么和怎么做,从另一角度将接口和实现分离开来。多态的作用是消除类型之间的耦合关系。 8.1 再论向上转型 对象既可以作为它自己的本类使用,也可以作为它的...

    chinafgj 评论0 收藏0
  • Java编程思想学习录(连载之:始化清理

    摘要:注本文首发于公众号,可长按或扫描下面的小心心来订阅关于构造器与初始化无参构造器默认构造器自己未写编译器帮忙自动创建的若自行定义了构造器无论参数有否,编译器便停止默认创建动作类里的对象引用默认初始化为,基本类型初始化为构造器也是类的静态方法四 showImg(https://segmentfault.com/img/remote/1460000015723687); 注: 本文首发于 ...

    betacat 评论0 收藏0
  • 【读书笔记】JVM垃圾收集内存分配策略

    摘要:堆和方法区只有在程序运行时才能确定内存的使用情况,垃圾回收器所关注的主要就是这部分内存。虚拟机会根据当前系统的运行情况收集性能监控信息,动态调整比率参数以提供最合适的停顿时间或最大的吞吐量。 Tip:内容为对《深入理解Java虚拟机》(周志明 著)第三章内容的总结和笔记。这是第一次拜读时读到的一些重点,做个分享,也为后面再次阅读和实践做保障。 3.1 概述 程序计数器、虚拟机栈、本地...

    mcterry 评论0 收藏0
  • Java 复用类(7)

    摘要:复用代码是众多引入注目的功能之一。但要想成为极具革命性的语言,仅仅能够复制代码并对之加以改变是不够的,它还必须能够做更多的事情。 复用代码是Java众多引入注目的功能之一。但要想成为极具革命性的语言,仅仅能够复制代码并对之加以改变是不够的,它还必须能够做更多的事情。 1.组合语法 将对象引用置于新类中. 初始化对象引用:1.定义时初始化;2.构造器初始化;3.使用之前(惰性初始化);...

    darkbaby123 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<