也称成员变量,体现了类的状态,而状态的改变由类体的方法实现。


静态属性。


域必须在类体中直接定义,不能包含在方法定义中。


域定义的格式如下:


     [修饰符]  类型名  域名;


注:其中修饰符部分是可选项,可以是关键字public、protected、private、final、static、transient和volatile的一个或多个组合;


       public、protected、private表示域的访问权限;


         final表示域为常量,无法改变;


         static说明定义的变量是静态变量;


         transient说明变量为一个临时的变量;


         volatile修饰的变量用在多线程程序中,用来说明备份变量。


静态域:


被static修饰的域成为 静态域(类域、类变量)


例如: static int n = 18;


静态域 是属于整个类的成员变量,存储在类的内存区的 公共存储单元 中。( 也就是说 任何该类的对象都可以访问它 ,而且访问它得到的都是 相同的值 , 如果某一个对象修改它的值,所有对象的值都会一起改变! )


注意:这里说的是静态域,静态域,用static修饰的静态域不要和其他域混淆!


而 没有被static修饰的域,在不同的对象中,都拥有独立的内存地址,也就是说每一个对象的域值都是不一样的!一定要和静态域相区别!


静态域可以用过 类名直接访问 ,也可以用对象来引用。


静态类的初始化器


静态类 不属于某个具体的对象,而是整个类的域 ,所以它的初始化通过 静态初始化器 来实现。


静态初始化器是由关键字static和一对大括号组成的复合语句,目的是对 类域 进行初始化。


静态初始化在所属类被加载到内存时进行。



静态类的初始化器和构造方法的区别:

  1. 静态初始化器只能对静态域进行初始化,它不能访问非静态域。
  2. 静态初始化器由关键字static和复合语句组成,静态类的初始值由程序确定好;
  3. 构造方法是一个特殊的方法,它有参数,程序运行时,可以从外部接收数据,将域初始化为不同的值。
  4. 静态初始化器是对类自身进行初始化;而构造方法是对对象进行初始化。
  5. 静态初始化器是在类加载入内存的时候,由系统自动调用进行的;而构造方法实在使用关键字new创建对象时,由系统自动执行,关键字new后面跟的是构造方法。


最终域:


用关键字final修饰的域称为 最终域 。


final修饰的域的取值在程序执行的过程中 将不会改变 。(final修饰的变量也如此一旦被赋值就无法被改变)


例子:"java.lang"包中定义的圆周率PI就是一个最终域。可以表示为“Math.PI”


最终域一般用static修饰,为静态最终域。


另:


    由final修饰的方法为最终方法:方法的功能确定,不能被子类中的相同方法覆盖,这样能保证方法实现的一致性。


    final修饰的类:该类为最终类,不能派生子类,它的内容、属性和方法实现固定不变,与类名形成稳定的映射关系,保证功能实现的准确性。


        常见的最终类:例如:System类和InetAddress类、Socket类等。