JAVA面试题系列2

6.反射中,Class.forName()和ClassLoader.loadClass()的区别?

Class.forName(className) 方 法 , 内 部 实 际 调 用 的 方 法 是 Class.forName(className,true,classloader); 第 2 个 boolean 参数表示类是否需要初始化, Class.forName(className)默认是需要初始化, 一旦初始化,就会触发目标对象的 static 块代码执行,static 参数也也会被再次初始 化 ,ClassLoader.loadClass(className) 方 法 , 内 部 实 际 调 用 的 方 法 是 ClassLoader.loadClass(className,false);第 2 个 boolean 参数,表示目标对象是否进行链接, false 表示不进行链接,由上面介绍可以,不进行链接意味着不进行包括初始化等一些列步 骤,那么静态块和静态对象就不会得到执行。

7. Int 和 Integer 的区别?

Integer 是 int 的包装类型,在拆箱和装箱中,二者自动转换.int 是基本类型,直接存数值; 而 integer 是对象;用一个引用指向这个对象.由于 Integer 是一个对象,在 JVM 中对象需要 一定的数据结构进行描述,相比 int 而言,其占用的内存更大一些.

8. String、StringBuilder、StringBuffer 区别?

String 字符串常量 不可变 使用字符串拼接时是不同的 2 个空间 StringBuffer 字符串变量 可变 线程安全 字符串拼接直接在字符串后追加 StringBuilder 字符串变量 可变 非线程安全 字符串拼接直接在字符串后追加
1.StringBuilder 执行效率高于 StringBuffer 高于 String.

2.String 是一个常量,是不可变的,所以对于每一次+=赋值都会创建一个新的对象, StringBuffer 和 StringBuilder 都是可变的,当进行字符串拼接时采用 append 方 法,在原来的基础上进行追加,所以性能比 String 要高,又因为 StringBuffer 是 线程安全的而 StringBuilder 是线程非安全的,所以 StringBuilder 的效率高于 StringBuffer.

3.对于大数据量的字符串的拼接,采用 StringBuffer,StringBuilder.

9. Hashtable 和 Hashmap 的区别?

1、HashTable 线程安全,HashMap 非线程安全
2、Hashtable 不允许 null 值(key 和 value 都不可以),HashMap 允许 null 值(key 和 value 都可以)。
3、两者的遍历方式大同小异,Hashtable 仅仅比 HashMap 多一个 elements 方法。

10. 说几个常见的编译时异常?

SQLException 提供有关数据库访问错误或其他错误的信息的异常。 IOexception 表示发生了某种 I / O 异常的信号。此类是由失败或中断的 I / O 操作产生的 一般异常类 FileNotFoundException 当试图打开指定路径名表示的文件失败时,抛出此异常。 ClassNotFoundException 找不到具有指定名称的类的定义。 EOFException 当输入过程中意外到达文件或流的末尾时,抛出此异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值