String

  1. String 是基础数据类型么?
    不是。String 只是一个类.l
  2. 为什么设计为不可变类呢?
    String设计为不可变类主要考虑到:效率和安全。
    效率:
    1.在早期的JVM实现版本中,被final修饰的方法会被转为内嵌调用以提升执行效率。而从Java SE5/6开始,就渐渐摈弃这种方式了。因此在现在的Java SE版本中,不需要考虑用final去提升方法调用效率。只有在确定不想让该方法被覆盖时,才将方法设置为final。
    2.缓存hashcode,String不可变,所以hashcode不变,这样缓存才有意义,不必重新计算。
    安全:String常被作为网络连接,文件操作等参数类型,倘若可改变,会出现意想不到的结果。