书中所说基本类型都有一个包装,举个例子int n=new integer(2) 等价于int n=2,但它们的类中却没有默认的构造器,即 int n=new integer() //error!!!
非法,一定要有初始值,但是我们平时声明一个值都是int n;//don't have to initiate it,though it is suggested.
不给初始值是可以的,为什么?
Java 包装类初始化问题
答案:2 悬赏:10 手机版
解决时间 2021-03-24 02:17
- 提问者网友:饥饿走向夜
- 2021-03-23 11:03
最佳答案
- 五星知识达人网友:你哪知我潦倒为你
- 2021-03-23 11:48
int n=new integer() //error!!!这样写报错的原因是因为没有无参的integer()方法
int n;你可以不给,这时只是声明了一个引用而已,但是不初始就使用他就会报错.
int n;你可以不给,这时只是声明了一个引用而已,但是不初始就使用他就会报错.
全部回答
- 1楼网友:爱难随人意
- 2021-03-23 13:23
jvm lazy load class 机制, 下列情况会初始化类
1、t is a class and an instance of t is created.
2、t is a class and a static method declared by t is invoked.
3、a static field declared by t is assigned.
4、a static field declared by t is used and the field is not a constant variable
references to compile-time constants must be resolved at compile time to a copy of the compile-time constant value, so uses of such a field never cause initialization.
你关心的问题:因满足第四条,故初始化类,因此会执行静态块
注意:不要与第三条混了,自己理解吧
~~
现在流行研究这些东西?? 真奇怪,实际中用的很少,几乎不会遇到这种东西
=====================
你没仔细看上面的条件,只想知道结果..........
第四条说的很明白了.........
t中声明了一个静态字段,当使用它时,但它的值不是常量时,会初始化类!!!!
~如果初始化类,则会执行静态块,会输出test2 was initialized
~如果不初始化类,则不会执行静态块,则不会输出test1 was initialized
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯