• String内部使用char[]字符数组储存数据。
  • String不可改变,对String对象的修改都是返回一个新的对象。
  • String类是一个final类,不能继承。
  • 被创建的String对象,都会被放入字符串常量池。

创建String对象的几种方法:

  • 使用new创建
    • 编译器首先会在堆创建对象,然后检查字符串常量区是否有该字符串常量池。没有就创建一个加入。
    • String s = new String("ok");这种方式可能会创建两个对象。
  • 使用=赋值创建
    • 编译器首先检查常量池是否已经存在,存在则直接返回已经存在的;否则创建一个新的返回,并加入常量池。
    • String s = "ok";这种方式最多创建一个对象。
  • 使用valueOf()创建
    • 与使用=创建一样。

所以推荐使用=valueOf()创建字符串。

String不可改变,要使用可变的字符串应使用StringBufferStringBuilder

  • StringBuffer : 线程安全,同步的可变字符串。
  • StringBuilder : 线程不安全,非同步的可变字符串。
1
2
3
4
5
String s = "String";
String s2 = String.valueOf("String");
String s3 = new String("String");
System.out.println(s==s2); //true
System.out.println(s==s3); //false


Java     

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!