JAVA当中变量什么时候需要初始化?

转载 2013年12月05日 21:01:51

转自:http://blog.163.com/shuzhen_an/blog/static/119399304200962334211324/

1. 对于类的成员变量,不管程序有没有显式的进行初始化,Java虚拟机都会先自动给它初始化为默认值。 

 默认值如下:
             Boolean      false
             Char           '\u0000'(null)
             byte            (byte)0
             short           (short)0
             int               0
             long            0L
             float            0.0f
             double        0.0d
2. 局部变量声明之后,Java虚拟机就不会自动给它初始化为默认值,因此局部变量的使用必须先经过显式的初始化。
      但是需要声明的是:对于只负责接收一个表达式的值的局部变量可以不初始化,参与运算和直接输出等其它情况的局部变量需要初始化。

通过下面这个测试可以看到JVM对哪些数据初始化,哪写数据不初始化:

public class TestStatic {
 static int x; //类的成员变量,JVM负责初始化
 static int method()
 {
    int y=0;  //此处必须自己初始化,它不属于类成员变量,是个method的局部变量,JVM不负责初始化

    return y;
 }
 public static void main(String[] args) {
     TestStatic as=new TestStatic();
     int z=0;  //此处必须自己初始化,它不属于类成员变量,是个主函数里的局部变量,JVM不负责初始化
     int aa=3; //此处aa参与了运算,所以必须初始化
     aa=aa+2;
     int a=1,b=2,max; //max只是负责接收表达式的值,不需要初始化
     max=a>b?2:1; 
     System.out.println(max); //1
     System.out.println(aa); //5
     System.out.println("z="+z); //z=0
     System.out.println("x="+as.x); //x=0  

    System.out.println("y="+as.method()); //y=0
 }

总结为一句话便是:
 类里定义的数据成员称为属性,属性可不赋初值,若不赋初值则JAVA会按上表为其添加默认值;方法里定义的数据成员称为变量,变量在参与运算之前必须赋初值。

相关文章推荐

Java的环境变量什么时候需要设置

1.在用MyEclipse开发的时不用配置环境变量,因为MyEclipse是个集成的IDE,之中指定了jre。环境变量配置与否和开发没有关系,环境变量是给成品用的。  2. 除非要在命令行下用jav...
  • sjf8013
  • sjf8013
  • 2012年06月26日 17:09
  • 419

什么时候进行java类的初始化

当java程序首次通过下面6中方式来使用某个类或接口时,系统就会初始化该类或接口。     (1)创建类的实例。为某个类创建实例的方式包括:使用new操作符来创建实例,通过反射来创建实例,通过反序列...

【Java基础之重写equals、hashCode和compareTo方法】什么时候需要重写重写equals方法?为什么重写equals方法,一定要重写HashCode方法?

1.何时需要重写equals() 当一个类有自己特有的“逻辑相等”概念(不同于对象身份的概念)。 2.设计equals() [1]使用instanceof操作符检查“实参是否为正确的类型”。 ...

了解Java的类装载器(static什么时候初始化)

我们本篇先了解类装载器的基础,重点说的是:static什么时候初始化** 下一篇我们就可以深入Java的类装载器,我们先看看有几种方法载入类。 一.想必大家都知道用new这个关键字:B.java...

C++讨厌的临时变量什么时候产生

作者:陈太汉 是的。我们讨厌产生临时变量,因为它要占用我们的内存,消耗我们的CPU时间,让我们的程序性能降低。但有时候它是必须的。 那讨厌的临时变量什么时候产生呢?产生临时变量的三种情况:一:以By ...

【华为上机试题C++】老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩.

老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩. 输入描述: 输入包括多组测试数据。 每组输入第一行是两个正整数N和M(0 ...

老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩. 输入描述:

老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩. 输入描述:输入包括多组测试数据。 每组输入第一行是两个正整数N和M(0 < N ...

老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩.

import java.util.Scanner; import java.util.ArrayList;public class Main { public static void main...

老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩.

输入描述: 输入包括多组测试数据。 每组输入第一行是两个正整数N和M(0 < N ...

java GC是在什么时候,对什么东西,做了什么事情?”

面试题目: 地球人都知道,Java有个东西叫垃圾收集器,它让创建的对象不需要像c/cpp那样delete、free掉,你能不能谈谈,GC是在什么时候,对什么东西,做了什么事情? 一.回答:什么时候...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JAVA当中变量什么时候需要初始化?
举报原因:
原因补充:

(最多只允许输入30个字)