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没有被初始化。


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


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

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

    目录


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

  • 相关阅读:
    模块二:操作系统windows 7 的使用
    茶卡盐湖
    css元素居中指南
    新的CMS套站
    写响应式页面
    积累
    jquery方法整理
    积累 做网站添加的 所有动态效果
    产品中心有二级三级栏目。
    aspcms
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4944474.html
Copyright © 2011-2022 走看看