黑马程序员技术交流社区

标题: java中Con到底代表什么 [打印本页]

作者: 杨玉揆    时间: 2011-12-2 16:20
标题: java中Con到底代表什么
本帖最后由 杨玉揆 于 2011-12-3 20:26 编辑

今天跟着老师的思路敲这样的一段代码
  1. class Resouce
  2. {
  3.         private String name;
  4.         private int id = 1;
  5.         private boolean flag = false;
  6.         public synchronized void set(String name)
  7.         {
  8.                 while(flag)
  9.                         try{this.wait();}catch(Exception e){};
  10.                 this.name = name+"--"+id++;
  11.                 System.out.println(Thread.currentThread().getName()+"...生产者..."+name);
  12.                 flag = true;
  13.                 this.notifyAll();
  14.         }
  15.         public synchronized void out()
  16.         {
  17.                 while(!flag)
  18.                         try{this.wait();}catch(Exception e){}
  19.                 System.out.println(Thread.currentThread().getName()+"...消费者......."+name);
  20.                 flag = false;
  21.                 this.notifyAll();
  22.         }
  23. }
  24. class Pro implements Runnable
  25. {
  26.         private Resouce res;
  27.         public Pro(Resouce res)
  28.         {
  29.                 this.res = res;
  30.         }
  31.         public void run()
  32.         {
  33.                 while(true)
  34.                         res.set("+商品+");
  35.         }
  36. }
  37. class Con implements Runnable
  38. {
  39.         private Resouce res;
  40.         public Con(Resouce res)
  41.         {
  42.                 this.res = res;
  43.         }
  44.         public void run()
  45.         {
  46.                 while(true)
  47.                         res.out();
  48.         }

  49. }
  50. class ProConDemo
  51. {
  52.         public static void main(String[] args)
  53.         {
  54.                 Resouce r = new Resouce();
  55.                 Pro p = new Pro(r);
  56.                 Con c = new Con(r);
  57.                 Thread t1 = new Thread(p);
  58.                 Thread t2 = new Thread(p);
  59.                 Thread t3 = new Thread(c);
  60.                 Thread t4 = new Thread(c);
  61.                 t1.start();
  62.                 t2.start();
  63.                 t3.start();
  64.                 t4.start();
  65.                
  66.         }
  67. }
复制代码
编译时电脑主板报了三声的警报声,出现了这样的错误提示: ,看了很久也不知道是什么问题,但是最后在改Con这个类,将他改成Con1,就没事了,好奇怪,高手指点。。


该贴已经同步到 杨玉揆的微博
作者: fly51888    时间: 2011-12-2 17:51
con是Windows下的一个保留字,文件夹、文件名都不能以此命名,且不分大小写。你可以在window里创建一个con名的文件夹或者是con.java/Con.java,系统会提示指定的设备名无效。SUN中有规定con是java的保留字。所以不能用这个名字。
作者: 刘海涛    时间: 2011-12-2 18:43
本帖最后由 刘海涛 于 2011-12-2 18:49 编辑

原因是操作系统对保留字符 con


在window下不能够创建con的文件夹以及前缀con的任何文件,且不区分大小写。
你在编译的时候,在硬盘上要生成class文件 为Con.class Window是不允许的。
所以会报错。
Con1编译生成Con1.class window是可以被创建的。
经过我测试sun好像没有保留该字符,
编译如果类名是保留字符会报:需要 <标识符> 错误;
作者: 许邦存    时间: 2011-12-2 19:19
学习了,不懂
作者: 王德云    时间: 2011-12-2 19:53
本帖最后由 wangdeyun 于 2011-12-2 20:10 编辑
  1. public class Demo {

  2.         public static void main(String[] args) {
  3.                 int Con=1;
  4.                 System.out.println(Con);
  5.         }

  6. }
复制代码
这段代码说明了楼上两位说的是错的,更何况Java中的关键字即保留字在Eclipse中编写时会变颜色.
但这个类名在Java中是无效的[attach]337[/attach]

未命名.jpg (24.92 KB, 下载次数: 118)

未命名.jpg

作者: 刘海涛    时间: 2011-12-2 20:00
本帖最后由 刘海涛 于 2011-12-2 20:02 编辑
wangdeyun 发表于 2011-12-2 19:53
这段代码说明了楼上两位说的是错的,更何况Java中的关键字即保留字在Eclipse中编写时会变颜色. ...







看图就知道了
编译和运行 MyEclipse 9.1 JDK 1.6
作者: 李栋    时间: 2011-12-2 21:29
哇,那个错误提示好美啊
作者: 侯伟浩    时间: 2011-12-3 19:59
学习了,多谢。楼上那位你怎么还是1分啊,很多天之前看你就是一分。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2