我知道这问题有点蠢,但由于我是刚从 C++ 转向 Java,不明白某些机制,所以还望各位不吝赐教。
问题如下:Java 核心卷I 3.4.2 中提到不能使用未初始化的变量,否则编译器就会报错。
但是类似先声明,再赋值的操作却能正常运行
int num;
num = 12345;
或许他指的 use 是方法调用吗?还是类似 println 这样的方法内部其实有些东西?有人可以原因或者可以给出一些有用的材料吗?谢谢:)
我知道这问题有点蠢,但由于我是刚从 C++ 转向 Java,不明白某些机制,所以还望各位不吝赐教。
问题如下:Java 核心卷I 3.4.2 中提到不能使用未初始化的变量,否则编译器就会报错。
但是类似先声明,再赋值的操作却能正常运行
int num;
num = 12345;
或许他指的 use 是方法调用吗?还是类似 println 这样的方法内部其实有些东西?有人可以原因或者可以给出一些有用的材料吗?谢谢:)
个人理解,如果有官网资料,欢迎指正。在声明的时候,必须为其确定一个初始状态。这起始贯穿于整个java之中,只是某地地方是由jvm完成的,所以用户才会产生误解。比如object类型(static,instance),是由jvm 添加初始化状态null。而基本类型,则没有办法确定其初始状态,因为用哪一个作为初始状态都有可能不符合人们的意愿。所以在申明是一定要指定状态,否则无法使用。这里的无法使用,就是指使用的意思,包括方法调用,自增,计算,等等。至于你的代码;int num; num = 123; 起始时jvm 在编译的时候进行了内联优化;int num =123; 所以才能正常运行。
15 回答11.6k 阅读✓ 已解决
6 回答2.3k 阅读
8 回答2.9k 阅读✓ 已解决
9 回答1.7k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
7 回答1.5k 阅读
3 回答1.6k 阅读✓ 已解决
就是“使用”的意思,想用必须有值,没值就没法用