红米3刷机失败手机刷机更新升级到MIUI9系统失败,求解

一个.java源文件中可以有多个类吗?(内部类除外)有什么条件? . - 南山一叶 - ITeye技术网站
博客分类:
一个.java源文件中可以有多个类吗?(内部类除外)有什么条件?带着这个疑惑,动手建几个测试类,
揭开心中的疑惑。以下是解开疑惑过程:
/** * 一个.java源文件中可以有多个类吗?(内部类除外)有什么条件?
*但是只能有一个public类, 而且如果有public类的话,这个文件的名字要和这个类的名字一样。 *如果都没有public类,名字可以不和这个类一样。 */public class MultiClass { int i = 0;}
class B { String str = "b";}
class C { String str = "c";}
/*源文件javac出多个class文件出来!是怎么回事?1.
你在一个文件里定义了几个类的时候,会出现这种情况,比如
你定义了内部类的时候会出现这种情况,如
这会产生两个
文件,一个
A.class,一个
使用了匿名类的时候出出现这种情况,如
button.addActionLisener(new
ActionListener()
这也会产生多个
class,一个
A.class,一个
浏览: 199292 次
来自: 北京
littlebitty 写道嘿嘿,虽说的不好却能解决实际问题
尹宇飞 写道?在那了,找不到不好意思,这个我没有找到官方标准的 ...
?在那了,找不到
精辟啊,总结的Java复习题(二)填空题答案_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Java复习题(二)填空题答案
上传于|0|0|暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩6页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢24509人阅读
读书笔记(2)
闲着没事,在网上看到一个帖子在问为什么一个java源文件中只能有一个public类?网上有人这么回答:、每个编译单元(文件)只能有一个public类。这么做的意思是,每个编 译单元只能有一个公开的接口,而这个接口就由其public类来表示。
我想这或是从软件架构设计和安全性设计上得出的结论。或者说是java的设计者们从这方面的考虑。或许这真的是一个规范,但我没有找到相关资料
不晓得到底有没有这一说话。如果有请知道的同行给出资料来源?
实验如下:Test3.java源文件: class Test1{int i = 1;
&class Test2{&int i = 2;&public static void main(String[] args)&{&&System.out.println("main method");&}}
C:/javatest&javac Test3.java
C:/javatest&java Test2main method
注:编译不会出错,注意是运行的Test2 因为没有Test3.class文件生成。如果运行Test3则报错
找不到该类C:/javatest&java Test3Exception in thread "main" java.lang.NoClassDefFoundError: Test3Caused by: java.lang.ClassNotFoundException: Test3&&&&&&& at java.net.URLClassLoader$1.run(Unknown Source)&&&&&&& at java.security.AccessController.doPrivileged(Native Method)&&&&&&& at java.net.URLClassLoader.findClass(Unknown Source)&&&&&&& at java.lang.ClassLoader.loadClass(Unknown Source)&&&&&&& at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)&&&&&&& at java.lang.ClassLoader.loadClass(Unknown Source)Could not find the main class: Test3.& Program will exit.这个错误原因很简单:JVM中的类加载器找不到Test3.class
同时这里也说明了包含main()的类如果想运行则不一定要是public的。
《深入jvm第二版》中有这样一句话:java虚拟机实例通过调用某个类的main()来运行一个Java程序,而这个main()必须是public static void 并接收一个字符串数组作为参数,任何拥有这样一个main()的类都可以作为java程
序的起点。并没有说拥有main()方法的类一定要是public类。
Test7.java源文件:&class Test5{int i = 1;
&public class Test6{&int i = 2;&public static void main(String[] args)&{&&System.out.println("main method");&}}
如果运行Test7.java 报错:C:/javatest&javac Test7.javaTest7.java:8: 类 Test6 是公共的,应在名为 Test6.java 的文件中声明&public class Test6&&&&&&& ^1 错误这里说明了文件名必须与public类的类名一致,(如果文件中有public类)
这里可以看出如果有多个public类,那么文件名应该是哪个public类的呢?显然一个java源文件
只能有一个public类。
所以总结如下:一个Java源文件中最多只能有一个public类,当有一个public类时,源文件名必
须与之一致,否则无法编译,如果源文件中没有一个public类,则文件名与类中没有一致性要求。至于main()不是必须要放在public类中才能运行程序。
以上是通过实验得出的结论,个人认为到这里已经可以了,如果一定要追问到底,可能要问问java
平台的设计者了。或许,人家会说:这是java的设计和jvm的内部体系结构设计造成,这是一个规
范,没有为什么。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:230030次
积分:1487
积分:1487
排名:千里之外
原创:22篇
评论:35条
(3)(1)(1)(1)(1)(2)(1)(6)(4)(1)(1)(2)

我要回帖

更多关于 红米note刷机失败 的文章

 

随机推荐