Java static关键字的功能
静态(static
)关键字功能:
- 变量(称为类变量)
- 方法(称为类方法)
- 代码块
- 嵌套类
静态方法注意事项:
静态方法有两个主要限制。它们分别是:
- 静态方法不能直接使用非静态数据成员或调用非静态方法
this
和super
两个关键字不能在静态上下文中使用
1. Java静态变量
当一个变量声明为static
,此变量则为静态变量
静态变量的优点:
- 可使程序存储器高效(节省内存)
例:静态变量
class testClass{
int keyId;
String info1;
static String info2 = "java265.com";
testClass(int i, String s) {
keyId = i;
info1 = s;
}
void printInfo() {
System.out.println(keyId + " " + info1+ " " + info2);
}
public static void main(String args[]) {
testClass s1 = new testClass(888, "java265.com");
testClass s2 = new testClass(999, "testJava");
s1.printInfo();
s2.printInfo();
}
}
不使用静态变量的计数器程序
创建一个qty 实例变量用于统计创建对象的个数,它在构造函数中执行递增。
class testClass{
int qty= 0;
testClass() {
qty++;
System.out.println(qty);
}
public static void main(String args[]) {
testClass c1 = new testClass();
testClass c2 = new testClass();
testClass c3 = new testClass();
}
}
-----运行以上代码,将输出以下信息----0
0
0
计数器静态变量的程序
如上所述,静态变量将只获取一次内存,如果任何对象更改静态变量的值,它将保留其值,所有实例均可访问同一变量值。
class testClass{
static int qty= 0;
testClass() {
qty++;
System.out.println(qty);
}
public static void main(String args[]) {
testClass c1 = new testClass();
testClass c2 = new testClass();
testClass c3 = new testClass();
}
}
----运行以上代码,将输出以下信息-----
1
2
3
2. Java静态方法
我们将类中的方法前面加上static关键字的方法称之为“静态方法”
静态方法注意事项:
- 静态方法属于类,而不属于类的对象
- 可以直接调用静态方法,而无需创建类的实例
- 静态方法可以访问静态数据成员,并可以更改静态数据成员的值
例:
class testClass{
int keyId;
String info1;
static String info2= "java265.com";
static void set() {
info2= "888";
}
testClass(int i, String s) {
keyId= i;
info1 = s;
}
void printInfo() {
System.out.println(keyId+ " " + info1+ " " + info2);
}
public static void main(String args[]) {
testClass.set();
testClass s1 = new testClass(888, "java265.com");
testClass s2 = new testClass(999, "test");
testClass s3 = new testClass(111, "other");
s1.printInfo();
s2.printInfo();
s3.printInfo();
}
}
3. Java静态块
Java中的静态块的功能说明:
- 用于初始化静态数据成员
- 它在类加载时在main方法之前执行
静态块的示例
class testClass{
static {
System.out.println("这是一个静态块");
}
public static void main(String args[]) {
System.out.println("Hello Java265.com");
}
}
-----以上代码,将输出以下结果-----
这是一个静态块
Hello Java265.com
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。