java中的静态域到底在类的定义中扮演了一个怎样的角色?

来源:百度知道 编辑:UC知道 时间:2024/06/03 18:42:03
比方说定义了一个数据域
public static int anumber;
又是public又是static,怎么理解?

静态的域(数据成员)、静态的方法都是属于类一级的。
什么是类呢?把一些对象共有特征(属性或者数据成员)和行为(方法)抽象归纳起来,定义一下,取个名字,这就是类的基本含义了。既然是所有这一类对象共有东东,为什么非要创建对象才能调用了,麻烦哦,于是JAVA直接用(类名.方法)、(类名.数据成员)的形式就可以调用。也就是大家常说的,静态域相当于C语言的全局变量.既然加了static的变量是类一级数据成员,有什么理由放在一个方法里面。方法里面的应该是局部的只有本方法才会用的,在方法里面声明一个类一级的数据成员有何意义了,相反,对以后代码的查错和再读都不利。所以JAVA不允许这样做
要提醒一下,不仅静成方法中不能声明静态数据成员,就算不是静态方法,其中照样不能声明静态数据成员。道理是一样的

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变量
}
}

静态类也就是在别的地方不能使用,不能在