首先我们都知道java中普通声明的变量在未初始化赋值的情况下无法直接使用,但是类中以static修饰的变量(即静态变量)会在编译期间由系统自动初始化并赋予默认值,所以在我们没有实例化的情况也可以使用。这是因为java中任何变量会在程序运行中通过实例化由系统动态的自动分配内存空间,而静态是在编译后便已分配了内存,并且随着类的存亡而存亡,只要类没有结束退出,静态变量所占有的内存就会一直存在。这么做的目的就是使得静态方法或者静态变量在没有实例化的情况下也可以被直接使用,那么我们接下来说一下我们这篇文章的主题,由static所修饰的变量初始值的问题。
//我们先依次定义八个基本数据类型的变量,再直接输出查看结果
public static byte by;
public static int num;
public static float fl;
public static long l;
public static short s;
public static double d;
public static char c;
public static boolean flag;
输出结果如下:
by = 0
num = 0
fl = 0.0
l = 0
s = 0
d = 0.0
c =
flag = false
其中char类型的c输出的是空,对应ASCII码中的0
接下来在做测试String类型和StringBuffer类型的数据默认赋值是null;
这些小细节中能看到静态变量的工作原理,其中int和String类型的静态默认赋值是java面试中经常能碰到的问题,希望能给大家提供帮助,谢谢!