java的类修饰符号问题

f_s_boy 2016-06-18 12:49:47
今天我在EditPlus中编写一个线程同步问题是出现了一个问题:代码如下

public class R implements Runnable{
T t=new T();
public static void main(String[] args)
{
R r=new R();
Thread t1=new Thread(r);
Thread t2=new Thread(r);
t1.setName("t1");
t2.setName("t2");
t1.start();
t2.start();
}
public void run(){
t.add(Thread.currentThread().getName());
}
}

class T
{
private static int num=0;
public void add(String name){
num++;
try{
Thread.sleep(1);
}catch(InterruptedException e){
e.printStackTrace();
}
System.out.println(name+"您是第"+num+"个使用T线程的方法");
}



注意class R 是public的,然后我在dos下编译时候,出现编译不通过:

当我把前面的public修饰给去掉的时候,编译通过,而且可以执行。更加奇怪的是 在eclipse中 加上public是可以执行的。麻烦大神给讲解一下。。。。
...全文
291 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
所罗门格雷 2016-06-22
  • 打赏
  • 举报
回复
建议看看 韩顺平的JAVA视频教程 和 斯坦福大学公开课 编程方法学(网易公开课有) 这两个教程讲了很多JAVA知识。
MoshangYanYu 2016-06-22
  • 打赏
  • 举报
回复
在Java中,类名和文件名要求一致。。。这是规范。。。。
贾谷瑶 2016-06-22
  • 打赏
  • 举报
回复
楼主快结贴吧!
宿州阿里郎 2016-06-21
  • 打赏
  • 举报
回复
public修饰的类名,一定要和文件名一样。而且只能允许一个public修饰符存在。
caogang_90 2016-06-20
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
f_s_boy 2016-06-19
  • 打赏
  • 举报
回复
引用 6 楼 soton_dolphin的回复:
[quote=引用 5 楼 wanglinbomk12138 的回复:] [quote=引用 1 楼 soton_dolphin的回复:]当class被声明为public的时候,源文件的文件名必须和class名一致,所以你的源文件名应该是R.java
测试一下通过啦,为什么不加上public是源文件名可以类名不同,而加上public修饰后,一定得要求源文件名和public修饰的的类名一致?[/quote] 因为java的语言规范就是这么规定的。[/quote] 这个常识我都不知道学了这么久java,好惆怅
f_s_boy 2016-06-19
  • 打赏
  • 举报
回复
引用 6 楼 soton_dolphin的回复:
[quote=引用 5 楼 wanglinbomk12138 的回复:] [quote=引用 1 楼 soton_dolphin的回复:]当class被声明为public的时候,源文件的文件名必须和class名一致,所以你的源文件名应该是R.java
测试一下通过啦,为什么不加上public是源文件名可以类名不同,而加上public修饰后,一定得要求源文件名和public修饰的的类名一致?[/quote] 因为java的语言规范就是这么规定的。[/quote] 这个常识我都不知道学了这么久java,好惆怅
Ordinary-1995 2016-06-19
  • 打赏
  • 举报
回复
类名应该与文件名一致
f_s_boy 2016-06-18
  • 打赏
  • 举报
回复
引用 1 楼 soton_dolphin的回复:
当class被声明为public的时候,源文件的文件名必须和class名一致,所以你的源文件名应该是R.java
测试一下通过啦,为什么不加上public是源文件名可以类名不同,而加上public修饰后,一定得要求源文件名和public修饰的的类名一致?
f_s_boy 2016-06-18
  • 打赏
  • 举报
回复
引用 3 楼 公交哥的回复:
很明显,你的Java文件名和文件中public修饰的类的名称不一致
我测试了一下,把原文件名改为public中的类名相同的时候就具有运行,为什么会出现这种情况?
soton_dolphin 2016-06-18
  • 打赏
  • 举报
回复
引用 5 楼 wanglinbomk12138 的回复:
[quote=引用 1 楼 soton_dolphin的回复:]当class被声明为public的时候,源文件的文件名必须和class名一致,所以你的源文件名应该是R.java
测试一下通过啦,为什么不加上public是源文件名可以类名不同,而加上public修饰后,一定得要求源文件名和public修饰的的类名一致?[/quote] 因为java的语言规范就是这么规定的。
爱睡觉的阿狸 2016-06-18
  • 打赏
  • 举报
回复
很明显,你的Java文件名和文件中public修饰的类的名称不一致
f_s_boy 2016-06-18
  • 打赏
  • 举报
回复
这样吗?我等等在跑跑试试
soton_dolphin 2016-06-18
  • 打赏
  • 举报
回复
当class被声明为public的时候,源文件的文件名必须和class名一致,所以你的源文件名应该是R.java

62,625

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧