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;
}
}
}
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;
}
}
}
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());
}
}
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));
}
}
4.7.3 将类放入包中
类的最上方要声明对应包名,同时需要把java文件放入对应目录,如下:
放入错误目录的后果:能编译不能运行
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) 形参与实参 构造器的默认值与默认构造
喜欢的话,点个赞吧~!平时做题,以及笔记内容将更新到公众号。
关注公众号,互相学习:钰娘娘知识汇总