java 8种基本数据类型的默认值

Myth丶恋晨 2021-09-27 14:44 506阅读 0赞

8种基本数据类型(primitive type)在只做了声明,而未被初始化的时候,他们的默认值

8种基本数据类型分别是:byte,short,int,long,(四种整型)

  1. char()
  2. floatdouble(两种浮点型)
  3. boolean(一种用于 表示 真假的类型)

他们的默认值可以用用下代码测试:
PrimitiveType.java

  1. public class PrimitiveType{
  2. boolean t;
  3. char c;
  4. byte b;
  5. short s;
  6. int i;
  7. long l;
  8. float f;
  9. double d;
  10. void print(){
  11. System.out.println("boolean "+t);
  12. System.out.println("char "+c);
  13. System.out.println("byte "+b);
  14. System.out.println("short "+s);
  15. System.out.println("int "+i);
  16. System.out.println("long "+l);
  17. System.out.println("float "+f);
  18. System.out.println("double "+d);
  19. }
  20. public static void main(String args[]){
  21. PrimitiveType pt=new PrimitiveType();
  22. pt.print();
  23. }
  24. }
  25. 得出的结果为:
  26. byte:0
  27. short:0
  28. int:0
  29. long:0
  30. char: _
  31. float:0.0
  32. double:0.0
  33. boolean: false

除了这8种基本类型以外的变量(比如String,基本类型的数组),他们的默认值都是 null

××××××××××××××××××××××××××××××××××

各种变量(无论是基本的变量,还是其他对象类型的变量,数组类型的变量)

他们 在 没有被 显示初始化 的时候,jdk 都会自动赋予 默认值 给他们,

只不过要注意的是 全局变量 和 局部变量的 不同之处:

当 全局变量 没有被显示初始化,jdk会自动赋予 默认值给他,并且 ,当你 在其他地方引用 该变量的时候,编译器是不会报错的。

而局部变量 在没有被显示初始化情况下,jdk 同样也会自动 赋予他默认值,可不同之处就在于 ,你无法引用他,因为编译器会在 你要引用的位置报错。

这就是JDK的规定。

所以 局部变量 在声明的时候,最好直接 显示初始化他。

可以尝试将 上面的代码 改成 以下的,看看问题 是怎么出现的。

  1. public class PrimitiveType{
  2. public static void main(String args[]){
  3. boolean t;
  4. char c;
  5. byte b;
  6. short s;
  7. int i;
  8. long l;
  9. float f;
  10. double d;
  11. System.out.println("boolean "+t);
  12. System.out.println("char "+c);
  13. System.out.println("byte "+b);
  14. System.out.println("short "+s);
  15. System.out.println("int "+i);
  16. System.out.println("long "+l);
  17. System.out.println("float "+f);
  18. System.out.println("double "+d);
  19. }
  20. }

运行该代码,jdk的编译器就会报错(eclipse里的错误提示信息)。

  1. java.lang.Error: Unresolved compilation problems:
  2. The local variable t may not have been initialized
  3. The local variable c may not have been initialized
  4. The local variable b may not have been initialized
  5. The local variable s may not have been initialized
  6. The local variable i may not have been initialized
  7. The local variable l may not have been initialized
  8. The local variable f may not have been initialized
  9. The local variable d may not have been initialized

所以,并不是象某些书上说的 “赋给 变量的 默认初始值在所有的情况下都适用”,至少在 sun 的java 运行环境 jdk 里,就不是都适用的。

最后,为了使 java 项目在哪里都可以成功运行,最好将所有需要用到的变量 都进行 显示初始化。

转自:java 8种基本数据类型的默认值

发表评论

表情:
评论列表 (有 0 条评论,506人围观)

还没有评论,来说两句吧...

相关阅读