首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么文件名必须public修饰名称必须一致

文件名一一对应就可以方便虚拟机 在相应路径(包)中找到相应信息。如果这么做的话,就很难去找,而且开销也会很大。...---- 为什么一个java源文件只能有一个public? 答案: 每个编译单元(文件)只能有一个public。...一个源文件可以存在文件名不一致情况,但不能用public修饰....而且在编译单元内部,可以有一个公共(public),它必须拥有与文件相同名字(包括大小写形式,但排除.java 文件扩展)。如果这样做,编译器就会报告出错。...编译一个.java 文件时,我们会获得一个名字完全相同输出文件;但对于.java 文件每个,它们都有一个.class 扩展

1.8K30

Ruby Java 基础语法比较

,过长过短都不会在编译时抛出问题 Ruby 在声明类型时候不需要像 Java 那样声明类型,这也是动态语言特性,我个人是比较喜欢 条件判断 Ruby 条件判断主要有以下三种: if 语句 unless...,但是平时常用也就 each, for 会比较多,在循环上区别,大多只是两种语言在语法上区别 方法 分类 Ruby 方法大致可分为 3 实例方法 方法 函数式方法 实例方法:Ruby...实例方法 Instance method Java 普通方法类似,顾名思义就是调用方必须是一个实例(对象),需要调用实例方法就必须先通过构造一个实例对象才能进行调用,具体请看示例代码:...Java 通过 public class 修饰(内部类通过 class 修饰),Ruby 则通过 class 修饰 Java 必须与文件名相同,Ruby 文件名不要求强制关联 两种编程语言在构造函数上对比示例代码...,不过建议在多人项目中不要用太多语法糖,不然可能会造成项目代码可读性混乱 异常处理 很多程序员大部分时间都花在查错上,所以迅速定位异常很关键,先看看 Ruby 异常格式 文件名:行号:in 方法名:错误信息

2.2K20
您找到你想要的搜索结果了吗?
是的
没有找到

有效处理Java异常三个原则,你知道吗?

这四个是泛化,并不提供多少出错信息,虽然实例化这几个是语法上合法(如:new Throwable()),但是最好还是把它们当虚基看,使用它们更加特化子类。...提早抛出 异常堆栈信息提供了导致异常出现方法调用链精确顺序,包括每个方法调用,方法名,代码文件名甚至行数,以此来精确定位异常出现现场。 ?...通过逐步回退跟踪堆栈信息并检查代码,我们可以确定错误原因是向readPreferences()传入了一个空文件名参数。...堆栈信息立即反映出什么出了错(提供了非法参数值),为什么出错(文件名不能为空值),以及哪里出错(readPreferences()前部分)。这样我们堆栈信息就能如实提供: ?...但这里技巧是在合适层面捕获异常,以便你程序要么可以从异常中有意义地恢复并继续下去,而导致更深入错误;要么能够为用户提供明确信息,包括引导他们从错误恢复过来。

1.6K10

Java之异常处理

java异常错误 异常是程序一些错误,但并不是所有的错误都是异常,也就是在程序,不存在所谓“异常”,只存在错误并且错误有时候是可以避免。...Error Error用来表示编译时系统错误,一般我们不用关心,这里再重申一个概念,异常就是发生错误时被抛出一个通知,所以Error是在编译时系统错误时被抛出异常。...try { // 有可能发生运行错误代码; } 如果在方法内部抛出了异常或者在方法内部调用其他方法抛出了异常,这方法将在抛出异常后终止,如果希望方法就此终止,那么在方法内设置一个特殊块来捕获异常...也就是说只有匹配catch字句才能执行,即便是下面还有匹配类型为什么下面还会存在匹配类型,因为继承原因,下面还存在父异常),也不会执行,具有唯一匹配性。...InstantiationException: 当应用程序试图使用 Class newInstance 方法创建一个实例,而指定对象无法被实例化时,抛出该异常。实例化失败有很多原因。

90310

《Effective-Ruby》读书笔记

Customer 实例仍然可以如你所料响应 name 方法,但是为什么呢?...包含模块时 Ruby 会悄悄地创建单例,并将其插入在继承体系包含它上方。 单例方法(方法针对对象方法)存储于单例,它也会被插入继承体系。...除了属性列表,Struct::new 方法还能接受一个可选块 # 也就是说,我们能在块定义实例方法方法。...比如,它们允许子类实例实例相比较,这说得通嘛?... throw 第五章:元编程 第 28 条:熟悉 Ruby 模块钩子方法 所有的钩子方法都需要被定义为单例方法 添加、删除、取消定义方法钩子方法参数是方法名,而不是,如果需要,使用 self

4K60

Java异常处理

实例 下面的例子声明有两个元素一个数组,当代码试图访问数组第四个元素时候就会抛出一个异常。...如果抛出异常数据类型与 ExceptionType1 匹配,它在这里就会被捕获。 如果匹配,它会被传递给第二个 catch 块。 如此,直到异常被捕获或者通过所有的 catch 块。...例如:throw new IOException(); throw抛出只能够是可抛出Throwable或者其子类实例对象。...throwthrows区别 throw 语法 throw 异常对象; 或 throw new 异常类型(参数列表); 说明 一般实在代码块内部,当程序出现某种逻辑错误时,由程序员主动抛出某种特定类型异常...当然更推荐进行处理操作,以避免后续不必要错误。 方法, throwreturn都会触发方法中断操作,因此在未加入判断情况下,不可同时出现。

1.1K30

第9章 Java高级编程

在程序运行过程中发生错误时,Java允许其按照正常路径完成任务,由发现错误方法抛出封装了错误信息对象(异常)到其调用程序,发出已经发生问题信号,然后立即退出;而且,程序并不在调用该方法代码处继续执行...异常(Exception)也称例外、差错、违例等,是特殊运行错误对象,它对应于java特定运行错误处理机制。Java引入了异常异常。   ...Error:JVM系统内部错误、资源耗尽等,应用程序处理Error。   Exception:其他编程错误等一般性问题。一般所说异常都指Exception及其子类。   ...然后在主线程中原先调用该子任务地方先创建一个该线程实例,再调用线程start方法启动线程。   ...在Java,文件目录都是用File对象来表示,创建和区分方法:先创建一个File对象,并指定文件名或目录,若指定文件名或目录不存在,则File对象新建并不会创建一个文件或目录;需要用createNewFile

75120

面试系列之-JAVA异常梳理(JAVA基础)

异常体系 Java所有异常都来自顶级父Throwable;Throwable下有两个子类ExceptionError;Error是程序无法处理错误,一旦出现这个错误,则程序将被迫停止运行,...抛出异常分为显式隐式两种,显式异常主体是应用程序,显式异常是在程序通过throw关键字手动抛出异常实例。...隐式抛异常主体是JVM,指的是JVM运行过程碰到无法继续运行异常,自动抛出异常,比如数组越界异常; 构造异常实例比较消耗资源。...构造异常实例时,JVM需要生成该异常栈轨迹,该操作会逐一访问当前线程JAVA栈帧,并且记录下各种调试信息,包括栈帧指向方法名字,方法文件名,以及代码哪一行触发了该异常; JVM是如何捕获异常...target是6,表示异常处理器从索引6字节码开始; 当程序触发异常时,JVM会从上到下遍历异常表所有条目,当触发异常字节码索引值在某个异常表条目的监控范围内,JVM会判断抛出异常该条目想捕获异常是否匹配

21240

基础语法

文件名:源文件名必须名相同。当保存文件时候,你应该使用名作为文件名保存(切记Java是大小写敏感),文件名后缀为.java。(如果文件名不相同则会导致编译错误)。...switch语句一个条件 catch try搭配扑捉异常信息 char 16-bit Unicode字符数据类型 class 定义 const 未使用 continue 执行循环体剩余部分 default...int 32位整型数 interface 接口,一种抽象类型,仅有方法常量定义 long 64位整型数 native 表示方法用非java代码实现 new 分配新实例 package 一系列相关组成一个包...this 表示调用当前实例 或者调用另一个构造函数 throw 抛出异常 throws 定义方法可能抛出异常 transient 修饰不要序列化字段 try 表示代码块要做异常处理或者finally...配合表示是否抛出异常都执行finally代码 void 标记方法返回任何值 volatile 标记字段可能会被多个线程同时访问,而不做同步 while while循环 Java注释 在Java编写过程我们需要对一些程序进行注释

76480

Java基础语法

对象:对象是一个实例,有状态行为。例如,一条狗是一个对象,它状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。 是一个模板,它描述一对象行为状态。...方法:方法就是行为,一个可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法完成实例变量:每个对象都有独特实例变量,对象状态由这些实例变量值决定。...源文件名:源文件名必须名相同。当保存文件时候,你应该使用名作为文件名保存(切记Java是大小写敏感),文件名后缀为.java。(如果文件名不相同则会导致编译错误)。...this 表示调用当前实例 或者调用另一个构造函数 throw 抛出异常 throws 定义方法可能抛出异常 transient 修饰不要序列化字段 try...表示代码块要做异常处理或者finally配合表示是否抛出异常都执行 finally代码 void 标记方法返回任何值 volatile 标记字段可能会被多个线程同时访问,而不做同步

83360

Java基础小结(一)

可以使用字符串类型文件名来创建一个输入流对象来读取文件: InputStream f = new FileInputStream("C:/java/hello"); 也可以使用一个文件对象来创建一个输入流对象来读取文件...使用字符串类型文件名来创建一个输出流对象: OutputStream f = new FileOutputStream("C:/java/hello") 也可以使用一个文件对象来创建一个输出流来写文件...资料 理解Java字符流与字节流区别 Java流、字符流字节流 字节流与字符流区别详解 Java 流(Stream)、文件(File)IO 异常 异常错误区别:异常能被程序本身可以处理...4、在写异常处理时候,一定要把异常范围小放在前面,范围大放在后面,,Exception这个异常一定要放在最后一个catch里面,如果放在前面或者中间,任何异常都会Exception匹配,...2、非检查性异常:处理编译可以通过,如果有抛出直接抛到控制台 3、运行时异常: 就是非检查性异常 4、非运行时异常: 就是检查性异常 错误与异常 1、error---错误 : 是指程序无法处理错误

62010

阶段01Java基础day19异常FILE

19.01_异常(异常概述分类) A:异常概述 异常就是Java程序在运行过程中出现错误。...所有的RuntimeException及其子类实例被称为运行时异常,其他异常就是编译时异常 编译时异常 Java程序必须显示处理,否则程序就会发生错误,无法通过编译 运行时异常 无需显示处理...b:toString() 获取异常异常信息,返回字符串。 c:printStackTrace() 获取异常异常信息,以及异常出现在程序位置。返回值void。...B:案例演示 分别演示编译时异常对象运行时异常对象抛出 C:throwsthrow区别 a:throws 用在方法声明后面,跟是异常 可以跟多个异常,用逗号隔开 表示抛出异常,由该方法调用者来处理...删除走回收站。

43720

Java异常 Throwable、Exception、Error

因而,Java异常都是对象,是Throwable子类实例,描述了出现在一段编码 错误条件。当条件生成时,错误将引发异常。...其他 ClassCastException 类型转换异常 ArrayStoreException 数组包含兼容抛出异常 SQLException 操作数据库异常 NoSuchFieldException...()方法创建一个实例,而指定对象无法被实例化时,抛出该异常 4.自定义异常 使用Java内置异常可以描述在编程时出现大部分异常情况。...匹配原则是:如果抛出异常对象属于catch子句异常,或者属于该异常子类,则认为生成异常对象与catch块捕获异常类型相匹配。...我们知道,异常是异常实例对象,我们可以创建异常实例对象通过throw语句抛出

1.9K10

Java基础笔记19

19.01_异常(异常概述分类) A:异常概述 异常就是Java程序在运行过程中出现错误。...所有的RuntimeException及其子类实例被称为运行时异常,其他异常就是编译时异常 编译时异常 Java程序必须显示处理,否则程序就会发生错误,无法通过编译 运行时异常 无需显示处理...b:toString() 获取异常异常信息,返回字符串。 c:printStackTrace() 获取异常异常信息,以及异常出现在程序位置。返回值void。...B:案例演示 分别演示编译时异常对象运行时异常对象抛出 C:throwsthrow区别 a:throws 用在方法声明后面,跟是异常 可以跟多个异常,用逗号隔开 表示抛出异常,由该方法调用者来处理...19.17_File(File删除功能) A:删除功能 public boolean delete():删除文件或者文件夹 B:案例演示 File删除功能 注意事项: Java删除走回收站

59360

Java main()方法剖析

从Java语法角度: 又因为main() 方法是静态,我们不能直接访问该类非静态成员,必须创建该类一个实例对象后,才能通过这个对象去访问非静态成员。...解析如下: Java保存文件名必须与一致; 如果文件只有一个文件名必须与一致; 一个Java文件只能有一个public; 如果文件不止一个,public必须与文件名一致; 如果文件不止一个...所以对于Widget而言,文件名称必须是Widget.java,而不是widget.java或WIDGET.java。如果匹配,同样将得到编译时错误。...但是当你被 public 修饰时,此时文件名必须该类保持一致(例如 public class A{} 只能放在 A.java 文件,不然在用 javac 编译时会提示错误 A 是公共,应在名为...注:有很多初学者 ( 我也是 ) 可能会认为文件名应该也 main 方法所在有关系,其实不然。

55630

java基础语法

一个Java程序可以认为是一系列对象集合,而这些对象通过调用彼此方法来协同工作。下面简要介绍下、对象、方法实例变量概念。 对象:对象是一个实例,有状态行为。...逻辑运算、数据修改以及所有动作都是在方法完成实例变量:每个对象都有独特实例变量,对象状态由这些实例变量值决定。...源文件名:源文件名必须名相同。当保存文件时候,你应该使用名作为文件名保存(切记Java是大小写敏感),文件名后缀为.java。(如果文件名不相同则会导致编译错误)。...this 表示调用当前实例 或者调用另一个构造函数 throw 抛出异常 throws 定义方法可能抛出异常 transient 修饰不要序列化字段 try 表示代码块要做异常处理或者finally...配合表示是否抛出异常都执行finally代码 void 标记方法返回任何值 volatile 标记字段可能会被多个线程同时访问,而不做同步 while while循环 Java注释 类似于C/C

45710

C++_异常处理

异常处理 前言:此类笔记仅用于个人复习,内容主要在于记录体现个人理解 [toc] 什么是异常处理 在程序可能会出现各种各样异常,比如出现了错误,常见错误主要分为语法错误编译错误,有的错误编译器是可以检查出来...) 当然,也可以通过断言等方式来处理一些错误,当assert判别式结果为false时候,就直接异常退出程序 C++如何实现异常处理 C++异常处理机制是由三个部分组成:检查(try)、抛出(...关键字用于接收throw抛出异常,并针对异常进行相应处理,catch被检查代码段被合称为catch块 形式: try { 被检查代码段 }catch(异常信息类型 变量·一般情况下不写变量...·){ 处理异常代码段 }注意 如果throw表达式是的话,可以不用单独实例化出一个对象,直接使用匿名对象,因为有的时候会定义一些空来专门作为异常信息用,没必要为了异常信息实例化一个对象 class...块必须紧跟try块,catch不能脱离try单独使用,且两者之间不能夹杂其他语句;但是try块是可以单独使用,即只检查处理,catch块在另一个函数里面 花括号不能省略 由于一段代码可能存在多种错误情况

29610

《Groovy极简教程》第1章 Groovy简介《Groovy极简教程》第1章 Groovy简介参考资料

使用该种语言不必编写过多代码,同时又具有闭包动态语言中其他特性。 为什么要学习Groovy 为什么要学习Groovy,简单来说就是Groovy可以用较少代码实现较多功能。...具体规则如下: 如果在一个groovy文件没有任何定义,它将被当做script来处理,也就意味着这个文件将被透明转换为一个Script类型,这个自动转换得到将使用原始groovy文件名(...去掉扩展,没有包,在default包)作为名字。...在一个groovy文件可以包含多个不同可见性定义,并且没有强制性要求其中有一个文件名相同。groovyc编译器会很乐于把该文件定义所有的都编译成*.class文件。...在没有经过明确编译过程即执行时,groovy将通过文件名来查找。在这种情况下,名称将会很重要。Groovy只能找到那些和文件名匹配

1.3K20
领券