Java 数据类型初始值
推荐Java基本数据类型和类型转换,讲解非常清晰的一篇博文: Java基本数据类型
基本数据类型和引用数据类型的区别
基本数据类型在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上;
引用数据类型在被创建时,首先要在栈上给其引用(句柄)分配一块内存,而对象的具体信息都存储在堆内存上,然后由栈上面的引用指向堆中对象的地址。
若基本数据类型作为类成员的时候,即使没有进行初始化。java也会给定默认的初始值。默认是如下所示:
| boolean | false |
| char | '/uoooo'(null) |
| byte | (byte)0 |
| short | (short)0 |
| int | 0 |
| long | 0L |
| float | 0.0f |
| double | 0.0d |
当变量作为作为类成员使用时,java才确保给定其初始值,防止程序运行时错误。但是这些初始值对你的程序来说是不正确的。所以必须明确指定初始值。然而以上所诉并不适用于“局部”变量(即:非某个类的字段)。因此在某个方法中定义int i;那么变量i可能得到的是任一值,不会被初始化为0。所以使用前先付一个适当的值。如果忘记了,java会在编译时返回一个错误。告诉你此变量没有初始化。在类中定义一个对象的引用时,如果没有给定初始化值,此引用会默认为null值。
也就是说在java中基本类型的默认值是0,引用类型会默认为null。
栗子:
- public class TestDefValue {
- private static boolean e1;
- private static byte e2;
- private static char e3;
- private static short e4;
- private static int e5;
- private static long e6;
- private static float e7;
- private static double e8;
- private static innerClass e9;
- private static String str;
- private static Integer i;
- public static void main(String[] args) {
- System.out.println(e1);
- System.out.println((int)e3);
- System.out.println((char)e2);
- System.out.println(e4);
- System.out.println(e5);
- System.out.println(e6);
- System.out.println(e7);
- System.out.println(e8);
- System.out.println(e9);
- System.out.println(str);
- System.out.println(i);
- System.out.println("--------------");
- }
- private class innerClass{}
- }
打印结果:
- false
- 0
- 0
- 0
- 0
- 0.0
- 0.0
- null
- null
- null
- --------------
参考材料

浙公网安备 33010602011771号