当前位置 : 主页 > 编程语言 > java >

《Java 核心技术 卷1》 笔记 第四章:类与对象(6) 构造器调用与初始化块

来源:互联网 收集:自由互联 发布时间:2022-07-13
4.6.5 参数名 参数名要起有意义的名字。因为人是有遗忘的,也因为一个系统有多个人维护,也有后来者维护,后来者不懂你的参数代表什么意思,接手代码就会变得困难。 4.6.6 构造器


 4.6.5 参数名

参数名要起有意义的名字。因为人是有遗忘的,也因为一个系统有多个人维护,也有后来者维护,后来者不懂你的参数代表什么意思,接手代码就会变得困难。

4.6.6 构造器的相互调用

使用this(参数)的格式进行调用,如下:

public class Main {
public static void main(String[] args){
Main solution = new Main();

Info aliceInfo = solution.new Info("Alice");
Info bobInfo = solution.new Info("Bob","swim");
System.out.println(aliceInfo.toString());
System.out.println(bobInfo.toString());
}

class Info{
String name;
String hobby;
public Info(String name, String hobby){
this.name = name;
this.hobby = hobby;
}

public Info(String name){
this(name,null);
}

@Override
public String toString() {
return name+" "+hobby;
}
}
}

《Java 核心技术 卷1》 笔记 第四章:类与对象(6) 构造器调用与初始化块_核心技术

4.6.7 初始化块

全局变量(字段)初始化三种方式:

 (1)声明时直接初始化

(2)初始化块

(3)构造器

其中(1)早于(2),(2)早于(3),由于前面已经总结过,这里不再描述了

对象构造步骤:

1. 初始化为默认值(0/false/null)

2. 按照声明顺序,依次执行初始化语句

3. 构造器的执行顺序,按照类声明的先后顺序为准

静态初始化块:

使用static关键字,后根初始化块,用于初始化类中的静态变量,只会在类第一次进行实例化时,执行一次。

public class Main {
public static void main(String[] args){
Main solution = new Main();

Info aliceInfo = new Info("Alice");
System.out.println(aliceInfo.status);
Info bobInfo = new Info("Bob","swim");
System.out.println(bobInfo.status);
System.out.println(aliceInfo.toString());
System.out.println(bobInfo.toString());
}

static class Info{
String name;
String hobby;
static int status;
static{
++status;
}

public Info(String name, String hobby){
this.name = name;
this.hobby = hobby;
}

public Info(String name){
this(name,null);
}

@Override
public String toString() {
return name+" "+hobby;
}
}
}

《Java 核心技术 卷1》 笔记 第四章:类与对象(6) 构造器调用与初始化块_java_02

 4.6.8 析构器

Java没有析构器,无需手动释放内存,具有自动垃圾回收机制

4.7 包

好处:方便多文件管理、不同包下文件可重复

4.7.1 类导入

一个类使用其他类有两种方式:

(1)使用全名,例如:java.util.Date

(2)先导入,再使用,例如:import java.util.*;或者import java.util.Date;

细节:

        出现不同包同名类时,不能重复进行导入包,会报错。后使用的类需要使用全名

import java.util.Date;
public class Main {
public static void main(String[] args){
Main solution = new Main();

//使用全名
java.util.Date date1 = new java.util.Date();
System.out.println(date1.getTime());
//导入包import java.util.Date; 或import java.util.*;
Date date2 = new Date();
System.out.println(date1.getTime());
//如果已经 导入 java.util.Date的情况下,要使用import java.sql.Date;会造成报错,需要写全名
java.sql.Date date3 = new java.sql.Date(1);
System.out.println(date3.getTime());
}
}

 

《Java 核心技术 卷1》 笔记 第四章:类与对象(6) 构造器调用与初始化块_蓝桥杯_03

4.7.2 静态导入

JDK1.5 开始,支持导入静态方法和静态全局变量,如下:

import static java.lang.Math.*;
import static java.lang.System.*;

public class Main {
public static void main(String[] args){
Main solution = new Main();
out.println(max(1,2));
}
}

 

《Java 核心技术 卷1》 笔记 第四章:类与对象(6) 构造器调用与初始化块_初始化_04

 4.7.3 将类放入包中

类的最上方要声明对应包名,同时需要把java文件放入对应目录,如下:

《Java 核心技术 卷1》 笔记 第四章:类与对象(6) 构造器调用与初始化块_初始化_05

放入错误目录的后果:能编译不能运行

4.7.4 包作用域

我们知道全局变量前使用private、public代表作用域,当不写作用域时,就为包作用域。

JDK1.2 开始,禁止用户使用java.*开头的包作为package

jar包的部分打算不写,实际生产没有用上

   系列内容:

《Java 核心技术 卷1》 笔记:第一章 Java程序设计概述

《Java 核心技术 卷1》 笔记:第二章 Java程序设计环境

《Java 核心技术 卷1》 笔记:第三章 Java基本的程序设计结构(1)

《Java 核心技术 卷1》 笔记:第三章 Java基本的程序设计结构(2)

《Java 核心技术 卷1》 笔记:第三章 Java基本的程序设计结构(3)

《Java 核心技术 卷1》 笔记:第三章 Java基本的程序设计结构(4)

《Java 核心技术 卷1》 笔记:第三章 Java基本的程序设计结构(5)

《Java 核心技术 卷1》 笔记:第三章 Java基本的程序设计结构(6)

《Java 核心技术 卷1》 笔记:第三章 Java基本的程序设计结构(7)大数处理、数组、多维数组、控制台传参

《Java 核心技术 卷1》 笔记 第四章:类与对象

《Java 核心技术 卷1》 笔记 第四章:类与对象(2) GregorianCalendar 与 类的基本组成

《Java 核心技术 卷1》 笔记 第四章:类与对象(3) 构造器全局私有方法

《Java 核心技术 卷1》 笔记 第四章:类与对象(5) 形参与实参 构造器的默认值与默认构造

喜欢的话,点个赞吧~!平时做题,以及笔记内容将更新到公众号。

关注公众号,互相学习:钰娘娘知识汇总

《Java 核心技术 卷1》 笔记 第四章:类与对象(6) 构造器调用与初始化块_蓝桥杯_06

网友评论