忘记初始化:变量使用时出问题
清理:内存被耗尽
构造器:创建对象时传入参数,为类中的数据初始化变量。(无返回值和返回值类型,与类名相同),创建了某种构造器,那么只能创建以那些构造器方式创建对象。
1 public class Rock { 2 int a; 3 int b; 4 5 Rock(int a){ 6 this.a=a; 7 System.out.println(a); 8 } 9 Rock(){ 10 System.out.println("no parameter"); 11 } 12 public static void main(String[] args) { 13 Rock r=new Rock(3); 14 System.out.println(r.b); 15 16 } 17 }
输出:3 0
我们并没有初始化b,也设置了无参构造器,那么b是如何被初始化的呢?
我们猜测:先执行可以通过默认的初始化过程,然后过我们创建的构造器初始化变量,这样可以确保所有的成员变量都可以被初始化。
构造器的重载,方法的重载,方法名一样,参数不同。
关于传参问题:基本类型的参数传递,f(int a);f(float a);当传入的数字不在int范围时,就会类型提升到float,选择的是较大范围的方法的重载参数,
例外的是char-int提升来存储。
默认构造器就像我们创建的无参构造器一样,但是当我们只要创建了一个构造器,默认构造器就不存在。
this:当前方法的对象的引用。1一般使用在方法体中2 在构造器中调用另外的构造器。
static:脱离对象而存在的,不存在this的全局属性关键字。
垃圾回收器原理?
成员变量初始化:方法体中的变量必须给定初始值,类中的有默认的值会被给予
public class Rock { int a; int b=4; void say() { int c=1; System.out.println(c); } Rock(int a,int b){ this.a=a; this.b=b; System.out.println(a); } Rock(){ System.out.println("no parameter"); } public static void main(String[] args) { Rock r=new Rock(3,5); r.say(); System.out.println(r.b); } }
输出:3 1 5
初始化顺序:成员变量被直接赋值>构造器初始化变量>方法方法赋值(方法只能被在后面创建对象之后才能使用,前面两个都是创建对象的过程)setValue(){}
静态变量的初始化先于非静态属性
静态块static{
}
int a[]={};
int a[]=new int[]{};
可变参数列表void f(int a;String ...tal)
enum?
Switch可以处理enum类的数据和单个字符