概述

  1. 字符串一旦创建不可变。
  2. 在java中用双引号引起来的都是String对象
  3. java中规定,双引号引起来的字符串是不可变的
  4. 在JDK中,双引号引起来的字符串都是直接储存在方法区字符串常量池
  5. String s = “abc”;
    1. 栈中有局部变量,变量保存了内存地址指向方法区中的常量池”abc”(直接指向)
  6. String s1= new String (“abcdef”)
    1. 先创建了对象在堆中,堆中有引用指向常量池”abcdef”
  7. String类已经重新写好了equals()方法,可直接调用
  8. String 类已经重写好了toString()方法

    String的构造方法

  • String s = “abc”;
  • String s = new String(“abc”);
  • String s = new String(byte数组);
  • String s = new String(byte数组,起始下标, 长度);
  • String s = new String(char数组);
  • String s = new String(char数组,起始下标, 长度);

    String常用方法

  • compareTo() 判断字符串大小

  • contains() //判断是否包含
  • endsWith() 判断是否以它结尾
  • equalsIgnoreCase() 判断相等不相等 忽略大小写
  • getByte() 将字符串转换成Byte数组 (ascll码)
  • indexOf() 返回该字符出现在字符串中的第一次索引
  • replace() 替换
  • split() 拆分字符串,返回String数组
  • startsWith() 判断字符串是否以该字符开始
  • toLowerCase() 转换小写
  • toUpperCase() 转换大写
  • trim() 去前后空格

    StringBuffer/StringBuilder

    String Buffer 是线程安全的
    synchronized 同步
    String builder 非线程安全的
    使用局部变量是用非线程安全的(因为不存在线程安全问题)

    连接字符串,初始化16个字符, append()添加
    频繁进行字符串拼接不建议使用“+”