其他分享
首页 > 其他分享> > static关键字和代码块

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、局部代码块

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

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();
    }

运行结果:

 

标签:name,代码,StudentBean,public,关键字,static,age
来源: https://www.cnblogs.com/xjw12345/p/16379637.html