java static学习

原创,转载请注明来源sogeisetsu的博客园
static,在类里面定义公共的属性,它可以统一修改,并只占一个内存。从而达到方便修改和少占内存的目的
先放上代码,您可以先越过代码,看后面的讲解内容

class Boook {//随意定义一个类
    private int value;
    private String name;
    static String pub = "科大出版社";//static,在类里面定义公共的属性,它可以统一修改,并只占一个内存。从而达到方便修改和少占内存的目的
    public Boook(int value, String name) {
        this.name = name;
        this.value = value;
    }
    public String getInfo(){
        return "|-"+"价格:"+this.value+"	书名:"+this.name+"	出版社:"+this.pub;
    }
}

public class StaticStudy {
    public static void main(String[] args) {
        System.out.println("static学习");
        //调用Boook
        Boook a1 = new Boook(12, "数学");
        Boook a2 = new Boook(19, "国语");
        Boook a3 = new Boook(14, "英文");
        System.out.println(a1.getInfo());
        System.out.println(a2.getInfo());
        System.out.println(a3.getInfo());
        /*
        * |-价格:12	书名:数学	出版社:科大出版社
          |-价格:19	书名:国语	出版社:科大出版社
          |-价格:14	书名:英文	出版社:科大出版社*/
        //改变一个的公共属性,全都改变。
        a1.pub="青岛出版社";
        System.out.println(a1.getInfo());
        System.out.println(a2.getInfo());
        System.out.println(a3.getInfo());
        /*
        * |-价格:12	书名:数学	出版社:青岛出版社
          |-价格:19	书名:国语	出版社:青岛出版社
          |-价格:14	书名:英文	出版社:青岛出版社
        * */
        //建议用Boook.pub来修改
        Boook.pub="济南出版社";
        System.out.println(a1.getInfo());
        System.out.println(a2.getInfo());
        System.out.println(a3.getInfo());
        /*
        * |-价格:12	书名:数学	出版社:济南出版社
          |-价格:19	书名:国语	出版社:济南出版社
          |-价格:14	书名:英文	出版社:济南出版社
        * */
    }
}

先随意定义一个类,名称为Boook,功能为写书的价格,书名和出版社。

class Boook {//随意定义一个类
    private int value;
    private String name;
    static String pub = "科大出版社";//static,在类里面定义公共的属性,它可以统一修改,并只占一个内存。从而达到方便修改和少占内存的目的
    public Boook(int value, String name) {
        this.name = name;
        this.value = value;
    }
    public String getInfo(){
        return "|-"+"价格:"+this.value+"	书名:"+this.name+"	出版社:"+this.pub;
    }
}

书名和价格都是普通的属性,出版社是static属性,因为这些书都是一个出版社的,用static属性只占一个内存,可以节省内存。并且也易于修改。
附上ststic内存图
ststic内存图
先调用一个

		Boook a1 = new Boook(12, "数学");
        Boook a2 = new Boook(19, "国语");
        Boook a3 = new Boook(14, "英文");
        System.out.println(a1.getInfo());
        System.out.println(a2.getInfo());
        System.out.println(a3.getInfo());
        /*
        * |-价格:12	书名:数学	出版社:科大出版社
          |-价格:19	书名:国语	出版社:科大出版社
          |-价格:14	书名:英文	出版社:科大出版社*/

返回

		|-价格:12	书名:数学	出版社:科大出版社
          |-价格:19	书名:国语	出版社:科大出版社
          |-价格:14	书名:英文	出版社:科大出版社

修改出版社a1.pub="青岛出版社";,改变一个的公共属性,全都改变。
返回

		|-价格:12	书名:数学	出版社:青岛出版社
          |-价格:19	书名:国语	出版社:青岛出版社
          |-价格:14	书名:英文	出版社:青岛出版社

可以看到,修改一个对象的公共属性,那所有对象相应的公共属性都会改变
公共属性建议用类名.公共属性来修改。比如这个Boook类用Boook.pub来修改。Boook.pub="济南出版社";修改成济南出版社,来看一下返回值

		|-价格:12	书名:数学	出版社:济南出版社
          |-价格:19	书名:国语	出版社:济南出版社
          |-价格:14	书名:英文	出版社:济南出版社

static方法

static方法,可以直接通过类名称来调用
static方法只能调用static调用的属性或方法

class Boook {//随意定义一个类
    private int value;
    private String name;
    static String pub = "科大出版社";//static,在类里面定义公共的属性,它可以统一修改,并只占一个内存。从而达到方便修改和少占内存的目的
    public Boook(){

    }
    public Boook(int value, String name) {
        this.name = name;
        this.value = value;
    }
    public String getInfo(){
        return "|-"+"价格:"+this.value+"	书名:"+this.name+"	出版社:"+this.pub;
    }
    //static方法,可以直接通过类名称来调用
    //static方法只能调用static调用的属性或方法
    public static void setPub(String p){
        Boook.pub=p;//不要用this
    }
}

static方法,可以直接通过类名称来调用

Boook.setPub("光明出版社");//static方法,可以直接通过类名称来调用
        System.out.println(a1.getInfo());
        System.out.println(a2.getInfo());
        System.out.println(a3.getInfo());
        /*
        * |-价格:12	书名:数学	出版社:光明出版社
          |-价格:19	书名:国语	出版社:光明出版社
          |-价格:14	书名:英文	出版社:光明出版社
        * */
原文地址:https://www.cnblogs.com/sogeisetsu/p/11922830.html