zoukankan      html  css  js  c++  java
  • 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成神的系列文章之一
    
    如果你想知道,但是本文没有的,请下方留言
    
    我会第一时间总结出来并发布填充到本文
    
  • 相关阅读:
    javaScript
    alsa驱动分析(1)
    Android 音频系统[相当好zz]
    verilog语法学习心得[zz]
    Linux ALSA声卡驱动之二:声卡的创建[zz]
    关于手机线控耳机那点事儿!![zz]
    armlinux备忘
    聊聊Android的音频架构[zz]
    片上系统(SOC)设计流程及其集成开发环境[zz]
    记录中心设置
  • 原文地址:https://www.cnblogs.com/ye-hcj/p/9723246.html
Copyright © 2011-2022 走看看