一月八号面试题整理

1. 内部类可以引用它的包含类的成员吗?有没有什么限制?

  1. 完全可以。如果不是静态内部类,那没有什么限制!
  2. 如果你把静态嵌套类当作内部类的一种特例,那在这种情况下不可以访问外部类的普通成员变量,而只能访问外部类中的静态成员
  3. 静态嵌套类
    • 在一个类的内部定义另一个类, 这种类称为嵌套类(nested classes),它有两种类型:
      • 静态嵌套类和非静态嵌套类.静态嵌套类使用很少,
      • 最重要的是非静态嵌套类, 也即是被称作为内部类(inner).

2.如何把一段逗号分割的字符串转换成一个数组?

  1. 用正则表达式,代码大概为:String[] result = orgStr.split(“,”, -1);
  2. 用StingTokenizer ,用于分隔字符串。
  3. 最笨的办法,用String.indexOf()

3. 数组有没有length()这个方法?String有没有length()这个方法?

  1. 数组没有length()这个方法,有length的属性。
  2. String中有length()这个方法。

4. 下面这条语句一共创建了多少个对象:String s=“a”+“b”+“c”+“d”;

  1. Javac编译可以对字符串常量直接相加的表达式进行优化,不必要等到运行期去进行加法运算处理,而是在编译时去掉其中的加号,直接将其编译成一个这些常量相连的结果。
  2. 题目中的第一行代码被编译器在编译时优化后,相当于直接定义了一个”abcd”的字符串,所以,上面的代码应该只创建了一个String对象。写如下两行代码,
    String s = “a” + “b” + “c” + “d”;
    System.out.println(s == “abcd”);
    最终打印的结果应该为true。

5.final, finally, finalize的区别?

  1. final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 内部类要访问局部变量,局部变量必须定义成final类型,例如,一段代码……
  2. finally是异常处理语句结构的一部分,表示总是执行。
  3. finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。JVM不保证此方法总被调用

6.运行时异常与一般异常有何异同?

  1. 相同
    • 异常表示程序运行过程中可能出现的非正常状态,他们都属于Exception类及其子类。
  2. 不同
    1. 定义不同
      • 运行时异常都是RuntimeException类及其子类异常,如NullPointerException、IndexOutOfBoundsException等。
      • 一般异常是daoRuntimeException以外的异常
    2. 处理方法不同
      • 运行时异常是不检查异常,程序中可以选择捕获处理,也可以不处理。
      • 一般异常,JAVA编译器强制要求用户必需对出现的这些异常进行catch并处理,否则程序就不能编译通过。
    3. 发生原因不同
      • 运行时异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。
      • 一般异常可能是你的代码编写可能有潜在问题

7.error和exception有什么区别?

  1. Exception是java程序运行中可预料的异常情况,咱们可以获取到这种异常,并且对这种异常进行业务外的处理。
  2. Error是java程序运行中不可预料的异常情况,这种异常发生以后,会直接导致JVM不可处理或者不可恢复的情况。

8.Java中的异常处理机制的简单原理和应用?

  1. 异常是指java程序运行时(非编译)所发生的非正常情况或错误。当java程序违反了java语义规则时,java虚拟机就会将发生的错误表示为一个异常。
  2. 应用
    • 针对可能出现异常的语句进行try-catch

9.请写出你最常见到的5个runtime exception?

  1. ArithmeticException——由于除数为0引起的异常;
  2. ArrayStoreException——由于数组存储空间不够引起的异常;
  3. NegativeArraySizeException—一数组长度是负数,则产生异常;
  4. IndexOutOfBoundsExcention——由于数组下标越界或字符串访问越界引起异常;
  5. ClassNotFoundException——未找到指定名字的类或接口引起异常;
  6. FileNotFoundException——未找到指定文件引起异常;
  7. IOException——由于文件未找到、未打开或者I/O操作不能进行而引起异常;

10.启动一个线程是用run()还是start()?

  1. 启动一个线程是调用start()方法,使线程就绪状态,以后可以被调度为运行状态,一个线程必须关联一些具体的执行代码,
  2. run()方法是该线程所关联的执行代码。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值