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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

如题  此处 static 修饰了 变量 tick
百度解释: 被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。
我理解在此处五个线程对tick 共同调用  是他们的共享变量  是否正确?求指教
public class piao extends Thread{
        private static int piao = 100;
        public void run(){
                while(true){
                        if(piao > 0){
                                System.out.println(Thread.currentThread().getName()+"...sale"+piao--);
                        }
                }
        }
}

public class test10 {
        public static void main(String[] args) {
                piao p1 = new piao();
                piao p2 = new piao();
                piao p3 = new piao();
                piao p4 = new piao();
                piao p5 = new piao();
               
                p1.start();
                p2.start();
                p3.start();
                p4.start();
                p5.start();
        }
}



12 个回复

倒序浏览
static在此处就是做一个数据共享,让5个线程都可以共享一个数据,这样才能出现多个窗口卖100张票的效果
回复 使用道具 举报
静态之后,就不会动态变化,可以这样理解么??
回复 使用道具 举报
大西洋 发表于 2015-5-22 20:26
静态之后,就不会动态变化,可以这样理解么??

应该不能这样说,但是这样理解的话应该是没有问题的
回复 使用道具 举报
466273082 发表于 2015-5-22 20:19
static在此处就是做一个数据共享,让5个线程都可以共享一个数据,这样才能出现多个窗口卖100张票的效果 ...

恩恩  那还有别的用处么?以前 没这么用过所以第一次看 很陌生
回复 使用道具 举报
流水0215 发表于 2015-5-22 20:36
应该不能这样说,但是这样理解的话应该是没有问题的

感谢大神 :D
回复 使用道具 举报
大西洋 发表于 2015-5-22 20:26
静态之后,就不会动态变化,可以这样理解么??

静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量, 例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。 对于自动变量,它属于动态存储方式。 但是也可以用static定义它为静态自动变量,或称静态局部变量,从而成为静态存储方式。 由此看来,一个变量可由static进行再说明,并改变其原有的存储方式。

对于你的理解
从百度的解释来说  只是存储方式改变了  没说 不能动态变化     还是可以调用的啊   不是不能用了
回复 使用道具 举报
流水0215 发表于 2015-5-22 20:36
应该不能这样说,但是这样理解的话应该是没有问题的

能详细说说么 ? 我不是很理解你们说的
回复 使用道具 举报
lucien_he 发表于 2015-5-22 20:46
能详细说说么 ? 我不是很理解你们说的

这个你查的百度已经比较详细了,自己可以好好思考一下。被static修饰的成员变量,就可以被类的所有实例所共享,用的时候直接使用即可,无需创建对象。
回复 使用道具 举报
就是每个对象都具备同一个方法
回复 使用道具 举报
static在这里你可以认为就是他们的共享数据
回复 使用道具 举报
芽儿    !!!!!!!!!!!!!!!!!!!!!!!!!!!
回复 使用道具 举报
用static的两种情形,一是,只想为某特定域分配单一存储空间,而不去考虑究竟要创建多少对象,甚至根本就不创建任何对象。二是,希望某个方法不与包含它的任何对象关联在一起。也就是,即使没有创建对象,也能够调用这个方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马