Java编程思想阅读笔记-第5章初始化与清理-练习

练习1:创建一个类,它包含一个未初始化的String引用,验证该引用被Java初始化成null(代码如下)

public class StringTest {
    String string;
    public StringTest(){
        System.out.println("string"+string);
    }

}

main函数代码如下:

public class RxJavaTest {

    public static void main(String ...args){
        StringTest stringTest=new StringTest();
    }

创建一个类,它包含一个在定义时就被初始化了的String域,以及另一个通过构造器初始化的String域。这两种方式有何差异?代码如下:

public class StringTest {
    String string;
    String str1=null;
    String str2="str2";
    String str3=str1;
    public StringTest(){
        System.out.println("string"+string);
    }

    public StringTest(String string){
        this.str1=string;
    }

}

public class RxJavaTest {
    public static void main(String ...args){
        byte a = 127;
        byte b = 127;
        //a = a + b;   //报
        // 错
        int c=(a+=b);

        /**
         * 分析:
         * 成员变量string 定义并未被初始化
         * 成员变量str1定义并初始化为null
         * 成员变量str2定义并初始化为"str2"
         *成员变量str3为null
         */
        StringTest stringTest1=new StringTest();

        StringTest stringTest2=new StringTest("测试String构造器");
        System.out.println("str1:"+stringTest2.str1);
        System.out.println("str2:"+stringTest2.str2);
        System.out.println("str3:"+stringTest2.str3);
    }
}

得出结论:声明成员变量未赋值 默认初始化为null,声明成员变量通过构造函数初始化默认会调用2次

猜你喜欢

转载自blog.csdn.net/weixin_33887443/article/details/87620098
今日推荐