• 中文
    • English
  • 注册
  • 查看作者
    • Java中类变量和局部变量赋值和默认值的关系

      一.  前言

      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

      四.  参考资料

      山东省·济南市
    • 0
    • 1
    • 0
    • 1.3k
    • 十二zhangjia.io

      请登录之后再进行评论

      登录
    • 0
      打赏了5金币。
    • 赞助本站

      • 支付宝
      • 微信
      • QQ

      感谢一直支持本站的所有人!

      单栏布局 侧栏位置: