Java - 为什么 Java 中全局变量不一定初始化,局部变量必须初始化?

简介: Java - 为什么 Java 中全局变量不一定初始化,局部变量必须初始化?


  1. 首先 Java 语言就是这么规定的。
  2. 然后为什么 Java 语言要这么规定呢?有什么内部机理吗?

可能的原因如下,当我们新建一个对象时,Java会在Heap中申请一块内存区域用以存放类的数据。而成员变量就是类的数据,也是放在这块内存区域中的。只需要JVM在申请内存的时候顺便把整块区域都置为零即可完成初始化,方便快捷。

而对于方法的局部变量,是在线程的Stack中,当然Stack他也可以帮我们初始化,不过有一个问题。对于有些局部变量,在方法的一开始是没有的,有些在循环中的局部变量是要反复的声明多次的。有些局部变量作用域结束后,另一个局部变量又会占用这个局部变量的位置。

那么初始化要放在何时呢?当然JVM可以帮我们初始化多次,不过那样或许会带来性能问题。

for (inti=0; i<10; i++) {
intn;
if (i%2==0) {
n=10;
    } else {
n=20;
    }
}

像是这个n,我们完全不用JVM帮我们初始化,如果每次循环他都帮我们初始化一次,那么是没有必要的。综上所述,对于局部变量,可能不帮我们初始化是一个不错的选择。(而且JVM实现起来也更容易!!!)

目录
相关文章
|
2月前
|
存储 Java
【Java基础面试六】、请介绍全局变量和局部变量的区别
这篇文章介绍了Java中成员变量(通常被称作全局变量)和局部变量的区别,包括它们的定义范围、默认初始值、存储位置和生命周期。
【Java基础面试六】、请介绍全局变量和局部变量的区别
|
2月前
|
安全 Java 关系型数据库
Java连接Mysql SSL初始化失败
Java连接Mysql SSL初始化失败
|
2月前
|
存储 Java
如何在 Java 中初始化二维 ArrayList
【8月更文挑战第23天】
64 1
|
2月前
|
存储 JavaScript Java
Java中未被初始化的字符串打印出“null”?
在Java中,未初始化的`String`变量默认值为`null`。打印此类变量时输出“null”,是因为`PrintStream`类中的`print`方法特别处理了`null`值,将其转换为字符串“null”。从JDK 17开始,`println`方法通过`String.valueOf`间接实现相同功能。当拼接包含`null`的字符串时,如`s1 + &quot;BLACK&quot;`,结果为“nullBLACK”,这是因为字符串构建过程中`StringBuilder`的`append`方法将`null`转换为“null”。
|
2月前
|
存储 Java 编译器
如何在 Java 中初始化对象 Arraylist?
【8月更文挑战第23天】
67 0
|
2月前
|
存储 Java 开发者
Java 中的线程局部变量是什么?
【8月更文挑战第21天】
40 0
|
2月前
|
Java Spring
Java SpringBoot Bean InitializingBean 项目初始化
Java SpringBoot Bean InitializingBean 项目初始化
43 0
|
2月前
|
Java
Java中 字符串,字符串数组,整型数组初始化
Java中 字符串,字符串数组,整型数组初始化
11 0
|
3月前
|
NoSQL Java Redis
软件开发常见流程之宝塔初始化安装环境配置,Lam前面不选,直接跳商城,在宝塔内点击软件商城,安Mysql5.7,安java项目管理器,安Ngnix最新版,安Redis
软件开发常见流程之宝塔初始化安装环境配置,Lam前面不选,直接跳商城,在宝塔内点击软件商城,安Mysql5.7,安java项目管理器,安Ngnix最新版,安Redis
|
3月前
|
存储 Java 容器
Java数组的初始化方法
Java数组的初始化方法