零基础学Java第2版
上QQ阅读APP看书,第一时间看更新

3.4 变量如何初始化

在C、C++、VB、PowerBuilder等语言中,都会提到变量的初始化,有关对象类型的变量初始化,将在后面的章节详细讲述,这里将把基本类型变量的初始化作为本节的主要内容。

【实例3.11】基本类型变量的初始化工作,就是给变量赋值。为了能够更加清晰地看到变量如何初始化,以及初始化时需要注意的知识点,下面通过实例来演示。

01   ///通过不同类型的数据的输出来查看变量如何初始化
02   ///所有的变量都是全局变量
03   public class var0
04   {
05       byte x;
06       short y;
07       int z;
08       long a;
09       float b;
10       double c;
11       char d;
12       boolean e;
13       public static void main(String[] args)
14       {
15            var0 m=new var0();
16            System.out.println(" 打印数据x="+m.x);
17            System.out.println(" 打印数据y="+m.y);
18            System.out.println(" 打印数据z="+m.z);
19            System.out.println(" 打印数据a="+m.a);
20            System.out.println(" 打印数据b="+m.b);
21            System.out.println(" 打印数据c="+m.c);
22            System.out.println(" 打印数据d="+m.d);
23            System.out.println(" 打印数据e="+m.e);
24       }
25   }

【代码说明】第5~12行定义了8个变量,它们分别对应8种数据类型。我们并没有为其设置初始值。第13~23行直接在控制台输出这些变量,读者可以在下面的运行效果中发现有的变量具备默认值,但有的变量什么也不输出。

【运行效果】

打印数据x=0
打印数据y=0
打印数据z=0
打印数据a=0
打印数据b=0.0
打印数据c=0.0
打印数据d=
打印数据e=false

【实例3.12】从以上例子可以看出,作为全局变量,无须初始化,系统自动给变量赋值。除了字符型数据被赋值为空,布尔型数据被赋值为false,其他一律赋值为0。下面再看一段程序代码。

01   ///通过不同类型的数据的输出来查看变量如何初始化
02   ///所有的变量都是局部变量
03   public class var1
04   {
05       void printnumber()
06       {
07            byte x;
08            short y;
09            int z;
10            long a;
11            float b;
12            double c;
13            char d;
14            boolean e;
15       }
16       public static void main(String[] args)
17       {
18            var1 m=new var1();
19            System.out.println(" 打印数据x="+m.x);
20            System.out.println(" 打印数据y="+m.y);
21            System.out.println(" 打印数据z="+m.z);
22            System.out.println(" 打印数据a="+m.a);
23            System.out.println(" 打印数据b="+m.b);
24            System.out.println(" 打印数据c="+m.c);
25            System.out.println(" 打印数据d="+m.d);
26            System.out.println(" 打印数据e="+m.e);
27       }
28   )

【代码说明】第7~14行定义了8个变量,但其被定义在printnumber()方法中,属于局部变量。第19~26行在没有初始化这些变量的时候,在控制台输出这些变量,其实是不正确的。

【运行效果】这个程序段编译时就会报错,原因是所有局部变量都没有初始化。

从以上两段程序代码得出一个结果:全局变量可以不用进行初始化赋值工作,而局部变量必须要进行初始化赋值工作。