一、对象构造
1、构造器通常使用重载的功能,通过参数类型来查找匹配的过程叫做重载解析
2、如果构造器中没有显式地为字段设置初值,就会被自动赋为默认值(0、false、null)
3、仅当类没有构造器时,类才会提供一个无参构造函数
4、可以在类定义中为任何字段赋值,这样就可以实现一个类的所有构造器都把某个特定的实例字段设置为某一值,这个值不一定是常量,也可以调用一个方法来初始化
public class Employee
{
private String name = "";
private int salary = 500;
//...
}
5、对于构造器的参数名通常有两种写法:一种是在参数前加上前缀a,另一种是用原参数名
public Employee(String name, int salary)
{
this.name = name; //参数变量会遮蔽同名的实例字段
this.salary = salary;
}
public Employee(String aname, int asalary)
{
name = aname;
salary = asalary;
}
6、我们除了通过构造器和在声明中赋值,我们还可以通过初始化块来初始化数据字段;如果类的静态字段需要复杂的初始化代码,可以使用静态的初始化块
public class Employee
{
String name;
int salary;
//static
{
name = "";
salary = 500;
}
}
7、由于java会完成自动的垃圾回收,不需要人工回收内存,所以java不支持析构器
二、包
1、java允许使用包(package)将类(class)组织在一个集合中
2、使用包的主要原因是确保类名的唯一性,这样不同的包内有同名类也不会产生冲突
3、一个类可以使用所属包中的所有类,以及其他包的公共类
4、为了访问另一个包的共有类,一种方式就是使用完全限定名,即包名后面跟着类名
java.time.LocalDate today = java.time.LocalDate.now();
另一种方法是使用import语句导入一个特定的类或整个包
import java.time.*;
import java.time.LocalDate;
5、注意只能使用*来导入一个包,而不能使用java.*或java.*.*
6、如果导入的两个包中有同名类,在使用类时会引发编译错误。此时我们可以增加一个特定的import语句来确定使用哪个类
import java.util.*;
import java.sql.*;
import java.util.Date;
如果必须同时使用两个类,那么需要在使用的类前加上包名,即完全限定名
7、有一种import语句允许导入静态方法和静态字段,而不只是类
import static java.lang.System.*;
import static java.lang.System.out;
out.println();
8、如果想将类放入包中,需要把包名放在源文件的开头。如果没有在源文件防止package语句,那么源文件中的类就属于无名包
package homework1;
9、标记为public的类可以由任意类使用,标记为private的部分只能由定义它们的类使用,如果都没有指定那么这个部分(类、方法、变量)可以被同一个包中的所有方法访问
三、其他
1、JAR文件:在将应用程序打包时,你一定希望只向用户提供一个单独的文件,而不是一个包含大量类文件的目录结构,java归档(JAR)文件就是为此目的而设计
2、文档注释