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常用的50个命令

    50个最常用的Unix/Linux命令 2014-08-20 这篇文章翻译自http://www.thegeekstuff.com/2010/11/50-linux-commands/这些都是一些很常 ...

  2. 移动国家号(MCC)

    定义移动国家号 Mobile Country Code (MCC)由三位十进制数组成,它表明移动用户(或系统)归属的国家. 格式移动国家号(MCC)由三个十进制数组成,编码范围为十进制的000-999 ...

  3. HTTP metadata数据

    信息元位置 信息元名称 信息元ID 信息元描述 1 MetadataVersion 5000 Metadata版本号 当前版本号为1.0 2 MetadataID 1019 MetadataID 3 ...

  4. 转:走近NoSQL数据库的四大家族

    在目前的企业IT架构中,系统管理员以及DBA都会考虑使用NoSQL数据库来解决RDBMS所不能解决的问题,特别是互联网行业.传统的关系型数据库主要以表(table)的形式来存储数据,而无法应对非结构化 ...

  5. Activity传递参数——传递自定义数据类型

    一.新建一个空的工程 二.在主界面中添加一个按钮 三.新建一个空的activity,并命名为TheAty 四.新建一个user类 //注意这里要实现Serializable,不然在传递参数时会出错 p ...

  6. UI-不常用控件 UIActivityIndicatorView、UIProgressView、UISegmentedControl、UIStepper、UISwitch、UITextView、UIAlertController

    1 //UIActivityIndicatorView //小菊花,加载================================================================ ...

  7. Python基础学习(第3天)

    第6课 循环 1.for 元素 in 序列: statement Python的新函数range():新建一个数列,都是整数,从0开始,下一个元素比上一个元素大1,一直到数列的上限(不包括上限).PS ...

  8. C++纯虚函数实现

    纯虚函数就是一个在基类中的虚函数,差别只是在一般的虚函数声明的后面加了"=0",虚函数允许函数通过与函数体之间的联系在运行时才建立,也就是在运行时才决定如何动作,称为运行时的多态性 ...

  9. Manual Install Cocos2d-x vc template on Windows 7

    Manual Installation Process Download the template file from HERE and extract it. Open the file CCApp ...

  10. CRC-16校验原理

    最详细易懂的CRC-16校验原理(附源程序) 1.循环校验码(CRC码): 是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定. 2.生成CRC码的基本原理: 任意一 ...