zoukankan      html  css  js  c++  java
  • 从头认识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没有被初始化。


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


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

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

    目录


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

  • 相关阅读:
    BZOJ 1101 莫比乌斯函数+分块
    BZOJ 2045 容斥原理
    BZOJ 4636 (动态开节点)线段树
    BZOJ 2005 容斥原理
    BZOJ 2190 欧拉函数
    BZOJ 2818 欧拉函数
    BZOJ 3123 主席树 启发式合并
    812. Largest Triangle Area
    805. Split Array With Same Average
    794. Valid Tic-Tac-Toe State
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4944474.html
Copyright © 2011-2022 走看看