静态变量和实例变量的区别?
java类的成员变量有俩种:一种是被static关键字修饰的变量,叫类变量或者静态变量;另一种没有static修饰,为实例变量。
在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。
在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。
类变量也叫静态变量,也就是在变量前加了static 的变量;
实例变量也叫对象变量,即没加static 的变量;
区别在于:
类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象;
例:
public class A{
static int a = 0; //类变量
private int b = 0; //实力变量
}
public class B{
public void main (String[] args){
A a1 = new A();
A a2 = new A();
a1.a = 3; // 等同于 A.a = 3;
a1.b = 4 ;
System.out.println(a2.a); //结果为3
//类变量是针对所有对象的,所以a1改变a,a2的a也改变
System.out.println(a2.b); //结果为0
//实例只改变自身的,所以a1对象的b改变,不影响对象a2的b变量
}
}
静态变量,在内存中,是所有对象共享的,而实体变量是自己拥有自己的。实体变量需要通过类的实例对象来调用,而静态变量只需要类名就可以调用了。
第1题:
如果局部变量与实例变量名同名,那么如何在局部变量的作用域内引用实例变量()
A.无法引用,必须更名使两者名字不同
B.在实例变量前加关键字this访问实例变量
C.在实例变量前加关键字super
D.不影响,系统可以自己区分
第2题:
A.错误
B.正确
第3题:
第4题:
关于实例变量、类变量、实例方法和类方法,下面说法错误的是()
A.实例方法可以访问实例变量和类变量。
B.类方法不能访问实例变量。
C.实例变量和类变量都可以通过类名访问。
D.类方法只能访问类变量。
第5题:
下面有关静态方法的描述中,正确的是:
A、静态方法属于类,不属于实例
B、静态方法可以直接用类名调用
C、静态方法中,可以访问非静态的局部变量
D、静态方法中,可以访问静态的变量
第6题:
java 语言的 【 12 】 可以使用它所在类的静态成员变量和实例成员变量 , 也可以使用它所在方法中的局部变量。
第7题:
A.类的所有对象共享一个静态成员
B.表态成员属于类,而普通成员属于对象
C.静态成员变量可以被类或普通成员访问到,但它们访问的静态成员变量实际不相同
D.静态成员函数只能访问静态成员变量,不能访问普通成员变量
E.静态成员变量就是值不会再变的成员变量
第8题:
静态成员变量称为类变量,非静态成员变量称为实例变量,下列关于一个类的静态成员的描述中,不正确的是()
A.该类的对象共享其静态成员变量的值
B.静态成员变量可被该类的所有方法访问
C.该类的静态方法只能访问该类的静态成员变量
D.该类的静态数据成员变量的值不可修改
第9题:
Java语言的______可以使用它所在类的静态成员变量和实例成员变量,也可以使用,占所在方法中的局部变量。
第10题:
实例方法中不能引用静态变量。