• 中文
    • 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.4k
  • 十二zhangjia.io

    请登录之后再进行评论

    登录
  • 0
    打赏了5金币。
  • 单栏布局 侧栏位置: