[b][color=brown]1、final最终的,由final修饰的变量,只能被初始化一次,可以在声明时初始化,也可以之后初始化,但只能初始化一次,所以由final修饰的变量是常量,不能再变了,注意如果类成员变量用final修饰,一种是声明时初始化,一种是在构造方法中初始化
注意:常量一般都用大写来表示如:PI,IP,SOCKET_NAME,MAX_SPEED[/color][/b]
例如:
[b][color=brown]2、static静态的,类级拥有的,由static修饰的成员变量(或者叫属性),在内存中只有一份,这个类所产生的所有实例,都公用这个一份,所以说一般,类的所有实例共同维护的属性,可以用static修饰,类名.static修饰的变量名,就可以来操作这个属性,而且内存中只维护一份,高效,省空间[/color][/b]
例子:
其他例子:
[b][color=brown]3、静态常量:
用static final同时修饰的变量,是静态常量,同时有final和static的特性,一般用来声明系统中只维护一份(static修饰)的不变的量(final修饰)[/color][/b]
例子:
[b][color=darkblue]用法:
直接通过---类名.变量名,来用
如:Dict.YES[/color][/b]
注意:常量一般都用大写来表示如:PI,IP,SOCKET_NAME,MAX_SPEED[/color][/b]
例如:
public class Test{
public static void main(String []args) {
A a = new A();
//a.a = 2;//这个报错,只能初始化一次
A b = new A();
//b.a = 2;//这个也报错
}
}
class A {
public final int a = 2;
}
[b][color=brown]2、static静态的,类级拥有的,由static修饰的成员变量(或者叫属性),在内存中只有一份,这个类所产生的所有实例,都公用这个一份,所以说一般,类的所有实例共同维护的属性,可以用static修饰,类名.static修饰的变量名,就可以来操作这个属性,而且内存中只维护一份,高效,省空间[/color][/b]
例子:
public class Test{
public static void main(String []args) {
Stu s1 = new Stu();
s1.s = 1;System.out.println(s1.s); //输出1
s1.s = 2;System.out.println(s1.s); //输出2
Stu s2 = new Stu();
s2.s = 3;
System.out.println(s2.s); //输出3
System.out.println(s1.s); //输出3 因为内存中所有的实例共同维护这一份,变量
System.out.println(Stu.s); //输出3 一般来说都直接通过类名来引用类中的静态变量
}
}
class Stu {
public static int s;
}
其他例子:
public class Test {
public static void main(String[] args) {
final int num = 3;
num = 4; //final修饰的是常量,最终变量,不能再赋值,必须在初始化的同时就赋值
}
}
[b][color=brown]3、静态常量:
用static final同时修饰的变量,是静态常量,同时有final和static的特性,一般用来声明系统中只维护一份(static修饰)的不变的量(final修饰)[/color][/b]
例子:
public interface Dict {
public static final int YES = 1;
}
[b][color=darkblue]用法:
直接通过---类名.变量名,来用
如:Dict.YES[/color][/b]