java中的static

java中的static

static只可以修饰变量和方法

静态变量和非静态变量

静态变量属于类,随着类的加载过程而加载,

非静态变量属于对象,随着对象的创建才加载!

public static void main(String[] args) {
    System.out.println(StaticTest.age);//静态变量可以直接通过类名+变量名的方式访问
    System.out.println(StaticTest.score);//报错:非静态变量不可以直接通过类名+变量名的方式访问
    StaticTest staticTest = new StaticTest();
    System.out.println(staticTest.score);//访问非静态变量需要先new一个对象,再通过对象名访问
    System.out.println(staticTest.age);//也可以通过对象名访问静态变量,但是不建议这样用
    


}

静态方法和非静态方法

静态方法与静态变量相同,都是随着类的加载而加载,非静态方法是随着对象的创建而加载,所以非静态方法可以调用静态方法,因为在调用非静态方法之前静态方法早已经加载完成,而静态方法不能调用非静态方法。

public class StaticTest {
    static int age;//静态变量
    int score;//非静态变量

    public static void main(String[] args) {


        s1();//报错,因为此方法还没有被加载
        s2();//通过,因为静态方法随着类的加载而加载
        StaticTest staticTest1 = new StaticTest();
        staticTest1.s1();//非静态方法加载成功


    }
//非静态方法
    public void s1(){

    }
//    静态方法
    public static void s2(){

    }

匿名代码块和静态代码块

**匿名代码块:**随着对象的创建而加载

**静态代码块:**随着类的加载而加载

image-20210709173318918

静态代码块、匿名代码块、构造方法的执行顺序

public class Test1 {
    public static void main(String[] args) {
        Test1 test1 = new Test1();
    }
    public Test1() {
        System.out.println("空参构造器被调用");//3:根据new对象时用的是空参构造器还是有参构造器来决定
    }
    static {
        System.out.println("静态代码块被调用");//1:只执行一次
    }

    {
        System.out.println("匿名代码块被调用");//2:在每次new对象的时候执行,在初始化构造器之前执行
    }
}

静态导入包

正常倒包只是倒到类:

import java.lang.Math;

而我们可以进一步导入指定的方法,需要在前边加上static修饰符

import static java.lang.Math.random;

package demoStatic;
import  java.lang.Math;
import  static java.lang.Math.random;
/**
 * @author sjhstart
 * @create 2021-07-09-18:16
 */
public class Test1 {
    public static void main(String[] args) {

        System.out.println(Math.random());//import  java.lang.Math;
        System.out.println(random());//import  static java.lang.Math.random;

    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值