gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Java未赋值变量的初始值解析(默认值)由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

初始值(默认值)

参考:官方文档 。

Java程序中,任何变量必须初始化后才能使用.

以下为不同数据类型的默认值.

数据类型 初始值
byte 0
short 0
int 0
long 0L
char ‘u0000'
float 0.0f
double 0
boolean false
所有引用类型 null

但并不是所有未初始化的变量都会赋默认值.

对应的面试编程题:以下代码会打印什么?

?
1
2
3
4
5
public static void main(String[] args) {
         int [] arr = new int [ 10 ];
         System.out.println(arr[ 0 ]);
  }
//打印: 0
?
1
2
3
4
5
public static void main(String[] args) {
         int a;
         System.out.println(a);
  }
//编译失败,提示“Error:(16, 28) java: 可能尚未初始化变量a”

下面根据不同的变量类型依次说明:

实例变量(非静态字段)

系统会初始化默认值 。

字段未被static修饰就是实例变量。在创建对象时,该变量会在分配内存阶段被赋予默认值,在执行new指令之后,被赋予程序定义的初始值.

?
1
2
3
4
public class Cat {
     // 实例变量
     int age;
}

类变量(静态字段)

系统会初始化默认值 。

字段被static修饰就是类变量。在类加载的准备阶段,该变量会被赋予默认值,在类加载的初始化阶段,会被赋予程序定义的初始值.

?
1
2
3
4
public class Cat {
     // 类变量
     static int age;
}

本地变量

系统不会初始化默认值 。

方法块中定义的变量为本地变量。该变量必须在代码中显示赋值,否则会提示编译错误.

?
1
2
3
4
public static void main(String[] args) {
     // 本地变量
     int a = 0 ;
}

参数

无需初始化默认值 。

参数很好理解,如下所示,args就是参数。参数又分实参和形参。参数的值在调用该方法时传入.

?
1
2
3
4
// args 就是参数
    public static void main(String[] args) {
   
    }

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

如下所示

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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}。 
    
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我.

原文链接:https://blog.csdn.net/joy_pan/article/details/102719280 。

最后此篇关于Java未赋值变量的初始值解析(默认值)的文章就讲到这里了,如果你想了解更多关于Java未赋值变量的初始值解析(默认值)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com