Java11新特性——String新增方法

Java11新特性——String新增方法

  • String新增方法
    • String判空方法
    • 去除首尾部分空白
    • 复制字符串
    • isEmpty()和isBlank对比
      • isEmpty源码
      • isBlank源码(当前为非中文源码跟踪)
        • 解读

String新增方法

String判空方法

        //String判空方法isBlank()
        System.out.println(" ".isBlank());

去除首尾部分空白

        //去除首尾部分空白strip()
        System.out.println("  hello  ".strip());

复制字符串

//使用repeat(int time)方法,参数表示复制次数
 System.out.println("hello".repeat(10));

isEmpty()和isBlank对比

isEmpty遇到含有空白占位符也会认为非空

isEmpty源码

public boolean isEmpty() {
        return value.length == 0;
    }

isBlank源码(当前为非中文源码跟踪)

    public boolean isBlank() {
        return indexOfNonWhitespace() == length();
    }

//indexOfNonWhitespace()追踪
private int indexOfNonWhitespace() {
        if (isLatin1()) {
            return StringLatin1.indexOfNonWhitespace(value);
        } else {
            return StringUTF16.indexOfNonWhitespace(value);
        }
    }
    
//indexOfNonWhitespace()追踪
    public static int indexOfNonWhitespace(byte[] value) {
        int length = value.length;
        int left = 0;
        while (left < length) {
            char ch = (char)(value[left] & 0xff);
            if (ch != ' ' && ch != '\t' && !Character.isWhitespace(ch)) {
                break;
            }
            left++;
        }
        return left;
    }
    
//length()追踪
    public int length() {
        return value.length >> coder();
    }
    
//code()追踪
    byte coder() {
        return COMPACT_STRINGS ? coder : UTF16;
    }

解读

  1. indexOfNonWhitespace()获取数组中的内容并判断是否是空字符或任意空白占位符,若不是返回0,否则返回对应数量的字符长度
  2. length():进行无符号右移,若为空字符则右移0位即获取原始字符长度,否则右移1位,由源码追踪知道COMPACT_STRINGS一定为true,所以永远返回0

你可能感兴趣的:(笔记,Java学习,java,jvm,开发语言)