资讯专栏INFORMATION COLUMN

《Thinking in Java》 Chapter 5 Tips

fuchenxuan / 1803人阅读

摘要:用构造器保证初始化构造器采用与类相同的名称。如果已经定义了一个构造器无论是否有参数,编译器就不会帮你自动创建默认构造器关键字关键字只能在方法内部使用,表示对调用方法的那个对象的引用。

5.1 用构造器保证初始化
构造器采用与类相同的名称。构造器是一种特殊类型的方法,因为它没有返回值
当创建一个对象时,也就是给此对象分配到的存储空间起了一个名字

5.2 方法重载
为了让方法名相同而形式参数不同的构造器同时存在,必须使用方法重载。每个重载的方法都必须有一个独一无二的参数类型列表
基本类型能从一个“较小”的类型自动提升至一个“较大”的类型
根据方法的返回值来区分重载方法是行不通的

5.3 默认构造器
如果你写的类中没有构造器,则编译器会自动帮你创建一个默认的构造器。如果已经定义了一个构造器(无论是否有参数),编译器就不会帮你自动创建默认构造器

5.4 this 关键字
this 关键字只能在方法内部使用,表示对“调用方法的那个对象”的引用。只有当需要明确指出对当前对象的引用时,才需要使用 this 关键字
除构造器外,编译器禁止在其他任何方法中调用构造器
static 方法就是没有 this 的方法,在 static 方法的内部不能调用非静态方法

5.5 清理:终结处理和垃圾回收
假定你的对象(并非使用 new)获得了一块“特殊”的内存区域,由于垃圾回收器只知道释放那些经由new 分配的内存,所以它不知道该如何释放该对象的这块“特殊”内存。为了应对这种情况,Java 允许在类中定义一个名为 finalize()的方法。它的工作原理“假定”是这样的:一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用其 finalize()方法,并且在下一次垃圾回收动作发生时,才会真正回收对象占用的内存
对象可能不被垃圾回收;垃圾回收并不等于“析构”
垃圾回收只与内存有关,使用垃圾回收器的唯一原因是为了回收程序不再使用的内存
之所以要有 finalize(),是由于在分配内存时可能使用了类似 C 语言的做法
System.gc()用于强制进行终结动作

5.6 成员初始化
Java 尽力保证:所有成员在使用之前都能得到恰当的初始化
类的每个基本数据成员保证都会有一个初始值
在类里定义一个对象引用时,如果不将其初始化,此引用就会得到一个特殊值 null

5.7 构造器初始化
无法阻止自动初始化的进行,它将在构造器被调用之前发生
变量定义的先后顺序决定了初始化的顺序
静态数据的初始化:无论创建多少个对象,静态数据都只占用一份内存区域。static 关键字不能应用于局部变量,因此他只能作用于域。如果一个域是静态的基本类型域,且也没有对它进行初始化,那么它就会获得基本类型的标准初值;如果它是一个对象引用,那么它的默认初始化值就是 null
静态初始化只有在必要时才进行
初始化的顺序是先静态对象(如果它们尚未因前面的对象创建过程而被初始化),而后是“非静态”对象
构造器可以看成静态方法
静态初始化动作只进行一次

5.8 数组初始化
编译器不允许指定数组的大小
在 Java 中可以将一个数组赋值给另一个数组

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

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

相关文章

  • Chapter4 Java流程控制之选择结构

    摘要:流程控制概述流程控制语句种类顺序选择循环选择结构结构结构多重结构嵌套结构结构循环结构循环循环循环循环嵌套多重结构与嵌套结构多重结构例子使用多重结构进行成绩判断成绩大于等于分,输出优成绩大于等于分且小于分,输出良成绩大于等于分且小 Lecture1 流程控制概述 流程控制语句种类:顺序、选择、循环;选择结构--if结构、if-else结构、多重if结构、嵌套if结构、switch结构;循...

    lieeps 评论0 收藏0
  • Chapter10 Java封装

    摘要:封装的实现封装将类的某些信息隐藏在类内部,不允许外部程序直接访问,只能通过该类提供的方法来实现对隐藏信息的操作和访问即隐藏对象信息的同时要留出访问的接口封装的特点只能通过规定的方法访问数据隐藏类的实例细节,方便修改和实现封装代码的实现修改属 Lecture1 封装的实现 封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,只能通过该类提供的方法来实现对隐藏信息的操作和访问(即隐...

    xorpay 评论0 收藏0
  • Chapter9 Java面向对象

    摘要:初始面向对象面向对象关注现实存在的事物的各方面信息,从对象的角度出发,根据事物的特征进行程序设计类类是模子,是一个抽象的概念,确定对象将会拥有的特征属性和行为方法,是具有相同属性和方法的一组对象的集合对象对象是类的实例化表现,是一个用来描述 Lecture1 初始面向对象 面向对象:关注现实存在的事物的各方面信息,从对象的角度出发,根据事物的特征进行程序设计 类:类是模子,是一个抽象...

    lylwyy2016 评论0 收藏0
  • Thinking in Java)第13章 字符串

    摘要:四上的操作看五格式化输出运用和语言很相似和是等价的哟类格式化说明符转换六正则表达式网上教程学七扫描输入新增了类。 一、不可变String String类型的对象是不可变的,所有的改变实际上都是创建了一个新的String对象,另外当String作为传入参数的时候,其实实际上传入的是这个引用的一个拷贝,这个方法结束了之后这个传入的引用也就消失了,原来的那个String不会受到方法内的影响而...

    feng409 评论0 收藏0
  • Thinking in Java)第11章 持有对象

    摘要:迭代器解决了这个问题。删除后于是我们可以写一个方法,接受一个类型,然后让他调用方法,这就不需要考虑这个是个还是了,也就是说,可以将遍历容器的操作与序列底层的结构分离,迭代器统一了对容器类的访问方式。十二和两种遍历的方法,与迭代器方法。 一、泛型和类型安全的容器 package tij.hoding; import java.util.ArrayList; public class ...

    v1 评论0 收藏0

发表评论

0条评论

fuchenxuan

|高级讲师

TA的文章

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