A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 641113495 中级黑马   /  2015-9-14 21:25  /  826 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Summarize_Static {
     public static void main(String[] args) {
        Phone p1 = new Phone();//创建对象p1,此时无参构造已经给p1的成员变量进行了默认初始化
        p1.show();
        p1.setBrand("OPPO");
        p1.setPrice(2500);//在此处已经给成员变量进行了赋值
        p1.show();
        Phone p2 = new Phone();   //不给p2中的price赋值的话,看看输出的结果
        p2.setBrand("三星");
        p2.show();
/*结果输出   品牌:三星,  价格:2500   ,结果还是有price,说明p2也调用了p1.setPrice赋给price的值,而静态
被存储的位置是方法区Phone.class区域的静态区,而对象是存储在堆中的
*/
        p2.setPrice(3000);
        p2.getPrice();
        p1.getPrice();
        System.out.println(p2.getPrice() + " ,  " + p1.getPrice());//结果输出3000,3000
//说明p1和p2共用的一个成员变量price
    }
}
/*
定义一个手机类
成员变量:品牌brand,价格price
空参,有参
setXXX方法和getXXX方法
*/
class Phone {
    private String brand;
    private static int price;
    public Phone() {}
    public Phone(String brand,int price) {
        this.brand = brand;
        this.price = price;
    }
    public void setBrand(String brand) {
        this.brand = brand;
    }
    public String getBrand() {
        return brand;
    }
    public void setPrice(int price) {
        this.price = price;
    }
    public int getPrice() {
        return price;
    }
    public void show() {
        System.out.println("品牌:" + brand + ",  价格:" + price);
    }
}
/*
static是个关键字,表示静态,它的作用是:如果一个类中的某个成员对象加了静态,那么不管通过这个类创建了多少
          对象,这个成员变量都是可以被调用的
static关键字的特点
a:随着类的加载而加载
b:优先于对象存在:随着字节码文件的加载而加载的,那时候还没有对象呢!
c:被类的所有对象共享
  * 举例:咱们班级的学生应该共用同一个班级编号。
  * 其实这个特点也是在告诉我们什么时候使用静态?
   * 如果某个成员变量是被所有对象共享的,那么它就应该定义为静态的。
  * 举例:
   * 饮水机(用静态修饰)
   * 水杯(不能用静态修饰)
   * 共性用静态,特性用非静态
d:可以通过类名调用
  * 其实它本身也可以通过对象名调用。
  * 推荐使用类名调用。
  * 静态修饰的内容一般我们称其为:与类相关的,类成员(静态变量:类变量,静态方法:类方法)
静态是随着类的加载而加载,而this是随着对象的创建而存在,所以静态比对象先出现,静态加载的时候可能还没有
对象呢,所以静态只能访问静态(调用的静态的方法中不能存在非静态的变量)
*/

1 个回复

倒序浏览
嗯,总结得不错,加油。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马