• java成神之——java中string的用法


    java中String的用法

    String基本用法

    字符串一旦创建在堆中就不可变
    
    字符串声明
        String str = "你好";
        String str = new String("abc");
    
    字符串比较
        String str1 = new String("abc");
        String str2 = "abc";
        System.out.println(str1.equals(str2));          true 比较字符串中每个字符是否相等
        System.out.println(str1 == str2);               false
    
    其他的常用实例方法
        str1.equals(str2);
        str1.toUpperCase();
        str1.toLowerCase();
        str.contains(substr);
        str.indexOf(substr); // 找不到返回-1
    

    String分割

    split方法传递正则表达式,正则特殊符号必须转义
    
    正则符号 < > - = ! ( ) [ ] { }  ^ $ | ? * + .
    
    "a|b|c|".split("\|");                  转义符转义
    
    "a|b|c|".split(Pattern.quote("|"));     调用方法转义 
    
    "a|b|c|".split("\|", -1);              传递第二个参数,表示不去除空字符
    
    多分割符使用
    StringTokenizer tokenizer = new StringTokenizer("agetwget", "gt"); // 分别以g和t作为分隔符
    while(tokenizer.hasMoreElements()) {
        System.out.println(tokenizer.nextToken());
    } 
    输出结果
    a
    e
    w
    e
    

    String拼接

    join的使用
        String[] items = {"a", "b", "c"};
        String str = String.join("+", items);                               // a+b+c
    
    StringJoiner的使用
        StringJoiner sj = new StringJoiner(", ", "[", "]");
        sj.add("a");
        sj.add("b");
        sj.add("c");
        sj.toString()                                                       // [a, b, c]
    
    Stream的使用
        Stream<String> ss = Stream.of("a", "b", "c");
        String str = ss.collect(Collectors.joining(", ", "[", "]"));        // [a, b, c]
    
    StringBuilder的使用
        StringBuilder sb = new StringBuilder();                             // StringBuilder,开发多线程程序不建议使用
        sb.append("a").append("b").append("c");
        sb.toString();                                                      // abc
    
    concat的使用
        String str = "a".concat("b").concat("c");                           // abc
    

    String截取

    String str = "0123456789";
    
    从索引位2的位置一直截取到末尾
    str.substring(2);           // 23456789
    
    从索引2的位置截取到索引为5的位置,不包含最后一位
    str.substring(2, 5);        // 234
    

    String换行符和format格式化

    换行符 System.lineSeparator()
    
    %n 也代表换行符
    String str = String.format("line 1: %s.%nline 2: %s%n", "firstLine","secondLine");
    输出结果
    line 1: firstLine.
    line 2: secondLine
    

    String反转字符串和去除空白字符

    反转字符串
        StringBuilder str = new StringBuilder("abc");
        str.reverse().toString(); // abc
    
    去除空白字符
        "    aaaa   ".trim();
    

    String获取指定位置字符和replace的使用

    获取指定位置字符
        "0123".charAt(1)                    // 1
    
    replace的使用
        替换所有,使用字符串
        "aaa".replace('a','b');             // bbb
    
        替换所有,使用正则,圆括号表示正则分组,$1表示反向引用
        "aabaa".replaceAll("(b)","c$1c");   // aacbcaa, 
        
        replaceFirst 只替换匹配的第一个
    

    StringBuffer的使用

    线程安全
    
    StringBuffer sb = new StringBuffer();
    sb.append("a").append("b").append("c");
    sb.toString();
    

    字符串转换

    基本类型的转换

    int num = Integer.parseInt("123");
    double num = Double.parseDouble("1.12");
    float num = Float.parseFloat("1.1");
    long num = Long.parseLong("111
    BigInteger num = new BigInteger("11");
    BigDecimal num = new BigDecimal("1.11");
    String.valueOf(11);
    
    boolean falseBool = Boolean.parseBoolean("False");
    boolean trueBool = Boolean.parseBoolean("True");
    

    添加字符编码

    String testString = new String("test".getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8);
    String testString = new String ("test".getBytes("UTF-8"), "UTF-8");
    

    Base64的编码和解码

    DatatypeConverter实现
    
        依赖
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.0</version>
        </dependency>
    
        byte[] binaryData = "some arbitrary data".getBytes("UTF-8");
        String encodedData = DatatypeConverter.printBase64Binary(binaryData);    // c29tZSBhcmJpdHJhcnkgZGF0YQ==
        byte[] decodedData = DatatypeConverter.parseBase64Binary(encodedData);
        new String(decodedData)                                                  // "some arbitrary data"
    
    内置Base64实现
    
        String encoded = Base64.getEncoder().encodeToString("some arbitrary data".getBytes("UTF-8"));                   // c29tZSBhcmJpdHJhcnkgZGF0YQ==
        String encoded = Base64.getEncoder().withoutPadding().encodeToString("some arbitrary data".getBytes("UTF-8"));  // c29tZSBhcmJpdHJhcnkgZGF0YQ
        new String(Base64.getDecoder().decode(encoded))
    

    结语

    本文章是java成神的系列文章之一
    
    如果你想知道,但是本文没有的,请下方留言
    
    我会第一时间总结出来并发布填充到本文
    
  • 相关阅读:
    Linux下sed,awk,grep,cut,find学习笔记
    Python文件处理(1)
    KMP详解
    Java引用详解
    解决安卓中页脚被输入法顶起的问题
    解决swfupload上传控件文件名中文乱码问题 三种方法 flash及最新版本11.8.800.168
    null id in entry (don't flush the Session after an exception occurs)
    HQL中的Like查询需要注意的地方
    spring mvc controller间跳转 重定向 传参
    node to traverse cannot be null!
  • 原文地址:https://www.cnblogs.com/ye-hcj/p/9723246.html
Copyright © 2020-2023  润新知