上QQ阅读APP看书,第一时间看更新
3.4 变量如何初始化
在C、C++、C#等语言中,都会提到变量的初始化,有关对象类型变量的初始化将在后面的章节详细讲述,这里将把基本类型变量的初始化作为本节的主要内容。
【实例3-11】基本类型变量的初始化工作,就是给变量赋值。为了能够更加清晰地看到变量如何初始化,以及初始化时需要注意的知识点,下面通过实例来演示。
01 //通过不同类型的数据的输出来查看变量如何初始化 02 //所有的变量都是全局变量 03 public class Var0 //定义一个Var0类 04 { 05 byte x; //定义全局变量x 06 short y; //定义全局变量y 07 int z; //定义全局变量z 08 long a; //定义全局变量a 09 float b; //定义全局变量b 10 double c; //定义全局变量c 11 char d; //定义全局变量d 12 boolean e; //定义全局变量e 13 public static void main(String[] args) //主方法 14 { 15 Var0 m=new Var0(); //创建一个对象m 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种数据类型。我们并没有为其设置初始值,第16~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 //定义一个Var1类 04 { 05 void printnumber() //定义一个printnumber方法 06 { 07 byte x; //定义局部变量x 08 short y; //定义局部变量y 09 int z; //定义局部变量z 10 long a; //定义局部变量a 11 float b; //定义局部变量b 12 double c; //定义局部变量c 13 char d; //定义局部变量d 14 boolean e; //定义局部变量e 15 } 16 public static void main(String[] args) //主方法 17 { 18 Var1 m=new Var1(); //创建对象m 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行在没有初始化这些变量的时候,在控制台输出这些变量,其实是不正确的。
【运行效果】这个程序段编译时就会报错,原因是所有局部变量都没有初始化。
从以上两段程序代码得出一个结果:全局变量可以不用进行初始化赋值工作,而局部变量必须要进行初始化赋值工作。