类成员变量初始赋值有什么意义么?
发布网友
发布时间: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一行去掉呢?
类成员变量初始赋值有什么意义么?
表达有点乱,求大神解释!!!创建类的实例时,系统自动分配内存空间,设置默认值,然后,为成员变量指定初始化(如果有的话)。class test{ int a;} 像这样,在程序中实例化并输出会输出 a 为 0,因为默认值的问题,如果像这样 class test{ int a =1;} 因为有初始化所以输出为a 为1。总之当...
java定义变量为什么要初赋值为null
JAVA的成员变量在类编译时,如果没有显示的给值,编译时会给加上默认值(0、false、null等),这也是跟C,C++的编译上的不同,但局部变量就不会(这个JDK的版本有关系,后面的版本应该不加=NULL,也没关系),这主要是跟编译的规则有关系.至于为什么要这样写,这主要是考虑到代码的移值和兼容吧.也...
java中对成员变量的初始化一定要用构造函数吗?可以直接对成员变量赋初...
可以直接赋值的,在构造里写只不过是为了方便,因为使用一个类的时候通常都要先new出该类的实例在构造里赋值,这样在new这个类的实例的时候成员变量就已经被初始化了。方便使用而已。
变量的赋值和初始化有什么区别
赋初值一般而言是指逻辑意义上的初始化。在C语言中,由于初始化的语法是“=”后加初值,所以“赋初值”基本上就是指语法上的初始化。不过随着语言的发展,“赋初值”的意义发生了扩大。对有构造语义但又允许不初始化而不产生编译错误的程序设计语言而言,两者有些微妙的差别。例如C++的构造函数中,用若...
关于C++的初始化与赋值
确实是这个样子的.不过所谓初始化毕竟本身也可以理解为在变量使用之前进行适当的处理,所以在构造函数内用赋值来改变那些平常的变量可以认为是初始化.C++中事实上 =只能在变量声明时进行初始化,但是它的类特性偏偏又不允许在类体的成员变量声明中直接初始化(如果这样,代码本身就会非常不容易读),所以就创立...
c++中构造函数,初始化列表和直接赋值有什么区别吗?
(2) const成员或引用类型的成员。因为const对象或引用类型只能初始化,不能对他们赋值。还有一个赋值次数,效率上的区别,初始化参数列表在对象初始化时对成员变量赋值一次,构造函数内直接赋值,对成员变量赋值两次,一次是对象构造是用默认值进行赋值,第二次是调用构造函数赋值 ...
初始化和赋值有什么区别
说明:赋值操作是在两个已经存在的对象间进行的,而初始化是要创建一个新的对象,并且其初值来源于另一个已存在的对象。编译器会区别这两种情况,赋值的时候调用重载的赋值运算符,初始化的时候调用拷贝构造函数。如果类中没有拷贝构造函数,则编译器会提供一个默认的。这个默认的拷贝构造函数只是简单地...
定义,初始化,赋值的区别
1.定义需要分配存储空间 2.初始化是定义变量时候赋给变量的值;3.赋值是以后用到该变量,赋给该变量新的值;定义是在内存中确定变量的位置、大小。初始化是定义变量时候赋给变量的值(从无到有).赋值是以后用到该变量,赋给该变量新的值.int i;//定义 int i=9;初始化 i= 7;// 赋值 ...
C语言中变量初始化与赋初值有什么不同?
所谓初始化,就是指系统(程序)起始状态时,各种参数(变量)应该取什么样的值,因为系统在reset时,内存数据可能不定,所以需要在程序开始时进行初始化(变量赋值,控制寄存器赋值配置等)。赋初值一般指定义一个变量的同时就赋值。其实,“变量初始化”和“赋初值”只是2种说法,目的都差不多,不必太“...
c++ vs2019告警始终初始化成员变量是什么意思?
就是说你类的构造函数里面要把类的成员变量作下初始化赋值,否则,成员变量可能会处在非初始化的状态(可能是任意值,依据当时所指向的内存地址而定)。参看下面的图示:未初始化成员的代码 初始化了成员的代码。请采纳,谢谢!