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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 沙漠里的小鱼 黑马帝   /  2012-2-26 01:26  /  2297 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 沙漠里的小鱼 于 2012-2-26 01:28 编辑

class Hello extends Thread {  
   public void run() {     
    for (int i = 0; i < 7; i++) {     
        if (count > 0) {      
          System.out.println("count= " + count--);           
  }   
   }   
}

public static void main(String[] args) {     
    hello h1 = new hello();   
     hello h2 = new hello();        
hello h3 = new hello();      
   h1.start();   
     h2.start();        
h3.start();     
}   
   private int count = 5;
}
我要问的问题是为什么最后定义一个private int count = 5;    还有一个问题是为什么要把主函数Main 放在类Hello 中  可以把主函数拿到类Hello外吗 谢谢;
   

评分

参与人数 1技术分 +1 收起 理由
职业规划-刘倩老师 + 1 赞一个!

查看全部评分

7 个回复

倒序浏览
不知道我的回答是不是你要问的:
1,变量定义在一个类中什么位置不重要,关键是在哪个大括号里,很重要。
     变量定义在后面这可能是依据测试优先的原则,在定义一个类时,优先发掘清楚它有什么方法,属性是其次,
     这样有利于模块化设计,类与类之间的消息传递。
2,main函数放在哪里也不重要,因为即使你放在这个对象之中,你仍然要创建这个类的实例之后才能调用这个类的非静态方法,
     因为main是static的,而且我们也要避免main函数与所在类的过多耦合,降低耦合度,能使程序更加干净,易维护。
回复 使用道具 举报
class Hello extends Thread {
        public void run() {
                for (int i = 0; i < 7; i++) {
                        if (count > 0) {
                                System.out.println("count= " + count--+Thread.currentThread().getName());
                        }
                }
        }

        public static void main(String[] args) {
                Hello h1 = new Hello();
                Hello h2 = new Hello();
                Hello h3 = new Hello();
                h1.start();
                h2.start();
                h3.start();
        }
        private int count = 5;
}
把代码修改了下,便于你学习。

最后定义的 private int count = 5;   只是提供一个供线程操作的资源,它定义在最后,也算是一种习惯吧,
因为有很多人建议将类的成员方法定义在成员变量的前面,由于人们通常只关心方法,忽视成员变量。
主函数必须在一个类中才能运行,放在这个类Hello中,只是为了方便(但是它不属于类Hello),所以可以放在外面的,这个外面是在一个类中,又在那个类的成员方法之外。
回复 使用道具 举报
tanlei200620 发表于 2012-2-26 01:41
class Hello extends Thread {
        public void run() {
                for (int i = 0; i < 7; i++) {

那把 private int count = 5;去掉可以吗 我就是不大明白为什么要定义这个 有什么作用呢  还有 那个main方法可以放在别的类中吗
回复 使用道具 举报
你楼上的说这么清楚了 不知道你还要问什么 呵呵
回复 使用道具 举报
泮和顺 发表于 2012-2-26 08:43
你楼上的说这么清楚了 不知道你还要问什么 呵呵

   我不明白 private int count = 5;去掉可以吗 我就是不大明白为什么要定义这个 有什么作用呢  还有 那个main方法可以放在别的类中吗
回复 使用道具 举报
如果最后不定义count,里面没有count这个变量,根本运行不了。可以把主函数main自定义一个类里面。
回复 使用道具 举报
可以另外定义一个线程类的,主函数在一个类中。 private int count = 5;之所以定义这个变量,是要拿他来做 判断。if(count>0) ....
这样写你看得容易理解点:
class Hello extends Thread {
            private int count = 5;
        public void run() {
                for (int i = 0; i < 7; i++) {
                        if (count > 0) {
                                System.out.println("count= " + count--+Thread.currentThread().getName());
                        }
                }
        }

        public static void main(String[] args) {
                Hello h1 = new Hello();
                Hello h2 = new Hello();
                Hello h3 = new Hello();
                h1.start();
                h2.start();
                h3.start();
        }
      
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马