• 从头认识java-4.6 成员的初始化


    这一章节我们来讨论一下成员的初始化。

    之前已经提到,如果是属性域,编译器会默认初始化,这一章节不再展开,这里我们需要注意的是局部变量。

    局部变量必须初始化,不然直接报错。

    下面是错误的代码:

    package com.ray.ch01;
    
    public class Test {
    
    	public static void main(String[] args) {
    		int i;
    		i++;
    	}
    }
    

    在i++这里编译器会提示没有初始化变量。


    1.指定变量初始化

    我们下面给出几种指定初始化的方法。

    (1)直接初始化,直接为属性域赋值

    package com.ray.ch01;
    
    public class Test {
    	private int id=0;
    }
    

    (2)通过方法返回

    package com.ray.ch01;
    
    public class Test {
    	private int id = initId();
    
    	private int initId() {
    		return 0;
    	}
    }
    

    package com.ray.ch01;
    
    public class Test {
    	private int id = initId(0);
    
    	private int initId(int id) {
    		return id;
    	}
    }
    

    (3)通过new来初始化

    package com.ray.ch01;
    
    public class Test {
    	private Book book = new Book();
    }
    
    class Book {
    }

    如果不创建book对象就直接使用,在运行时会抛异常。


    (4)注意执行顺序,保证作为参数的成员已经初始化

    正确的代码:

    package com.ray.ch01;
    
    public class Test {
    	private int id = initId();
    
    	private int initId() {
    		return 0;
    	}
    	
    	private String name = initName("name-"+id);
    
    	private String initName(String name) {
    		return name;
    	}
    
    }
    


    错误的代码:

    package com.ray.ch01;
    
    public class Test {
    	
    	private String name = initName("name-"+id);
    
    	private String initName(String name) {
    		return name;
    	}
    	
    	private int id = initId();
    
    	private int initId() {
    		return 0;
    	}
    	
    	
    
    }
    

    两个代码完全一样,只是调换了一下位置,在错误的代码里面,id就报错,id没有被初始化。


    总结:这一章节我们讨论了成员的初始化,特别是局部变量和初始化的几种方法。


    这一章节就到这里,谢谢。

    -----------------------------------

    目录


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Eclipse快捷键 10个最有用的快捷键
    Eclipse--Web项目中 .classpath、mymetadata、project文件的功用
    java.lang.IllegalStateException:Web app root system property already set to different value 错误原因及解决 Log4j
    验证位置时发生错误:“org.tigris.subversion.javahl.ClientException......
    隐藏控制台黑窗口
    APK伪加密
    格蠹汇编-01-blog
    static_cast、dynamic_cast、const_cast和reinterpret_cast总结
    CONTAINING_RECORD宏
    explicit关键字
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4944474.html
Copyright © 2020-2023  润新知