java 中static修饰变量的初始值

来源:互联网 发布:软件生命周期管理 编辑:程序博客网 时间:2024/05/02 04:42
public class StaticTest {        public static byte a1;            public static short a2;            public static int a3;            public static long a4;            public static char b;            public static double c;            public static float d;            public static boolean e;            public static String f;        public static Object g;            public static int[] a_h;            /**      * @param args      */      public static void main(String[] args) {          // TODO Auto-generated method stub            System.out.println("static byte a1------"+a1);          System.out.println("static short a2-----"+a2);          System.out.println("static int a3-------"+a3);          System.out.println("static long a4------"+a4);          System.out.println("sstatic char b------"+b);          System.out.println("static double c-----"+c);          System.out.println("sstatic float d-----"+d);          System.out.println("static boolean e----"+e);          System.out.println("static String f-----"+f);          System.out.println("static Object g-----"+g);          System.out.println("static int[] a_h-----"+a_h);      }    }  

大家都知道,static修饰的变量在类实例之前就已经分配内存,


结果:

static byte a1------0
static short a2-----0
static int a3-------0
static long a4------0
sstatic char b------

static double c-----0.0
sstatic float d-----0.0
static boolean e----false
static String f-----null
static Object g-----null
static int[] a_h-----null

若变量前无static修饰,并且没有对变量进行初始化,例如:

public class noStaticTest {        public byte a1=1;          /**      * @param args      */      public static void main(String[] args) {          // TODO Auto-generated method stub            System.out.println("static byte a1------"+a1);                }    }  

编译器会编译不通过:Cannot make a static reference to the non-static field a1

0 0
原创粉丝点击