static关键字

static关键字可修饰:

   1、属性
   2、方法
   3、代码块
   4、类

a)修饰属性

Java静态属性和类相关, 和具体的实例无关. 换句话说, 同一个类的不同实例共用同一个静态属性。

class TestDemo{
    public int a;
    public static int count;
}
public class Main{
    public static void main(String[] args) {
    TestDemo t1 = new TestDemo();
    t1.a++;
    TestDemo.count++;
    System.out.println(t1.a);
    System.out.println(TestDemo.count);
    System.out.println("============");
    TestDemo t2 = new TestDemo();
    t2.a++;
    TestDemo.count++;
    System.out.println(t2.a);
    System.out.println(TestDemo.count);
    }
}
输出结果为:
1
1
============
1
2

b)修饰方法

  • 静态方法属于类,而不属于类的对象。
  • 可以直接调用动态方法,无需创建类的实例。
  • 静态方法可以访问静态数据成员,可以更改静态数据成员的值。
  • 不可以访问非静态数据成员或调用非静态方法。
  • this和super两个关键字不能在静态上下文中使用。
  • main方法为static方法。
class TestDemo{
    public int a;
    public static int count;
    public static void change() {
    count = 100;
    //a = 10; error 不可以访问非静态数据成员
    }
}
public class Main{
    public static void main(String[] args) {
    TestDemo.change()//无需创建实例对象 就可以调用
    System.out.println(TestDemo.count);
    }
}
输出结果:
100

c)静态代码块

使用static定义的代码块。一般用于初始化静态成员属性。

  • 静态代码块不管生成多少个对象,其只会执行一次,且是最先执行的。
  • 执行顺序: 静态代码块->实例代码块删除线格式 (构造块)->构造函数

d)修饰类
1、获取静态内部类的对象:外部类类名.内部类类名 变量 = new 外部类类名.内部类类名();
2、静态内部类不能访问外部类的非静态数据成员, 如果非要访问,传入外部类对象的引用。
3、 静态内部类,不拥有外部类的this。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值