JAVA字符串面试题学习随笔

1、StringBuffer 并没有重写equals方法所以比较的还是地址,直接父类是CharSequence。

2、substring(0)则返回当前地址,substring(1)则new 一个新对象出来而不是直接去常量池找。同理toUpperCase 这些方法也是new 一个出来,所以地址不同。

3、对 final 变量的访问在编译期间都会直接被替代为真实的值。String str12 = "b";String str13 = "a" + str12;final String str15 = "b";String str16 = "a" + str15;一个是常量和常量的连接还是常量,一个是String类型和常量的连接就是String类型存放在堆中。

4、private static String getBB() {  

   return "b";  }

String str17 = "ab";  

final String str18 = getBB();  

String str19 = "a" + str18;  

System.out.println(str17 == str19);    //false,运行时确定的都不再试常量,所有return这里返回的是一个对象。

5、递归方案实现代码字符串反转

public String reverse(String str) {

  if ((null == str) || (str.length()  <= 1)) {return str;}

  return reverse(str.substring(1)) + str.charAt(0);}

posted @ 2018-08-10 09:35  我有点秃页  阅读(204)  评论(0编辑  收藏  举报