黑马程序员技术交流社区
标题:
售票static的问题
[打印本页]
作者:
余善航
时间:
2013-1-9 21:34
标题:
售票static的问题
//售票的小程序。
//并且是两个窗口同时售票。
class Ticket extends Thread
{
private static int ti=100;//为什么这儿加上static修饰符就不是“二百张票了”?????
Ticket()
{
super();
}
Ticket(String name)
{
super(name);
}
public void run()
{
while(true)
{
if(ti>0)
System.out.println(this.getName()+"run-----"+ti--);
}
}
}
public class Td
{
public static void main(String[] args)
{
Ticket t=new Ticket("one++++");
Ticket t1=new Ticket("two++++");
t.start();
t1.start();
}
}
作者:
罗利华
时间:
2013-1-9 22:20
private static int ti=100;
这句的意思是说:
定义了一个私有变量,而且是静态的,
它会存在于数据区内,是类的公用变量。
也就是说,此类的所有对象都可以改变它的值。
作者:
夏振博
时间:
2013-1-9 22:21
本帖最后由 arno942 于 2013-1-9 22:31 编辑
网速问题 ,重复回帖 ,这个作废
作者:
夏振博
时间:
2013-1-9 22:22
本帖最后由 arno942 于 2013-1-9 22:34 编辑
被static修饰的属性为静态属性,方法为静态方法,是随着类的加载而加载,只能加载一次,类死掉它就死,
理解的一挺就理解了,我在给你多说点
static属性,有没有对象,都是一份。
实例属性,没有对象,就没有实例属性,有1个对象就有一份实例属性,有100个对象,就有100份实例属性。
static方法:不能访问实例属性和实例方法,但可以访问静态属性和静态方法
实例方法:可以访问静态属性和静态方法。
public class DemoTest1 {
public static void main(String[] args) {
new Test();
new Test();
}
}
class Test {
{
System.out.println("无名块1");
}
P p1 = new P("p1");
{
System.out.println("无名块2");
}
P p2 = new P("p2");
{
System.out.println("无名块3");
}
static P p3 = new P("静态属性p1");
static {
System.out.println("静态块1");
}
static P p4 = new P("静态属性p2");
static {
System.out.println("静态块2");
}
public Test() {
System.out.println("构造器");
}
}
class P {
public P(String s) {
System.out.println(s);
}
}
// 结果可以看出静态的只能加载一次
/*
p3,块4,p4,块5,块1,p1,块2,p2,块3,构造器,块1,p1,块2,p2,块3,构造器
*/
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2