一. 前言
Java已经许久未拾起,今天在复习过往笔记的时候,看到老师当初说过这样一句话“变量必须赋值后才能使用”,而自己印象中又隐约记得,基本数据类型的数据,都是有默认值,于是这两个概念在自己大脑中就发生了冲突:既然基本数据类型的变量都有默认值,那么为什么变量还必须赋值后才能使用呢?
二. 两者关系
抱着上面疑问在查阅了相关资料后,得出的答案如下:
-
在Java中,类的成员变量(也就是我们俗称的类变量)不用初始化即可直接使用,JVM会自动初始化,原始变量如int char short long byte初始化为0等等。
-
在方法中(也就是我们俗称的局部变量),C必须在函数开始处申明所有要使用的变量,而Java可在使用时再申明。但这里无论是C还是java都必须赋值后才能使用
三. 结论验证
首先我们在main方法中测试如果不赋值就使用该变量,果然编译报错:The local variable a may not have been initialized
public class Test { public static void main(String[] args) { int a; //变量必须赋值后才能使用 System.out.println(a + 10);//报错 } }
再验证在类中的成员变量
public class Test { private boolean a; private byte b; private char c; private short d; private int e; private long f; private float g; private double h; public static void main(String[] args) { Test t = new Test(); System.out.println("boolean 类型 默认值为" + t.a); System.out.println("byte 类型 默认值为" + t.b); System.out.println("char 类型 默认值为" + t.c); System.out.println("short 类型 默认值为" + t.d); System.out.println("int 类型 默认值为" + t.f); System.out.println("long 类型 默认值为" + t.g); System.out.println("float 类型 默认值为" + t.h); System.out.println("double 类型 默认值为" + t.h); } } 输出: boolean 类型 默认值为false byte 类型 默认值为0 char 类型 默认值为 short 类型 默认值为0 int 类型 默认值为0 long 类型 默认值为0.0 float 类型 默认值为0.0 double 类型 默认值为0.0
请登录之后再进行评论