首页 > 编程语言 >Java 变量一定要初始化吗?

Java 变量一定要初始化吗?

时间:2023-03-06 20:15:09浏览次数:55  
标签:初始化 Java 变量 int 初始值 System println out

1. 问题

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

2. 解答

  • 不一定。

a. 变量作为局部变量

  • 变量作为局部变量时,如果不对其赋值,又要使用它,那就必须得初始化,否则报错。
    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 属性在类加载,也就是第一次用到这个类的时候初始化,对于之后的实例的创建,不再次进行初始化。

    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. 变量作为方法参数

    • 本质上跟第一种是一样的,都是方法中的局部变量。虽然不需要初始化,但是传入的值必须是被初始化过的,否则报错。 
    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

标签:初始化,Java,变量,int,初始值,System,println,out
From: https://www.cnblogs.com/yitongtianxia666/p/17185194.html

相关文章

  • Java实验-Swing 网络聊天室
    实验要求:综合Swing界面、多线程和Java的网络通信功能,实现仿QQ聊天:(1)界面设计如下:(2)要求在服务器端利用多线程响应客户端请求;//服务线程(内部类),用于处理客户端的服务线......
  • 一次Java服务内存过高的分析过程
    现象年前,收到了短信报警,显示A服务的某台机器内存过高,超过80%如上图所示,内存会阶段性增加。奇怪的是,十多台机器中只有这一台有这个问题堆内内存分析最先怀疑是内存泄漏......
  • 解决 IntelliJ IDEA 2019.2.3 java 工程运行中文乱码问题
    前言java语言的语法类似于C++,目前接触的开发环境:eclipse与IntelliJIDEA,AndroidStudio应该跟IntelliJIDEA很类似虽然之前改改AndroidAPK,了解了一些java开发相关的东......
  • Java应用【XV】使用Java中的TensorFlow来构建和训练机器学习模型
    如果您觉得本博客的内容对您有所帮助或启发,请关注我的博客,以便第一时间获取最新技术文章和教程。同时,也欢迎您在评论区留言,分享想法和建议。谢谢支持!一、引言1.1TensorFlow......
  • Linux学习记录(五):环境变量
    Linux系统修改环境变量PATH一般将bin文件夹添加至PATH中,比如ffmpeg/conda等LD_LIBRARY_PATH可执行文件运行时链接库路径只在当前终端有效,终端export(对某一用户)......
  • typescript 解决变量多类型访问属性报错--工作随记
    一个变量类型允许是多个类型,如果访问某个类型的属性,编辑器会直接提示错误比如变量tuple可能为string或number类型,如果直接访问tuple.toFixedconstmixedTupleTypeA......
  • Java知识脉络图
    吾心安处即吾乡。吾乡何处不可眠1.Java基础全程脉络图2.本章专题与脉络......
  • Java开发环境安装JDK以及概念
    1、JDK、JRE、JVM概念JDK:JavaDevelopmentKit(Java开发者工具)JRE:JavaRuntimeEnvironment(Java运行时环境)JVM:JavaVirtualMachine(Java虚拟机)JDK(Java开发者工具)......
  • JavaScript对象及面向对象基础(对象、构造函数、原型对象、继承、原型链、借用构造函数
    JavaScript是一种描述性语言,是一种基于对象和事件驱动的,具有安全性能的脚本语言。JavaScript语言是通过一种叫做“原型”的方式来实现面向对象编程的。一、对象(1)内置对象Str......
  • 【Java】先return还是先finally
    之前调试只发现有的方法执行完return语句后再执行finally,但是没有细究最近debug代码的时候发现,不同返回类型的方法,return和finally执行顺序竟然不一样先看返回类型为void......