String为什么被设计成不可变?
  关于这个问题,我在网上查了资料,但网上说的不详细。比如说String被用作数据库或接口的参数,可变会带来安全问题。我不理解这句话的含义。最好举例说明

解决方案 »

  1.   

    首先调用change函数,刚开始str1和chs1指向str和chs对应的堆空间,执行后,因为String不可变,所有new一个新空间存放hello,str1指向改变。而char[]是可变的,则不会new新空间,导致chs的值随之改变。
    一般来讲配置参数都必须不可变的,但是万一程序中调用啥函数的时候,进行了操作,若是不可变类型,不会影响其本身,否则配置文件会出错
      

  2.   

    为什么你一定要它变了。
    要变就用Stringbuffer
      

  3.   

    用Stringbuffer.append
      

  4.   

    String被用作数据库或接口的参数,可变会带来安全问题 这应该是和sql注入有关,
    因为string类型参数可能会被人传入一些拼接的sql语句