你所不知道的java编程思想
读thinking in java这本书的时候,有这么一句话“在编译单元的内部,可以有一个公共(public)类,它必须拥有与文件相同的名字”
有以下疑问:
- 在一个类中说可以有一个public类,那是不是也就是说可以没有呢?
抱着这个问题进行了以下的实验:(文件名是Test1.java)
class Test1 {
public static void main(String[] args){
if(args != null && args.length > 0){
System.out.println(args.length);
for(int i=0;i < args.length;i++){
System.out.println("args["+i+"]:"+args[i]);
}
}
}
public static void test(){
}
}
class Test3{
public static void main(String[] args){
if(args != null && args.length > 0){
System.out.println(args.length);
for(int i=0;i < args.length;i++){
System.out.println("args["+i+"]:"+args[i]);
}
}
}
public static void test(){
}
}

在终端下执行命令,没有任何错误,可见第一条确实可行的,一个类文件中确实不需要有public指定相关类名。
那随之而来的第二个问题就是,既然没有public修饰,那是不是里边的类名称也可以随意起呢,随之修改上述代码中Test1为Test2并进行测试,结果如下:

同样和上图的结果几乎一样,所以可以得出结论,在一个类文件中可以没有public修饰的类,此时类名称不必和文件名一样。
通过以上研究就可以明显看出来《thinking in java》中的一个错误,原话如下:
“例如,假定文件名是MyClass.java。它意味着在那个文件有一个、而且只能有一个public类。而且那个类的名字必须是MyClass(包括大小写形式)”
——取自5.1节
延伸了解:
以下列出类名的修饰符(取自百度)
public 公共类
default 默认类(默认的修饰符,只有在相同包中的对象才能使用这样的类)
abstract 抽象类
final 不能被继承的类
static 静态类
private 只能修饰内部类,一般不推荐使用
你所不知道的java编程思想的更多相关文章
- 你所不知道的 Java 之 HashCode
之所以写HashCode,是因为平时我们总听到它.但你真的了解hashcode吗?它会在哪里使用?它应该怎样写? 相信阅读完本文,能让你看到不一样的hashcode. 使用hashcode的目的在于: ...
- 【总结】你所不知道的Java序列化
我们都知道,Java序列化可以让我们记录下运行时的对象状态(对象实例域的值),也就是我们经常说的对象持久化 .这个过程其实是非常复杂的,这里我们就好好理解一下Java的对象序列化. 1. 首先我们要搞 ...
- 你所不知道的五件事情--java.util.concurrent(第二部分)
这是Ted Neward在IBM developerWorks中5 things系列文章中的一篇,仍然讲述了关于Java并发集合API的一些应用窍门,值得大家学习.(2010.06.17最后更新) 摘 ...
- 你所不知道的库存超限做法 服务器一般达到多少qps比较好[转] JAVA格物致知基础篇:你所不知道的返回码 深入了解EntityFramework Core 2.1延迟加载(Lazy Loading) EntityFramework 6.x和EntityFramework Core关系映射中导航属性必须是public? 藏在正则表达式里的陷阱 两道面试题,带你解析Java类加载机制
你所不知道的库存超限做法 在互联网企业中,限购的做法,多种多样,有的别出心裁,有的因循守旧,但是种种做法皆想达到的目的,无外乎几种,商品卖的完,系统抗的住,库存不超限.虽然短短数语,却有着说不完,道不 ...
- 《Java编程思想》读书笔记
前言 这个月一直没更新,就是一直在读这本<Java编程思想>,这本书可以在Java业界被传神的一本书,无论谁谈起这本书都说好,不管这个人是否真的读过这本书,都说啊,这本书很好.然后再看这边 ...
- 一些你所不知道的VS Code插件
摘要: 你所不知道的系列. 原文:提高 JavaScript 开发效率的高级 VSCode 扩展之二! 作者:前端小智 Fundebug经授权转载,版权归原作者所有. 作为一名业余爱好者.专业人员,甚 ...
- 你真的会玩SQL吗?你所不知道的 数据聚合
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...
- Java编程思想重点笔记(Java开发必看)
Java编程思想重点笔记(Java开发必看) Java编程思想,Java学习必读经典,不管是初学者还是大牛都值得一读,这里总结书中的重点知识,这些知识不仅经常出现在各大知名公司的笔试面试过程中,而 ...
- java编程思想第四版中net.mindview.util包下载,及源码简单导入使用
在java编程思想第四版中需要使用net.mindview.util包,大家可以直接到http://www.mindviewinc.com/TIJ4/CodeInstructions.html 去下载 ...
随机推荐
- css属性之vertical-align详解
inline-block 该值会让元素生成一个内联级块容器(inline-level block container).一个inline-block的内部会被格式化成一个块盒,而该元素本身会被格式化成 ...
- 配置 VS 2015 开发跨平台手机应用
为了使用 VS 2015 开发跨平台手机应用,VS 2015 装了很多次,遇到了很多坑,才终于弄明白怎样配置才能正常使用C#开发手机应用,现把步骤分享给大家,以免大家少走弯路. 运行环境: Windo ...
- 序列化和持久化 merge方法和saveOrUpdate方法
merge方法和saveOrUpdate方法的区别 merge方法是把我们提供的对象转变为托管状态的对象:而saveOrUpdate则是把我们提供的对象变成一个持久化对象:说的通俗一点就是:saveO ...
- Swift--基础(一)基本类型 符号 字符串(不熟的地方)
常量 变量 let age = 20 常量不可变 var num = 24 变量可变 let count:Int = 2 定义类型 Double(count) 类型转换 符号 1.?? let de ...
- Swift 变量、常量、数据类型
import Foundation print("HelloSwift") // 声明变量 var a = var b = a = b = // 常量 let c = a+b va ...
- 转载:JAVA中使用JSON进行数据传递
转载网址:http://www.cnblogs.com/undead/archive/2012/07/18/2594900.html 最近在做一个基于JAVA Servlet的WEB应用以及对应的An ...
- dedecms _ 栏目无法更新
dedecms 后台_ 栏目无法更新: 那天我在移站, 出现了这个问题 例如这样的提示: 遇到问题咱就得解决啊: 解决方法如下: 进入dedecms后台 进入----系统-----系统基本参数-- ...
- jQuery读取JSON总结
1.jQuery 部分 <script src="js/jquery.js" type="text/javascript"></script& ...
- Python 学习日记(第四周)
set数据类型 先用一行代码来说明一下 #!/usr/bin/env python s2={} s = {33,12,33,32121} for i in s: print(i) print(type ...
- Pyzo -- 好用的 Python 轻量级 IDE
近期 yvivid 使用 Python 进行科学计算类应用(如matlab部分应用场景) 比较好的 发行版本为 Anaconda: A free distribution for the SciPy ...