static关键字和代码块

static关键字

static修饰的变量叫做静态变量

复制代码
class StudentBean{
    private String name;
    private int age;

    static String country;

    public void show(){
        System.out.println("name="+name+"\t age="+age+"\t country="+country);
    }

    public StudentBean() {
    }

    public StudentBean(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
复制代码
复制代码
    public static void main(String[] args) {
        StudentBean s1 = new StudentBean("张三",14);
        StudentBean s2 = new StudentBean("李四",18);
        StudentBean s3 = new StudentBean("王五",22);
        StudentBean.country="中国";
        s1.show();
        s2.show();
        s3.show();
    }
复制代码

运行结果:

在学生类中定义一个静态变量country,在main方法中创建对象,通过类名.变量名的方式来给静态变量进行赋值。

被static修饰的静态变量,只能够被static修饰的静态方法访问

 

static的特点:

1、静态变量属于某个类,而不属于某个具体的对象

2、只有静态才能访问静态,而非静态变量不能够出现在静态方法中

3、访问静态成员的方式:
   1.类名.成员变量

   2.类名.成员方法

4、静态环境下不能出现this和super关键字

5、static能够修饰的成员(成员变量、成员方法、修饰内部类)

 

 

代码块

用“{ }”包裹的就是代码块

代码块分为三类:

1、局部代码块

  定义在类的方法内,作用:限定局部变量的作用域

1
2
3
4
5
6
public void show(){
        {
            System.out.println("局部代码块");
        }
        System.out.println("name="+name+"\t age="+age+"\t country="+country);
    }

2、静态代码块

  static修饰的代码块就称为静态代码块

  作用:一般用于初始阿虎静态成员变量

  静态代码快只会执行一次,在类加载的时候执行

    static {
        /**
         * 静态代码块
         */
        System.out.println("静态代码块执行了");
        country = "中国";
    }

3、构造代码块

  定义在类的成员变量的位置,用来抽取多个构造方法重复的代码,做成员变量的初始化操作,

会优先于构造方法执行

    {
        /**
         * 构造代码块  执行顺序在构造方法之前
         */
        System.out.println("构造代码块");
    }

 

代码块执行顺序:

静态代码块>构造代码块>构造方法

构造代码块和构造方法在类对象创建的时候执行。可以执行很多次

 

案例:

复制代码
class StudentBean{
    private String name;
    private int age;

    static String country;

    static {
        /**
         * 静态代码块
         */
        System.out.println("静态代码块执行了");
        country = "中国";
    }

    {
        /**
         * 构造代码块  执行顺序在构造方法之前
         */
        System.out.println("构造代码块");
    }

    public void show(){
        {
            System.out.println("局部代码块");
        }
        System.out.println("name="+name+"\t age="+age+"\t country="+country);
    }

    public StudentBean() {
    }

    public StudentBean(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
复制代码
    public static void main(String[] args) {
        StudentBean s1 = new StudentBean("张三",14);
        StudentBean s2 = new StudentBean("李四",18);
        StudentBean s3 = new StudentBean("王五",22);
        s1.show();
        s2.show();
        s3.show();
    }

运行结果:

 

posted @   xjw12345  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示