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次

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容