ThinkingInJava第五章初始化和清理

忘记初始化:变量使用时出问题

清理:内存被耗尽

构造器:创建对象时传入参数,为类中的数据初始化变量。(无返回值和返回值类型,与类名相同),创建了某种构造器,那么只能创建以那些构造器方式创建对象。

 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类的数据和单个字符

猜你喜欢

转载自www.cnblogs.com/dajingyu/p/9499384.html
今日推荐