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

Posted 叶家伟的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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成神的系列文章之一

如果你想知道,但是本文没有的,请下方留言

我会第一时间总结出来并发布填充到本文

以上是关于java成神之——java中string的用法的主要内容,如果未能解决你的问题,请参考以下文章

java成神之——安全和密码

java成神之——集合框架之ArrayList,Lists,Sets

java成神之——Stream和Optional

java成神之——enum枚举操作

成神之Java之路

java成神之——HttpURLConnection访问api