类成员变量初始赋值有什么意义么?
发布网友
发布时间:2022-04-25 23:43
我来回答
共5个回答
热心网友
时间:2023-10-18 11:36
有意义,不能去掉
因为你调用改了this.i,this就是找全局变量(或方法),如果你去掉了,那这一行会报错。
而你第一个输出的i是传进来的参数,与下面的不冲突,如果你分不清,可以换个名字,但实际上,bean里的set都是一样的,就是this来区分。
class Bean {
private String name;
public void setName(String name) {
this.name = name;
}
}
热心网友
时间:2023-10-18 11:37
当系统加载类或创建该类的实例时,系统自动为成员变量分配内存空间,设置默认值,然后,为成员变量指定初始值。但是,如下所示:
class test{
int a = b+1;
int b =1;
}提示错误!
执行顺序不是大致可以认为是这样么:
int a = 0;
int b = 0;
a = b+1;
b = 1;
(感觉大致就是这样子吧)
如果是这样的话上边当int a = b+1时b应该已经有默认值了,但为什么报错啊?
表达有点乱,求大神解释!!!
创建类的实例时,系统自动分配内存空间,设置默认值,然后,为成员变量指定初始化(如果有的话)。
class test{
int a;
}
像这样,在程序中实例化并输出会输出 a 为 0,因为默认值的问题,
如果像这样 class test{
int a =1;
}
因为有初始化所以输出为a 为1。
总之当成员变量分配内存后,应该是有默认值的,顺序应该是:
先
int a;
int b;(这里应该都在分配内存时指定默认值为0了)
然后 再执行初始化:
a = b+1;
b = 1;
就这样子吧比如下面程序是对的
class{
{
a = 1;
}
int a =2;
}
热心网友
时间:2023-10-18 11:37
java中,全局变量如果不给初始值,编译器是会默认赋值的,数字默认是0,对象默认是null等等...
我觉得你想问的是,这里声明的时候赋值有什么作用,因为不赋值也是可以的。
就我自己的体会,在一些属性是标记位的时候常常会这么做,比如标记一个状态的属性,status,有几种状态,1表示新插入,2表示已经处理,3表示删除了。可以看出1是默认状态码,每次都给status赋值为1很麻烦,所以就声明的时候顺便初始化为1,这样,new出来之后,不用再管这个属性了。
热心网友
时间:2023-10-18 11:38
变量首先需要被定义 然后才能对其操作 否则编译都无法通过
热心网友
时间:2023-10-18 11:39
去掉 i=9 的话 i是默认值0
xx函数中使用的 i 都是是入力的参数 i,
只有this.i 才是使用成员变量的追问如果把this一行去掉呢?