【Java】String类

常用方法

1. 构造方法

常用的构造方法

  • 使用常量进行构造
  • 直接newString对象
  • 使用字符数组进行构造

【Java】String类_第1张图片

注意

  • 1. String 是引用类型,内部并不存储字符串本身
    public static void main(String[] args) {
    // s1和s2引用的是不同对象 s1和s3引用的是同一对象
    String s1 = new String("hello");
    String s2 = new String("world");
    String s3 = s1;
    System.out.println(s1.length()); // 获取字符串长度---输出5
    System.out.println(s1.isEmpty()); // 如果字符串长度为0,返回true,否则返回false
    }

    【Java】String类_第2张图片

  • 2. Java “” 引起来的也是String类型对象

2. String 对象的比较

  • 1. == 比较是否引用同一个对象
  • 2. boolean equals(Object anObject) 方法:按照字典序比较
  • 3. int compareTo(String s) 方法 : 按照字典序进行比较
    • 先按照字典次序大小比较,如果出现不等的字符,直接返回这两个字符的大小差值 
    • 如果前 k 个字符相等 (k 为两个字符长度最小值 ) ,返回值两个字符串长度差值
  • 4.  int compareToIgnoreCase(String str) 方法:与 compareTo 方式相同,但是忽略大小写比较

3. 转化

  • 1. 数值和字符串转化  

    • 数值 -> 字符串:String.valueOf

    • 字符串 -> 数值:Integer.parseInt  ... 包装器.parse类型

  • 2. 大小写转换
    • 大写: toUpperCase
    • 小写:toLowerCase
  • 3. 字符串转数组
    • toCharArray
  • 4. 格式化
    • format

4. 字符串拆分

【Java】String类_第3张图片

【注意】

  • 特殊字符需要进行转义
  • 字符"|","*","+"都得加上转义字符,前面加上 "\\" .
  • 而如果是 "\" ,那么就得写成 "\\\\" .
  • 如果一个字符串中有多个分隔符,可以用 "|"作为连字符

5. 字符串的不可变性

String是一种不可变对象. 字符串中的内容是不可改变。字符串不可被修改,是因为:

  • 1. String类在设计时就是不可改变的,String类实现描述中已经说明了  【Java】String类_第4张图片
    • String 类中的字符实际保存在内部维护的 value 字符数组中
      • 1. String 类被 final 修饰,表明该类不能被继承。
      • 2. value 被final修饰,表示value自身的值不可以被改变。即value不能指向其它的对象。
  • 2. 所有涉及到可能修改字符串内容的操作都是创建一个新对象,改变的是新对象。
  • 3. String不能被修改不是因为value被final修饰,而是被private修饰了,并且String类中没有提供get和set的方法。

6. String类的修改

String类的修改步骤如下

【Java】String类_第5张图片

可见String类修改的时候,会创建很多的临时对象,效率一定会慢!

对比 String 、StringBuffer、StringBuilder 修改的时间消耗代码

public class Test {

    public static void main(String[] args) {
        long start = System.currentTimeMillis();
        String s = "";
        for(int i = 0; i < 10000; ++i){
            s += i;
        }
        long end = System.currentTimeMillis();
        System.out.println(end - start);
        start = System.currentTimeMillis();
        StringBuffer sbf = new StringBuffer("");
        for(int i = 0; i < 10000; ++i){
            sbf.append(i);
        }
        end = System.currentTimeMillis();
        System.out.println(end - start);
        start = System.currentTimeMillis();
        StringBuilder sbd = new StringBuilder();
        for(int i = 0; i < 10000; ++i){
            sbd.append(i);
        }
        end = System.currentTimeMillis();
        System.out.println(end - start);
    }
}

String、StringBuffer、StringBuilder的区别

  • String的内容不可修改,StringBuffer和StringBuilder的内容可以修改
  • StringBuffer和StringBuilder的功能大部分都是类似的
  • StringBuffer采用同步处理,属于线程安全的;StringBuilder为采用同步处理,不是线程安全的

你可能感兴趣的:(#,Java,java,开发语言)