默认值小陷阱

来源:互联网 发布:win10防火墙设置21端口 编辑:程序博客网 时间:2024/06/08 07:30

首先看一个小程序:

public class DefaultTest {public static void main(String[] args) {int num;System.out.println(num);}}

这个程序首先是编译通不过的,所以不能打印出想象中的0.  

分析num的初始值是0不假,但是这个num是main方法的局部变量,系统根本没有给它赋予默认值的机会。所以这是错误的。也就是说即使一个变量有初始值,那也得让系统有给它赋值的机会(比如,初始化的时候)。有默认的初始值和已经给变量赋值是两个不同的概念.Java为所有的成员变量提供了默认初始化,局部变量需要自己初始化.此处定义的num是局部变量,在编译时是不会被默认初始化的,必须得显示的进行初始化才行;如果是实例变量的话,就会在编译的时候进行默认的初始化,即为0。


所以要输出num的默认值0,正确的写法应可以是以下三种方式:

public class DefaultTest {public static void main(String[] args) {int num =0 ;System.out.println(num);}}

public class DefaultTest {int num;public static void main(String[] args) {DefaultTest test = new DefaultTest();System.out.println(test.num);}}
public class DefaultTest {static int num;public static void main(String[] args) {System.out.println(num);}}



0 0
原创粉丝点击