java变量默认值

Java 语言要求变量遵循先定义,再初始化,然后使用的规则。变量的初始化是自从变量定义以后,首次给它赋初值的过程。

一、成员变量

JVM将为类的instance和static变量赋上缺省值(默认值),包括数组array中的每一个元素--而不用再写初始化赋值语句。final变量没有默认值,必须在构造器结束前赋值。

默认值如下:

1、整数类型(byte、short、int、long)默认值为0。
2、单精度浮点型(float)默认值为0.0f。
3、双精度浮点型(double)默认值为0.0d。
4、字符型(char)默认为 “/u0000”。
5、布尔性默认值为 false。
6、引用类型默认值为 null。
7、数组引用类型默认值为 null。如果没有没有显示的为每个元素赋值,Java 就会把该数组的所有元素初始化为其相应类型的默认值。


这一缺省赋值过程是在对象的构造函数调用之前完成的,如果程序写了对instance和static变量的赋初值语句,且给的值就是JVM默认的值,那么无疑是画蛇添足,重复劳动了一遍。

情况一:

public class Foo {
   private int count=0;   //多余
   private static boolean dd=false; //多余
    public Foo()
    {
        super();
    }      
}
情况二:

public class Foo {
   private int count;
   private static boolean dd;
    public Foo()
    {
        super();
        count=0;   //多余
        dd=false;   //多余
        
    }      
}

二、局部变量

局部变量是没有缺省值的,必须手动初始化!

如果编译器确认一个局部变量在使用之前可能没有被初始化,编译器将报错。

注:如果局部变量没有被初始化,并且在方法中一直没有被使用,则编译和运行都会通过。

public void method(){

	int a;

	a++;//编译出错,变量a 必须初始化

	System.out.println(a);

}
public void method2(){

	int x = (int)(Math.random() * 100);

	int y;

	int z;

	if(x > 50){

		y = 9;

	}

	z = y + x;//编译出错,变量y可能没有被初始化

} 


  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值