关键字static

关键字static

1. 静态变量

静态变量:⼜称为类变量,也就是说这个变量属于类的,类所有的实例都共享静态变量,可以直接 通过类名来访问它。静态变量在内存中只存在⼀份。

实例变量:每创建⼀个实例就会产⽣⼀个实例变量,它与该实例同⽣共死。

public class A {
 private int x; // 实例变量
 private static int y; // 静态变量
}

2. 静态⽅法

静态⽅法在类加载的时候就存在了,它不依赖于任何实例。所以静态⽅法必须有实现,也就是说它不能 是抽象⽅法。

public abstract class A {
 public static void func1(){
 }
 // public abstract static void func2(); // Illegal combination of modifiers: 'abstract' and 'static'
}

只能访问所属类的静态字段和静态⽅法,⽅法中不能有 this 和 super 关键字,因为这两个关键字与具体对象关联。

public class A {
 private static int x;
 private int y;
 public static void func1(){
 int a = x;
 // int b = y; // Non-static field 'y' cannot be referenced from a
static context
 // int b = this.y; // 'A.this' cannot be referenced from a
static context
 }
}

3. 静态语句块

静态语句块在类初始化时运⾏⼀次。

public class A {
 static {
 System.out.println("123");
 }
 public static void main(String[] args) {
 A a1 = new A();
 A a2 = new A();
 }
}
123

4. 静态内部类

⾮静态内部类依赖于外部类的实例,也就是说需要先创建外部类实例,才能⽤这个实例去创建⾮静态内部类。⽽静态内部类不需要。

public class OuterClass {
 class InnerClass {
 }
 static class StaticInnerClass {
 }
 public static void main(String[] args) {
 // InnerClass innerClass = new InnerClass(); // 'OuterClass.this'cannot be referenced from a static context
 OuterClass outerClass = new OuterClass();
 InnerClass innerClass = outerClass.new InnerClass();
 StaticInnerClass staticInnerClass = new StaticInnerClass();
 }
}

静态内部类不能访问外部类的⾮静态的变量和⽅法。

5. 静态导包

在使⽤静态变量和⽅法时不⽤再指明 ClassName,从⽽简化代码,但可读性⼤⼤降低。

import static com.xxx.ClassName.*
在静态导入之前:
public class TestStatic {
public static void main(String[] args) {
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.toHexString(42));
 } }
在静态导入之后:
import static java.lang.System.out;
import static java.lang.Integer.*;

public class TestStaticImport {
public static void main(String[] args) {
out.println(MAX_VALUE);
out.println(toHexString(42));
} }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值