Java核心技术卷I 3.4.2 变量初始化问题

我知道这问题有点蠢,但由于我是刚从 C++ 转向 Java,不明白某些机制,所以还望各位不吝赐教。

问题如下:Java 核心卷I 3.4.2 中提到不能使用未初始化的变量,否则编译器就会报错。

image.png

但是类似先声明,再赋值的操作却能正常运行

int num;
num = 12345;

或许他指的 use 是方法调用吗?还是类似 println 这样的方法内部其实有些东西?有人可以原因或者可以给出一些有用的材料吗?谢谢:)

回复
阅读 1.3k
2 个回答

就是“使用”的意思,想用必须有值,没值就没法用

个人理解,如果有官网资料,欢迎指正。在声明的时候,必须为其确定一个初始状态。这起始贯穿于整个java之中,只是某地地方是由jvm完成的,所以用户才会产生误解。比如object类型(static,instance),是由jvm 添加初始化状态null。而基本类型,则没有办法确定其初始状态,因为用哪一个作为初始状态都有可能不符合人们的意愿。所以在申明是一定要指定状态,否则无法使用。这里的无法使用,就是指使用的意思,包括方法调用,自增,计算,等等。至于你的代码;int num; num = 123; 起始时jvm 在编译的时候进行了内联优化;int num =123; 所以才能正常运行。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏