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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 杨兴庭 于 2013-8-7 17:58 编辑

public class SellTicket extends Thread {
private static int tickets=1000;
public void run(){
  while(tickets>0){
   System.out.println(currentThread().getName()+"sell:"+tickets);
   tickets--;
  }
}
public static void main(String[] args) {
  SellTicket sellTicket = new SellTicket();
  SellTicket sellTicket2 = new SellTicket();
  SellTicket sellTicket3 = new SellTicket();
  sellTicket.start();
  sellTicket2.start();
  sellTicket3.start();
}
}
private static int tickets=1000; 为什么用静态能卖的票没有重复的 ?

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1 赞一个!

查看全部评分

2 个回复

正序浏览
通常情况下,类成员必须通过它的类的对象访问,但是可以创建这样一个成员,它能够被它自己使用,而不必引用特定的实例。在成员的声明前面加上关键字static(静态的)就能创建这样的成员。如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象。
声明为static的变量实质上就是全局变量。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共同拥有一个static变量。无论一个类生成了多少个对象,所有这些对象共同使用唯一一份静态的成员变量;一个对象对该静态成员变量进行了修改,其他对象的该静态成员变量的值也会随之发生变化。
Static基本规则:
(1)一个类的静态方法只能访问静态属性。
(2)一个类的静态方法不能直接调用非静态方法。
(3)如果访问权限允许,static属性和方法可以使用对象加’.’方式调用,当然也可以使用实例加’.’方式调用。
(4)静态方法中不存在当前对象,所以不能使用this,当然也不能使用super。
(5)静态方法不能被非静态方法覆盖。
(6)构造方法不允许被声明为static的。

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
静态的一个特点,也是优点,就是能被多个对象共享这个数据  

如果不加静态 就是每个对象中都一个ticket这么一个变量

加了静态,这个变量就会放入静态区中,被这个类的多个对象所共享,
比如a对象修改了ticket的值,在b对象中得到的ticket的值也会改变

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马