初始化与清理
Java通过构造器确保初始化,并提供了垃圾回收器,对不再使用的内存资源自动将其释放。
方法的重载
1.任何程序设计语言都具备的一项重要特性是对名字的运用。创建一个对象也就给此对象分配到的存储空间取了一个名字。名字起的好,可以使系统更易于理解和修改。
2.区分重载的规则:每个重载的方法都必须有一个独一无二的参数类型列表
3.基本类型的重载。基本类型能从一个“较小”的类型自动提升到一个“较大”的类型。
char类型可以自动转为int、long、double、float
int类型可以自动转为long、float、double
byte类型可以自动转为short、int、long、float、double
short类型可以自动转为int、long、float、double
long类型可以自动转为float、double
float类型可以自动转为double
this关键字
为了能用简便、面向对象的语法来编写代码-即“发送消息给对象”,编译器做了一些幕后工作,它暗自吧“所操作对象的引用”作为第一个参数传递给方法。this关键字只能在方法内部使用,表示对“调用方法的那个对象”的引用。this的用法和其他对象引用并无不同。
this关键字对于将当前对象传递给其他方法也很有用。
构造器中调用构造器
可能为一个类写了多个构造器,有时可能想在一个构造器中调用另一个构造器,以避免重复。可用this关键字做到这一点。
尽管可以用this调用一个构造器,但却不能调用两个。此外,必须将构造器调用置于最起始处,否则编译器会报错。
static
static方法就是没有this的方法。在static方法的内部不能调用非静态方法,反过来倒是可以。
终结处理和垃圾回收
1.对象可能不被垃圾回收
2.垃圾回收并不等于“析构”
3.垃圾回收只与内存相关
成员初始化
所有变量在使用前都能得到恰当的初始化。
对于方法的局部变量,Java以编译时错误的形式来贯彻这种保证。
类的每个基本类型成员保证都会有一个初始值。
boolean false
char 空
byte 0
short 0
int 0
long 0
float 0.0
double 0.0
引用:null
构造器初始化
初始化顺序:在类的内部,变量定义的先后顺序决定了初始化的顺序。即使变量散布于方法定义之间,他们仍旧会在任何方法(包括构造器)别调用之前得到初始化。
静态数据的初始化
无论多少个对象,警惕数据都只占用一份存储区域。
显示的静态初始化:Java允许将多个静态初始化动作组织成一个特殊的静态子句,有时也叫静态块,
非静态实例初始化
初始化每一个对象定位非静态变量。这种语法对于支持 “匿名内部类”的初始化是必须的哇。
数组的初始化
数组只是相同类型,用同一个标识符名称封装到一起的一个对象序列或基本数据类型序列。编译器不允许指定数组的大小
可变参数列表
void f(int required,String... trailing);
可变参数列表中可以使用任何类型参数,包括基本类型。如果在改列表中没有任何元素,那么转变成的数据的尺寸为0
枚举类型
枚举和switch是绝佳的组合
访问控制权限
包:库单元
无修饰符:包访问权限
public:接口访问权限
private:除了包含改成员的类外,其他任何类都无法访问这个成员。
protected:继承访问权限
访问权限的控制常被称为是具体实现的隐藏。
把数据和方法包装进类中,以及具体实现的隐藏,常共同被称作是封装。其结果是一个同时带有特征和行为的数据类型