static关键字

目录

1.属性

2.方法

3.代码块

4.导入包

5.被final修饰的类没有子类(final是断子绝孙的修饰符)


1.属性

静态的都是属于类的,如果能使用类去调用这个变量说明该变量是静态的。

2.方法

static随类一起加载,非static随实例一起加载。

3.代码块

测试以下三块内容的加载在java中的加载顺序:

package com.oop.demo07;

public class Person {

    //代码块(匿名代码块)
    {
        System.out.println("匿名代码块");
    }

    //静态代码块
    static {
        System.out.println("静态代码块");
    }

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

    public static void main(String[] args) {
        Person person1 = new Person();
        
    }
    
}

结果显示:静态代码块最先执行,然后是匿名代码块,最后才是构造方法

再创建一个对象person2,看看执行情况:

package com.oop.demo07;

public class Person {

    //代码块(匿名代码块)
    {
        System.out.println("匿名代码块");
    }

    //静态代码块
    static {
        System.out.println("静态代码块");
    }

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

    public static void main(String[] args) {
        Person person1 = new Person();
        System.out.println("==================");
        Person person2 = new Person();
    }
    
}

结果显示:静态代码块只在第一次实例化的时候执行一次,而匿名代码块和构造方法每次都要执行。

匿名代码块可以用来赋初始值。

4.导入包

比如,想用Math类下面的方法random(),但是不想每次都通过Math.random()来调用

package com.oop.demo07;


public class Test {
    public static void main(String[] args) {
        System.out.println(Math.random()); 
    }
}

可以通过一次性导入包来解决:

import static java.lang.Math.random;

package com.oop.demo07;

import static java.lang.Math.random;

public class Test {
    public static void main(String[] args) {
        System.out.println(random()); //直接 random()调用
    }
}

5.被final修饰的类没有子类(final是断子绝孙的修饰符)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值