- Java 中异常分为哪些种类
检查型异常(CheckedException)和非检查型异常(RuntimeException)。
|
- 请写出你最常见的 5 个 RuntimeException
1)java.lang.NullPointerException 空指针异常;出现原因:调用了未经初始化的对象或者是不存在的对象。 2)java.lang.ClassNotFoundException 指定的类找不到;出现原因:类的名称和路径加载错误;通常都是程序 试图通过字符串来加载某个类时可能引发异常。 3)java.lang.NumberFormatException 字符串转换为数字异常;出现原因:字符型数据中包含非数字型字符。 4)java.lang.IndexOutOfBoundsException 数组角标越界异常,常见于操作数组对象时发生。 5)java.lang.IllegalArgumentException 方法传递参数错误。 6)java.lang.ClassCastException 数据类型转换异常。 7)java.lang.NoClassDefFoundException 未找到类定义错误。 8)SQLException SQL 异常,常见于操作数据库时的 SQL 语句错误。 9)java.lang.InstantiationException 实例化异常。 10)java.lang.NoSuchMethodException 方法不存在异常。 |
- throw 和 throws 的区别 是什么?
throw: 1)throw 语句用在方法体内,表示抛出异常,由方法体内的语句处理。 2)throw 是具体向外抛出异常的动作,所以它抛出的是一个异常实例,执行 throw 一定是抛出了某种异常。 throws: 1)throws 语句是用在方法声明后面,表示如果抛出异常,由该方法的调用者来进行异常的处理。 2)throws 主要是声明这个方法会抛出某种类型的异常,让它的使用者要知道需要捕获的异常的类型。 3)throws 表示出现异常的一种可能性,并不一定会发生这种异常。 |
- final、 finally、 finalize 的区别?
Final:修饰符,被它修饰的属性不能改变,方法不能重写,类不能继承。 Finally:和try或者try-catch使用,表示最后指向,一般用来释放资源。 Finalize:finalize()是Object的protected方法,子类可以覆盖该方法来整理系统资源或者执行其他清理工作,GC在回收对象之前调用该方法。如果被清理对象没有被引用就把它干掉。 |
- Math.round(11.5)等于多少? Math.round(- 11.5) 又等于多少?
12\-11[无论正负+0.5向小取整] |
- switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String上?
Jdk1.5之前使用byte、short、char、int Jdk1.5开始引用了枚举类型 Jdk1.7开始引用了String字符串类型 但是长整型(long)在目前所有的版本中都是不可以的。 |
- 数组有没有 length() 方法? String 有没有 length() 方法?
数组拥有length属性,没有length()方法 String通过length()方法来获取字符串长度 |
- String 、 StringBuilder 、 StringBuffer 的区别?
String:是只读字符串,也就是说不能改变。 StringBuilder:(jdk1.5出现)字符串长度可变,线程不安全,单线程下推荐使用,拼接字符串效率较高。 StringBuffer:字符串长度可变,所有方法被synchronize修饰,线程安全,拼接字符串效率中等。 |
- short s1 = 1; s1 = s1 + 1; 有错吗?short s1 = 1; s1 += 1 有错吗;
short s1 = 1; s1 = s1 + 1;有错 1是int ,s1 + 1结果也是int,没有强制类型转换,int不能直接赋值给short。 short s1 = 1; s1 += 1没有错,相当于s1 =(short)(s1+ 1);隐含强制类型转换。 |
- Java 中有几种类型的流 ? 、
|
- 如何将一个 java 对象序列化到文件里
Java类需要实现Serializable[标记接口] public class User implements Serializable //写入 ObjectOutputStream out= new ObjectOutputStream(new FileOutputStream("user.txt")); out.writeObject(new User("zhangsan","123456")); out.flush(); out.close(); System.out.println("jieshu"); //读出 ObjectInputStream in=new ObjectInputStream(new FileInputStream("user.txt")); User user=(User)in.readObject(); System.out.println(user); in.close();
|
- 字节流和字符流的区别 ?
字节流读取的时候,读到一个字节就返回一个字节;字符流使用字节流读取一个或者多个字节时,先去指定的编码表,将查到的字符返回。字节流可以处理所有类型数据,而字符流只能处理字符数据,只要是处理文本数据优先考虑使用字符流,其他数据处理用字节流,字节流主要操作byte类型数组,以byte数组为主,主要的操作类OutPutStream、InputStream 字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组。所以字符流是由 Java 虚拟机将字节转化为 2 个字节的 Unicode 字符为单位的字符而成的,所以它对多国语言支持性比较好!如果是音频文件、图片、歌曲,就用字节流好点,如果是关系到中文(文本)的,用字符流好点。在程序中一个字符等于两个字节,java 提供了 Reader、Writer 两个专门操作字符流的类。 |
- 什么是 java 序列化,如何实现 java 序列化?
序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。 序列化实现:
|