评论

收藏

[Java] Java未赋值变量的初始值解析(默认值)

编程语言 编程语言 发布于:2021-12-02 23:05 | 阅读数:567 | 评论:0

这篇文章主要介绍了Java未赋值变量的初始值(默认值),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
目录

  • Java未赋值变量的初始值(默认值)

    • 初始值(默认值)
    • 实例变量(非静态字段)
    • 类变量(静态字段)
    • 本地变量
    • 参数

  • 解决java未赋值变量的默认值问题

    • 如下所示


Java未赋值变量的初始值(默认值)

初始值(默认值)
参考:官方文档
Java程序中,任何变量必须初始化后才能使用。
以下为不同数据类型的默认值。
数据类型初始值byte0short0int0long0Lchar‘u0000'float0.0fdouble0booleanfalse所有引用类型null但并不是所有未初始化的变量都会赋默认值。
对应的面试编程题:以下代码会打印什么?
public static void main(String[] args) {
    int[] arr = new int[10];
    System.out.println(arr[0]);
 }
//打印: 0
public static void main(String[] args) {
    int a;
    System.out.println(a);
 }
//编译失败,提示“Error:(16, 28) java: 可能尚未初始化变量a”
下面根据不同的变量类型依次说明:

实例变量(非静态字段)
系统会初始化默认值
字段未被static修饰就是实例变量。在创建对象时,该变量会在分配内存阶段被赋予默认值,在执行new指令之后,被赋予程序定义的初始值。
public class Cat {
  // 实例变量
  int age;
}
类变量(静态字段)
系统会初始化默认值
字段被static修饰就是类变量。在类加载的准备阶段,该变量会被赋予默认值,在类加载的初始化阶段,会被赋予程序定义的初始值。
public class Cat {
  // 类变量
  static int age;
}
本地变量
系统不会初始化默认值
方法块中定义的变量为本地变量。该变量必须在代码中显示赋值,否则会提示编译错误。
public static void main(String[] args) {
  // 本地变量
  int a = 0;
}
参数
无需初始化默认值
参数很好理解,如下所示,args就是参数。参数又分实参和形参。参数的值在调用该方法时传入。
// args 就是参数
   public static void main(String[] args) {
   
   }
解决java未赋值变量的默认值问题

如下所示
package demo;
import java.util.Arrays;
public class demo {  
  /*类字段变量可以不赋初值不报错,其他变量一律要赋初值  
   * 不管程序有没有显示的初始化,Java 虚拟机都会先自动给它初始化为默认值。
   * 1、整数类型(byte、short、int、long)的基本类型变量的默认值为0。
   * 2、单精度浮点型(float)的基本类型变量的默认值为0.0f。
   * 3、双精度浮点型(double)的基本类型变量的默认值为0.0d。
   * 4、字符型(char)的基本类型变量的默认为 “/u0000”。
   * 5、布尔性的基本类型变量的默认值为 false。
   * 6、引用类型的变量是默认值为 null,如int[] a;。
   */
  public int  i1;  
  public static int i2;  
  public int[] a=new int[5];//见main()方法中的int[] b=new int[5];
  public static void main(String[] args) {  
    /* 方法中的局部变量,ava 虚拟机不会自动的为它初始化为默认值。
     * 因此对于局部变量,必须先经过显示的初始化,才能使用它。
     * 如果编译器确认一个局部变量在使用之前可能没有被初始化,编译器将报错。
     */
    //int i3;  
    int[] b=new int[5];//数组变量实例化后,如果没有显式为每个元素赋值,Java 就会把该数组的所有元素初始化为其相应类型的默认值
    System.out.println(new demo().i1); //输出0 
    System.out.println(i2);      //输出0
    //System.out.println(i3);      //会报错
    System.out.println(Arrays.toString(new demo().a));//此处为int型,默认输出{0,0,0,0,0}。  
  }  
}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持CodeAE代码之家
原文链接:https://blog.csdn.net/joy_pan/article/details/102719280

关注下面的标签,发现更多相似文章