(十七)、static关键字

来源:互联网 发布:淘宝美国直邮有假货吗 编辑:程序博客网 时间:2024/05/21 14:06

static关键字:

static

      1.表示静态,可以修饰属性和方法。      2.被static修饰的成员称之为静态方法或静态属性      3.不被static修饰的成员:实例方法,非静态方法      4.修饰属性时,表示这个属性是静态,这个属性是一种公共的资源,所有的对象所共有      5.当访问静态成员的时候,最标准的做法是不建议使用对象去访问静态属性      6.用静态的方式去访问静态成员:类名.静态成员       7.静态是随着类的加载而初始化,类第一次加载到内存时就完成了初始化      8.不要使用对象去访问静态属性      9.使用类名去访问静态方法,与对象没多大关系,属于类本身。      10.所有静态属性和方法,称之为:类属性和类方法      11.在实际中,很多工具类都是提供了很多静态方法供使用

注意

     静态方法不能访问非静态。     非静态可以访问静态

Demo:

Person类:

public class Person {    private int age;    private String name;    public static String country = "中国";    public Person() {        System.out.println("构造方法");    }    public Person(int age, String name) {    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public static void speak() {        System.out.println("静态方法" + Person.country);    }    public static void eat() {        System.out.println("吃");    }    static {        System.out.println("静态代码块");    }}

Test类:

public class Demo1 {    public static void main(String[] args) {        Person person1 = new Person(20, "志玲");        Person person2 = new Person(30, "凤姐");        Person person3 = new Person(20, "冠希");        Person.country = "大中国";        System.out.println(person1.country);        System.out.println(person2.country);        System.out.println(person3.country);        Person.speak();// 类名.方法        Person.eat();    }}

static修饰代码块,称之为静态代码块
构造代码块:实际没有使用价值

        {            System.out.println("代码块");        }        //先执行构造代码块,在执行构造方法。        static {            System.out.println("静态代码块");        }

注意:静态代码块,只有类第一次加载时才会调用,静态代码块只执行一次
在类加载时,对静态的属性做一些初始化

Demo:

Person类:

public class Person {    {        System.out.println("构造代码块");    }    static {        System.out.println("静态代码块");    }    public Person() {        System.out.println("构造方法");    }}

Test类:

//执行顺序public class Test {    public static void main(String[] args) {        Person p = new Person();        // 静态代码块,构造代码块,构造方法    }}

总结:

类里面都可以放哪些?

  • 1.成员(实例)变量(属性)
    属于对象的,需要对象才能访问

  • 2.静态变量(静态属性)
    不属于具体对象,使用静态方式访问:类.静态

  • 3.实例方法
    属于对象的,需要对象才能访问

  • 4.静态方法
    属于类,类方法。类名.方法
    静态能访问非静态,非静态能访问静态

  • 5.构造方法
    new创建对象事执行

  • 6.代码块:a.构造代码块:创建对象的时候调用,优先于构造方法
    b.静态代码块:类加载到内存时调用,静态代码块只执行一次

0 0
原创粉丝点击