Java 变量一定要初始化吗?

1. 问题

  • Java 中,变量一定要初始化吗?

2. 解答

  • 不一定。

a. 变量作为局部变量

  • 变量作为局部变量时,如果不对其赋值,又要使用它,那就必须得初始化,否则报错。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class Test {
     
        public static void main(String[] args) {
            int[] a;
            int i;
            System.out.println(a);
            System.out.println(i);
        }
    }

    b. 变量作为类的属性
    变量作为类的属性(值域)没有初始化时,JVM 会自动把它初始化为该类型变量的默认初始值。int 默认初始值为 0,float 默认初始值为 0.0f,long 默认初始值为 0,double 默认初始值为 0.0,boolean 默认初始值为 false,char 默认初始值为 0(ASCII 码),所有对象(包括数组)默认初始值为 null。
    对于不同的类属性,static 属性与 instance 属性,初始化的时机是不同的:
    instance 属性在创建实例时初始化;
    static 属性在类加载,也就是第一次用到这个类的时候初始化,对于之后的实例的创建,不再次进行初始化。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class Test {
        int[] a;
        int i;
        static int[] sa;
        static int si;
         
        public static void main(String[] args) {
            System.out.println(new Test().a);
            System.out.println(new Test().i);
            System.out.println(sa);
            System.out.println(si);
        }
    }

      

    c. 变量作为方法参数

    • 本质上跟第一种是一样的,都是方法中的局部变量。虽然不需要初始化,但是传入的值必须是被初始化过的,否则报错。 
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class Test {
        void f(int i, int[] a){
            System.out.println();
            System.out.println(a);
            System.out.println(i);
        }
         
        public static void main(String[] args) {
            int[] a;
            int i;
            new Test().f(i,a);
        }
    }

      

     

     原文链接:https://qwert.blog.csdn.net/article/details/104618382

posted @   一统天下。  阅读(529)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示