学习《java编程思想》笔记之初始化与清理
1、构造器,是一个在创建对象时被自动调用的特殊方法,用构造器来确保初始化。构造器是一种特殊类型的方法,因为它没有返回值。例:
class Rock(){
Rock(){//This is the constructor}
}
2、this可调用一个构造器,但却不能调用两个,此外,必须将构造器调用置于最起始处,否则编译器会报错。
public class Flower{
Flower(int petals){petalCount=petals;}
Flower(String ss){s=ss;}
Flower(String s,int petals){
this(petals);//调用构造器
//!this(s);//不能调用两个
this.s=s;
}
}
除构造器之外,编译器禁止在其他任何方法中调用构造器(即只能在构造器中调用构造器)。
3、在static方法的内部不能调用非静态方法,反过来倒是可以的,即在非静态方法中可调用static方法。
4、在类的内部,变量定义的先后顺序决定了初始化的顺序。即使变量定义散布于方法定义之间,它们仍旧会在任何方法(包括构造器)被调用之前得到初始化。
5、无论创建多少个对象,静态数据都只占用一份存储区域。有静态对象的要先初始化静态对象(如果它们尚未因前面的对象创建过程而被初始化),而后是“非静态”对象。
6、定义一个数组:int[] al;
在Java中可以将一个数组赋值给另一个数组,例:
int[] a1={1,2,3,4,5};
int[] a2;
a2=a1;
其实真正做的只是复制了一个引用,如下面演示:
int[] a1={1,2,3,4,5};
int[] a2;
a2=a1;//引用就是别名,a2和a1已经相同,只是名字不一样,所以a2变化,a1也跟着变化
for(int i=0;i<a2.length;i++)
a2[i]=a2[i]+1;
for(int i=0;i<a1.length;i++)
print(“a1[”+i+"]="+a1[i]);
输出结果为a1[0]=2,a1[1]=3,a1[2]=4,a1[3]=5;a1[4]=6