文档介绍:惠普java笔试题
check 异常 uncheck 异常
异常处理顺序
对象引用能在堆里吗
字节流,字符流
遍历数组Iterator
for/in循环的基本结构
filter的功能
用Validator简化Struts的开发过程
按钮二次提交
. lang. ClassCastException
~ . check 异常 uncheck 异常
答案参考
复写的方法不能抛出异常,除非被复写的方法也抛出那个异常或该异常的父类。
不然在使用子类并进行向上转型的操作时有可能出现问题。
java. lang. Throwable 类拥有两个子类:Exception and Error.
错误是指一个合理的应用程序不应该试图捕捉的严重的问题,大部分这种错误是异常 条件。
Java语言中的两种异常是:编译时异常和运行时异常。异常的所有子类除 RunTimeException (及其子类)外都属于前者。
Examples of Checked exception: lOException, ClassNotFoundException.
Examples of Runtime exception: ArraylndexOutOfBoundsException, NullPointerException, ClassCastException, ArithmeticException, NumberFormatException.
unchecked异常不需要被捕捉。
Java中的异常分为checked和unchecked,系统在编译的过程中只检测方法中是否可 能抛出checked的异常而没有声明捕获或者抛出,在这种情况下会出现编译错误的。 而unchecked 一般来说是不需要程序员处理,这个原因我一会说明,所以你的badMethod 是不用力口上 Throws RuntimeException
这个是你看错了,在捕获中,你可以捕获一个异常类和他所有的子类,也就是说在这 里你可以捕获所有Exception异常和他的子类,而Exception是所有异常类的父类, 所以你可以捕获所有的异常类,至于RuntimeExcption也是一个Exception的子类, 所以你也可以捕获他 最后就是给你说一下Java异常类的结构了,Java异常类中分两个大的分支,Exception 和Error,后者一般表现为虚拟机的错误,这对于Java语言来说我感觉已经属于平台 类的错误了,程序员遇到这类的问题根本不应该处理,而是应该让虚拟机来处理或者 crash,所以设计者将他与Exception分支分开,为的就是将两类异常区别开来,并且 防止哪个懒惰的程序员想捕获根异常处理问题而错误的处理了他无法处理的问题。
从我刚才说的Error和Exception的区别来看,Error就应该属于unchecked的异常, 他不需要程序员在代码中捕获和处理,所以
Java也不对其进行checko
Exception中还有一类的异常是unchecked的异常,这类异常一般是Java在遇到算法 漏洞时抛出的,比如说除0之类的异常,这类异常一般就是RuntimeException异常和 他的子类,这类异常当程序员遇到时也不应该处理,而是作为程序bug来修改,所以 这类异常也是unchecked异常,其他的Exception分支就都是checked异常了
但是由于RuntimeException是Exception的子类,所以懒惰的程序员(例如你)也还 是会无意中将其捕获的
答案参考
一个try代码段并不一定需要接上一个catch,而不接catch时必须接finallyo 在使用多个catch段时,处理的异常应该由子类向父类排列。
因为父类的异常放在前面时,会评比子类异常。
例如try {
}catch(Exception e)(
//blur blur
}catch(lOException e) {
〃永远无法流转进来
}
一个方法可以抛出多个异常,使用逗号分隔,例如public void myMethod() throws lOException, ArithmeticException.
三,,对象引用能在堆里吗
答案参考
简单的说:
Java把内存划分成两种:一种是栈内存,一种是堆内存。
在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。
当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的 作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他 用。
堆内存用来存放由new创建