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的用法的更多相关文章

  1. java成神之——java常识

    java常识 简单DOS命令 java基础名词 java编译和运行流程 Eclipse常用快捷键 Eclipse相关操作 java基本数据类型 java基本数据类型转换 java常用运算符 java流 ...

  2. java成神之——线程操作

    线程 Future CountDownLatch Multithreading synchronized Thread Producer-Consumer 获取线程状态 线程池 ThreadLocal ...

  3. java成神之——正则表达式基本使用

    正则表达式 常用匹配规则 基本使用 标记符的使用 部分正则标记 正则表达式在字符串方法中的使用 结语 正则表达式 常用匹配规则 [abc] abc其中一个 [^abc] abc之外的一个 [a-z] ...

  4. java成神之——properties,lambda表达式,序列化

    Properties 加载defaults.properties文件 写Properties到xml文件 读Properties从xml文件 Lambda表达式 自定义 内置 sort方法中使用Lam ...

  5. java成神之——接口,泛型,类

    接口 接口定义 默认方法 函数式接口 泛型 泛型类 泛型类继承 类型限定 泛型方法 泛型接口 类 构造函数 类的继承 抽象类 instanceof运算符 内部类 equals 结语 接口 接口定义 j ...

  6. java成神之——ImmutableClass,null检查,字符编码,defaultLogger,可变参数,JavaScriptEngine,2D图,类单例,克隆,修饰符基本操作

    ImmutableClass null检查 字符编码 default logger 函数可变参数 Nashorn JavaScript engine 执行脚本文件 改变js文件输出流 全局变量 2D图 ...

  7. java成神之——注释修饰符

    注释修饰符 自定义注释 元注释 通过反射在runtime访问注释 内置注释 多注释实例 错误写法 使用容器改写 使用@Repeatable元注释 注释继承 使用反射获取注释 获取类的注释 获取方法的注 ...

  8. java成神之——enum枚举操作

    枚举 声明 枚举遍历 枚举在switch中使用 枚举比较 枚举静态构造方法 使用类来模拟枚举 枚举中定义抽象方法 枚举实现接口 单例模式 使用静态代码快 EnumSet EnumMap 结语 枚举 声 ...

  9. 转载_2016,Java成神初年

    原文地址:http://blog.csdn.net/chenssy/article/details/54017826 2016,Java成神初年.. -------------- 时间2016.12. ...

随机推荐

  1. Linux命令详解-ls

    Ls(list)命令是linux下最常用的命令.ls命令就是list的缩写缺省下ls用来打印出当前目录的清单如果ls指定其他目录那么就会显示指定目录里的文件及文件夹清单.通过ls 命令不仅可以查 ...

  2. os.path.abs()与os.path.realpath()的一点区别

    相同点 1. 两者都是返回绝对路径,如果参数path为空,则返回当前文件所在目录的绝对路径 当前py文件所在的目录是revise print(os.path.abspath("") ...

  3. 转:oracle驱动表

    以一个比较两本字典来做例子:       一本字典有索引目录(dict a), 一本没有(dict b)       现在要找出所有a开头的单词的异同       那么比较的时候,你会怎么比较?    ...

  4. PostBack IsPostBack

    这涉及到aspx的页面回传机制的基础知识 postback是回传 即页面在首次加载后向服务器提交数据,然后服务器把处理好的数据传递到客户端并显示出来,就叫postback, ispostback只是一 ...

  5. sysbench安装for oracle

    RHEL7.2+ 1.依赖包安装 * autoconf * automake * cdbs * debhelper (>= 9) * docbook-xml * docbook-xsl * li ...

  6. Java 对称加密

    最近在做一个用户 token 功能,学习了加密相关 AES/DES.RSA 等.其中涉及一个对称和非对称加密问题.对称加密虽然没有非对称加密那样安全性高,但好处是加密速度快,但某些场合还是可以选择使用 ...

  7. bzoj 2657 旅游

    Written with StackEdit. Description 到了难得的暑假,为了庆祝小白在数学考试中取得的优异成绩,小蓝决定带小白出去旅游~~ 经过一番抉择,两人决定将\(T\)国作为他们 ...

  8. bzoj 2734 集合选数

    Written with StackEdit. Description <集合论与图论>这门课程有一道作业题,要求同学们求出\(\{1, 2, 3, 4, 5\}\)的所有满足以 下条件的 ...

  9. Python错误TypeError: write() argument must be str, not bytes

    2016-07-03 20:51:25 今天使用Python中的pickle存储的时候出现了以下错误: TypeError: write() argument must be str, not byt ...

  10. 理解SQL【转http://blog.jobbole.com/55086/】

    很多程序员视 SQL 为洪水猛兽.SQL 是一种为数不多的声明性语言,它的运行方式完全不同于我们所熟知的命令行语言.面向对象的程序语言.甚至是函数语言(尽管有些人认为 SQL 语言也是一种函数式语言) ...