4、5初始化和清理

5.1 构造器初始化

  1. 无参:如果一个类没有构造器,那么会有一个默认的无参构造器,并且只能通过无参构造器初始化对象;
  2. 带参:传入参数初始化成员变量或者其它初始化操作需要的参数,如果类重质油带参构造器,那不能通过无参构造器初始化对象。

5.2 方法重载

  1. 具有相同的方法名称、不同的返回值或者参数列表(个数、类型、顺序)
  2. 基本类型重载:基本类型存在自动向上转型的情况

5.3 垃圾回收

  1. finalize():在对象被销毁时调用
  2. 如何回收:引用计数、停止-复制、标记-清扫、分代、自适应、JIT

5.4 成员变量初始化

  1. 指定初始化,定义的时候初始化,每次创建对象的实例初始值一样;
  2. 构造器初始化,在构造器中初始化成员变量;
  3. 非static域初始化非成员变量({});
  4. 静态变量初始化:指定初始化和静态域初始化(static{});
  5. 初始化顺序:如果类第一次被实例化,那么首先初始化类的静态变量,如果不是,将不会再初始化静态变量,接着初始化指定方式的,最后初始化构造器方式的
  6. 继承方式初始化顺序:父类static->子类static->父类指定->父类构造->子类指定->子类构造
package com.chenlei.study.thinkinginjava;

class Base{
Base(String msg){
System.out.println(msg);
}
} class Father{
static Base staticBaseFather = new Base("staticBaseFather specify");
static Base staticBaseFather1;
static{
staticBaseFather1 = new Base("staticBaseFather static area");
}
Base base = new Base("fieldBaseFather specify");
Base base1;
{
base1 = new Base("fieldBaseFather non-static area");
}
Base base2;
public Father() {
base2 = new Base("fieldBaseFather constructor");
}
} class Child extends Father{
static Base staticBaseChild = new Base("staticBaseChild specify");
static Base staticBaseChild1;
static{
staticBaseChild1 = new Base("staticBaseChild static area");
}
Base base1;
{
base1 = new Base("fieldBaseChild non-static area");
}
Base base = new Base("fieldBaseChild specify");
Base base2;
public Child() {
base2 = new Base("fieldBaseChild constructor");
}
} public class Initalized {
public static void main(String[] args) {
new Child();
}
}
output:
staticBaseFather specify
staticBaseFather static area
staticBaseChild specify
staticBaseChild static area
fieldBaseFather specify
fieldBaseFather non-static area
fieldBaseFather constructor
fieldBaseChild non-static area
fieldBaseChild specify
fieldBaseChild constructor

5.6 数组初始化

  1. int[] a;int a[];
  2. int[] a = {1,2,3};int[] a = new int[10];int[] a = new int[]{1,2,3};
  3. 数组中的基本类型会被初始化为0或false,引用对象会被初始化为null;
  4. 可变参数列表:用于参数类型或个数未知的情况下;ReturnType methodName(Type... args){},值得注意的是:拥有可变参数列表的方法也接受数组类型参数,也可接受无任何参数;
  5. 重载方法中的可变参数:方法重载使用可变参数要格外小心,以免出现参数满足多个方法,导致编译器无法确定调用哪个方法。

5.7 枚举类型

  1. 关键字:enum;
  2. values()遍历、ordinal()显示顺序;
  3. switch语句中使用枚举类型;

[THINKING IN JAVA]初始化和清理的更多相关文章

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

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

  2. Java 初始化和清理

    初始化和清理是影响代码安全的两个重要因素. 一.初始化 1. 方法重载 构造器与类名相同,成为强制重载方法名的原因之一.重载规则:每个重载的方法必须拥有独一无二的参数类型列表.不能根据返回值来区分重载 ...

  3. java初始化与清理

    初始化与清理 欢迎转载,转载烦请注明出处,谢谢. https://www.cnblogs.com/sx-wuyj/p/11177257.html 1.用构造器确保初始化 java中通过提供构造器,可以 ...

  4. Java 初始化与清理

    用构造器确保初始化 如何自定义构造器(constructor)? 构造器方法的名称与类名相同,并且没有返回值. 需要注意,在定义构方法时,方法名前面不要添加任何的类型说明符,格式:类名(){},构造方 ...

  5. 浅谈Java中的初始化和清理

    引言 这篇文章我们主要介绍Java初始化和清理的相关内容,这些内容虽然比较基础,但是还是在这边做一个简单的总结,方便以后查阅. 初始化过程 Java尽力保证:所有变量在使用之前都会得到恰当的初始化(对 ...

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

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

  7. Java的初始化与清理

    大家都知道,Java是站在巨人的肩上成功的,它是在C&C++的基础上进一步的开发,投入面向对象开发的怀抱.Java吸取了很多以前的教训,加入自己很多独创的方式.在程序语言发展初期,许多C程序员 ...

  8. Java编程思想学习(五)----第5章:初始化与清理

    随着计算机革命的发展,“不安全”的编程方式已逐渐成为编程代价高昂的主因之一. C++引入了构造嚣(constructor)的概念,这是一个在创建对象时被自动调用的特殊方法.Java中也采用了构造器,并 ...

  9. 《Java编程思想》——初始化与清理(一)读书笔记

    第一次写这个,这一章都用word写的,结果复制过来没图片....只能上传word文档了.以后改用markdown比较好 word文档地址:<Java编程思想>--初始化与清理(一)读书笔记

随机推荐

  1. Ubuntu下用wireshark抓取802.11封包并进行过滤分析

    要用wireshark抓802.11的包 需要在linux下进行. 要在linux下抓802.11的包 需要在linux下安装无线网卡驱动. 所以 在正式抓取之前先把这两样东西搞起来. *没有特殊说明 ...

  2. 【转】jQuery获取Select option 选择的Text和Value

    获取一组radio被选中项的值:var item = $('input[name=items][checked]').val();获取select被选中项的文本:var item = $(" ...

  3. MVC 请求处理流程(一)

    路由系统先获取路由数据,在实现了IHttpModule接口的UrlRoutingModule对象中通过注册HttpApplication的PostResolveRequestCache来解析路由数据并 ...

  4. iOS socket保持后台连接 ios9.0 xcode8.0

    可以保持后台,但申请上架是肯定会被拒的 本教程是基于AsyncSocket库的简单开发! socket机制今天就不说了,毕竟百度上太多太详尽了! 1.先new一个工程: ​2.要写socket的界面遵 ...

  5. ios创建自定义控件必须具备的三个方法

    1.当用代码创建控件时调用 -(instancetype)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { ...

  6. The next day to learn English

    if you smail when no  one else is around,you really meat it.

  7. oracle xmltype导入并解析Excel数据 (二)规则说明

    规则表字段说明如下: 其中RULE_FUNC_CUSTOMIZE表示,用户自己写函数,去判断数据是否合法,存储的是函数的名字 此函数的参数只有一个,该列的值,字段类型是Varchar2, 校验失败的话 ...

  8. JQUERY 知识点的自我总结

    一.名词释义 1 .js的入口函数:要等待文档树的加载完成,并且等待所有图片.文件都加载完成之后才开始执行. 2  .jquery入口函数会等待文档树的加载完成,并不会等待图片还有文件的加载 3 .j ...

  9. C# 生成条形码图片,效果不错

    //首先引用 条码库BarcodeLib.dll using System; using System.Collections.Generic; using System.Linq; using Sy ...

  10. C#异常语句

    try: 用于检查发生的异常,并帮助发送任何可能的异常. catch: 以控制权更大的方式处理错误,可以有多个catch子句. finally :无论是否引发了异常,finally的代码块都将被执行. ...