Java笔记

2018-05-13  本文已影响10人  Muscleape

Java基础

Java面试通关要点

1.面向对象的特征

封装
继承
多态

2.final,finally,finalize的区别

final

使用场景

3.为什么String类是不可变的

4.try-with-resources结构

Java7中新增加的异常处理机制;

private static void printFileJava7() throws IOException {
    try(FileInputStream input = new FileInputStream("file.txt")) {
        int data = input.read();
        while(data != -1){
            System.out.print((char) data);
            data = input.read();
        }
    }
}
  1. try语句块执行结束时,try()中括号里的FileInputStream会被自动关闭,因为其实现了java中的java.lang.AutoCloseable接口;
  2. try(){}结构中,{}中代码抛出一个异常(业务中需要捕获的异常),()中资源被关闭时也抛出异常,则()中的异常会被抑制;

5.multiple catch

如果用一个catch块处理多个异常,可以用管道符(|)将它们分开,在这种情况下异常参数变量(ex)是定义为final的,所以不能被修改。这一特性将生成更少的字节码并减少代码冗余。

catch(IOException | SQLException | Exception ex){
     logger.error(ex);
     throw new MyException(ex.getMessage());
}

6、super和this

super不是一个对象的引用,不能将super赋给另一个对象变量,super只是一个指示编译器调用超累方法的特殊关键字。

7、方法签名

方法的名字和参数列表成为方法的签名,返回类型不是签名的一部分。

8、String

//直接量字符串对象
String s="hello world";
String s2  = "hello world";
//s2与s都是直接量字符串对象“hello world”,s与s2都指向同一个字符串
System.out.println( s == s2);
//上述代码返回值为“true”,即s和s2指向同一个地址
//下面代码中str只是个引用变量,str指向的对象在不断变化,最初的对象没有改变
String str = "I like";
str = str + "java";
//1、String()----初始化一个String对象,表示一个空字符序列
String s = new String();
//2、String(String value)----利用一个直接量创建一个新串
String s1 = new String("hello");
//3、String(char[] value)----利用一个字符数组创建
char[] c = {'h','e','l','l','o'};
String s2 = new String(c);
//4、String(char[] value,int offset,int count)----截取字符数组,从offset开始count个字符创建
String s3 = new String(c,1,3);
//5、String(StringBuffer buffer)----利用StringBuffer创建
String s = "123" + "456";

解答:由于Java字符串的缓存机制,编译器在编译的时候会进行优化,在编译的过程中两个字符串会被合并成一个“123456”。如果在缓存池中目前没有123456这个对象,会产生一个,且栈中产生一个引用s指向它。如果缓存池中已存在“123456”,将产生0个对象,直接用s指向它。

上一篇 下一篇

猜你喜欢

热点阅读