为什么Java中的局部变量必须要初始化?

如题所述

现在假如你是java语言的开发者,你已经将对象保存在了堆内存中,而将局部变量保存在了栈内存中,你会怎么做呢?

Java中的变量分为类变量,成员变量和局部变量,分别位于JVM的方法区、堆内存和栈内存中。类变量和成员变量都可以在类首次加载和类初始化时,给出默认值,但是局部变量就必须要在使用前赋值。

实际上,Java完全可以设计成局部变量不需要初始化,只要作者们高兴。事实上,就有这样的语言,比如C++。

当然,C++不强制必须初始化,不代表就不用初始化,实际上,C++开发者也都是建议对局部变量初始化,以防止出现野指针这类事情。

其实,不管是局部变量还是成员变量,都是必须要初始化的,那为什么成员变量会自动初始化?其实正是因为成员变量属于对象,而对象是保存在堆中的,所以jvm就在初始化类的时候把成员变量初始化呢,而如果我们在调用方法的时候,还要jvm去将局部变量也进行初始化,是不是对会影响到性能呢?因此,直接强制局部变量必须要初始化反而更好。

温馨提示:内容为网友见解,仅供参考
无其他回答

java里面局部变量使用前必须初始化,能给详细讲讲嘛?
成员变量会被系统默认初始化,局部变量没这功能,所以必须自己初始化。还要注意静态成员变量也没系统默认初始化,必须在初始化块或者定义时或者构造函数里进行手动初始化

为什么Java中的局部变量必须要初始化?
因此,直接强制局部变量必须要初始化反而更好。

Java中所有变量在使用前都初始化吗
1、java中有两种变量,局部变量和成员变量。成员变量就是定义在类中,方法外,全局的变量。局部变量使用前必须初始化,否则编译报错。成员变量可以不初始化,虚拟机会给他默认值。class test { \/\/定义成员变量bpublic static int b;public static void main(String[] args) {System.out.println("h...

JAVA局部变量尚未初始化是什么意思每次都说if(nian)这个不能用_百度知...
JAVA中的局部变量使用前需要进行初始化,也就是赋值,你在main方法中定义了连个变量,但是没有给它们赋值,所以就会报错,编译不通过;可以先赋值,也可以增加Scanner 从控制台进行接收

java中为什么要为类的属性初始化?
0L float 0.0f double 0.0d 2. 局部变量声明之后,Java虚拟机就不会自动给它初始化为默认值,因此局部变量的使用必须先经过显式的初始化。但是需要声明的是:对于只负责接收一个表达式的值的局部变量可以不初始化,参与运算和直接输出等其它情况的局部变量需要初始化。

java中为什么要为类的属性初始化
你好,初始化可以使类一产生对象就拥有自身的属性值。比如创建一个人初始化他的名字,年龄等。一创建人这个对象就拥有名字年龄等属性值。当然也可以不初始化,在需要的时候调用方法进行初始化。如果满意,请采纳,谢谢。

Java局部变量初始化,String类型为什么不用初始化就能使用?
局部变量String需要初始化!以下代码:public class Test { public static void main(String[] args) { String s;System.out.println(s);} } 这个代码直接报错,无法编译 你上面的代码没错是因为你在while循环里对s进行了初始化

Java 中变量不赋值使用就会出错,但是如果把一个变量封装到一个类中...
Java中的变量分为局部变量和全局变量,局部变量就是在方法中声明的变量,而全局变量就是在类中声明的变量,在java中有这么一条规则,声明在方法中的变量在使用时必须要初始化(注意这里是使用时,如果不使用的话,你也可以不赋值,但是一般变量声明了之后都是要使用的,所以你最好初始化),否则不能...

...XXX may not have been initialized”是什么意思
局部变量如果不初始化,里面的就是一些垃圾值。如果你再方法里用到了,有可能造成运行错误,这种错误很难找到。所以Java要求变量必须初始化,其中实例变量和类变量有默认的初始值。给变量一个初始化,是一个良好的编程习惯,而Java的编译器只不过做的极端一些,强制你养成良好的编程习惯。这个是有好处的。

java里面全局变量可以是null,局部变量不能为null?
可以的,你直接在声明变量的时候赋值为null就可以。public void method(){ string s = null;} 像这样不可以么?不赋值的话,局部变量不可以,全局变量因为考虑到你可能在构造方法中初始化,所以允许你先只声明不初始化。

相似回答
大家正在搜