Java中关键字“static”以及代码块的详解

1.static

1.1静态成员变量

java中被static修饰的变量被称为静态成员变量

当我们的变量被static修饰以后

我们的变量就不在存储到对象里面,而是存放在方法区里面

这也就意味着静态成员是不属于某一个对象的,而是大家所共享的

静态成员的生命周期是随着在类里面创建所诞生的,随着类的销毁所销毁的

1.2静态方法

同样的我们的static也可以用来修饰方法,这样的方法被称为静态方法

我们在静态方法里面所使用的变量只能是静态成员变量

如果使用了非静态成员变量那么系统就会报错,如图

 我们不管在调用静态成员变量还是静态方法

最好都是使用 类名.**** 的方式来调用,因为这两者都是属于类的,而不是属于某一个变量的

2.代码块

 代码块的定义方式是 { } 内直接写代码,代码块的作用是在类里面给成员变量进行赋值

这又分为静态代码块和实例代码块

这两者的区别就是一个给成员变量赋值,一个给静态成员变量赋值

2.1静态代码块

静态代码块是给静态成员变量赋值的,定义方法如下

    static{  
    a = 10;    
    b = 20; 
}

在java里面无论在main函数里面开辟多少个新的对象

静态代码块只会调用一次,这也就意味着静态代码块是类的属性

在JVM加载类的时候就给静态代码块开辟了一块空间

我们可以用代码来演示

public class Test {
    public static String name;

    static{
        System.out.println("静态代码块");
    }
}
class Student {
    public static void main(String[] args) {
        Test.name = "kom";
    }
}

最后的运行结果如下

  

可以看到我们调用了类里面的成员却能打印出来静态代码块

充分说明静态代码块是类的属性

2.2实例代码块 

实例代码块是给成员变量进行赋值的,定义方法如下

{  
    a = 10;    
    b = 20; 
}

实例代码块在创建新的对象时才会被执行

关于他们的执行顺序我们可以用代码来演示一遍

class Student{
    Student(){
        System.out.println("这是构造方法");
    }
    
    {
        System.out.println("这是实例代码块");
    }

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

public class Test {
    public static void main(String[] args) {
        Student student = new Student();
    }
}

最后的运行结果如下

这可以充分说明代码块和构造方法的执行顺序 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值