static关键字

用static修饰的东西都会在最开始就执行,并且只执行一次,称之为静态

用static来修饰属性,该属性称为静态属性

用static来修饰方法,该方法称为静态方法

假如一个类中的一个方法是静态(static)的,那么在调用这个静态方法时,可以直接进行调用

假如一个类中的一个方法是非静态的,那么调用的时候只能通过new出一个具体的对象来进行调用

举例说明:

public class Person {
    private String name;//非静态变量
    private static int age;//静态变量

    //非静态方法
    public void testOne(){
        System.out.println("testOne!");
    }

    //静态方法
    public static void testTwo(){
        System.out.println("testTwo!");
    }

    public static void main(String[] args) {
        //age属性是静态的,和类同时创建了,所以可以直接使用
        System.out.println(age);
        //由于name属性是非静态的,所以只能创建对象的方式进行使用
        System.out.println(new Person().name);
		
        //同理:
        //由于testOne方法是非静态的,所以只能创建对象的方式进行调用
        new Person().testOne();
        //testTwo方法是静态的,和类同时创建了,所以可以直接进行调用
        testTwo();
    }
}

static测试

如果main()函数与静态方法不在同一个文件中,只需导入一个静态方法包就可以像示例中的testTwo();一样直接调用

import static com.oop.staticDemo.Person.testTwo;

补充示例

public class Test {

    //构造方法
    public Test() {
        System.out.println("构造方法!");
    }

    //代码块 - 可用来赋初值
    {
        System.out.println("匿名代码块!");
    }

    //静态代码块 - 同类一起产生,所以哪怕多次创建对象,也仅仅执行一次
    static {
        System.out.println("静态代码块!");
    }

    public static void main(String[] args) {
        System.out.println("第一次创建对象:");
        Test test1 = new Test();
        System.out.println("第二次创建对象:");
        Test test2 = new Test();
    }
}

运行的结果为:

static补充测试

其中可以看出,虽然代码的书写顺序为构造方法 匿名代码块 静态代码块

但是实际运行时,静态代码块是第一个生效的,甚至早于main方法中第一句System.out.println(“第一次创建对象:”);

这就是因为它与类是同时加载的,并且由于静态,只需要执行一次,在第二次创建对象时并没有被再次执行

而匿名代码块的执行时间也在构造方法之前!一般可以用来赋初值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值