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常识
java常识 简单DOS命令 java基础名词 java编译和运行流程 Eclipse常用快捷键 Eclipse相关操作 java基本数据类型 java基本数据类型转换 java常用运算符 java流 ...
-
java成神之——线程操作
线程 Future CountDownLatch Multithreading synchronized Thread Producer-Consumer 获取线程状态 线程池 ThreadLocal ...
-
java成神之——正则表达式基本使用
正则表达式 常用匹配规则 基本使用 标记符的使用 部分正则标记 正则表达式在字符串方法中的使用 结语 正则表达式 常用匹配规则 [abc] abc其中一个 [^abc] abc之外的一个 [a-z] ...
-
java成神之——properties,lambda表达式,序列化
Properties 加载defaults.properties文件 写Properties到xml文件 读Properties从xml文件 Lambda表达式 自定义 内置 sort方法中使用Lam ...
-
java成神之——接口,泛型,类
接口 接口定义 默认方法 函数式接口 泛型 泛型类 泛型类继承 类型限定 泛型方法 泛型接口 类 构造函数 类的继承 抽象类 instanceof运算符 内部类 equals 结语 接口 接口定义 j ...
-
java成神之——ImmutableClass,null检查,字符编码,defaultLogger,可变参数,JavaScriptEngine,2D图,类单例,克隆,修饰符基本操作
ImmutableClass null检查 字符编码 default logger 函数可变参数 Nashorn JavaScript engine 执行脚本文件 改变js文件输出流 全局变量 2D图 ...
-
java成神之——注释修饰符
注释修饰符 自定义注释 元注释 通过反射在runtime访问注释 内置注释 多注释实例 错误写法 使用容器改写 使用@Repeatable元注释 注释继承 使用反射获取注释 获取类的注释 获取方法的注 ...
-
java成神之——enum枚举操作
枚举 声明 枚举遍历 枚举在switch中使用 枚举比较 枚举静态构造方法 使用类来模拟枚举 枚举中定义抽象方法 枚举实现接口 单例模式 使用静态代码快 EnumSet EnumMap 结语 枚举 声 ...
-
转载_2016,Java成神初年
原文地址:http://blog.csdn.net/chenssy/article/details/54017826 2016,Java成神初年.. -------------- 时间2016.12. ...
随机推荐
-
做一个 App 前需要考虑的几件事
做一个 App 前需要考虑的几件事 来源:limboy的博客 随着工具链的完善,语言的升级以及各种优质教程的涌现,做一个 App 的成本也越来越低了.尽管如此,有些事情最好前期就做起来,避免当 ...
-
[转] Android PhoneGap Cordova 体系结构
说明: 本文档只针对Cordova(PhoneGap)的Android端,基于Cordova2.1.0版本. 一.总体结构 Cordova的目标是用HTML,JS,来完成手机客户端的开发,并且是只开发 ...
-
算法心得1:由$nlogn$复杂度的LIS算法引起的思考
LIS(Longest Increasing Subsequence)是一类典型的动态规划类问题,简化描述如下: 给定$N(n) = \{1,2...,n\}$的一个排列$P(n)$,求$P(n)$中 ...
-
CentOS安装Node.js简单教程
记录一下自己安装过程 先安装gcc-c++编译环境和openssl 代码如下 复制代码 yum install gcc-c++ openssl-devel wget http://nodejs.or ...
-
POJ 3311 Hie with the Pie(状压DP + Floyd)
题目链接:http://poj.org/problem?id=3311 Description The Pizazz Pizzeria prides itself in delivering pizz ...
-
BizTalk开发小技巧
BizTalk开发小技巧 随笔分类 - Biztalk Biztalk 使用BizTalk实现RosettaNet B2B So Easy 摘要: 使用BizTalk实现RosettaNet B2B ...
-
Java设计模式之原型设计模式
概述 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结. 使用设计模式的目的:为了代码可重用性.让代码更容易被他人理解.保证代码可靠性. 设计模式 ...
-
堆(heap)、栈(stack)、方法区(method)
JVM内存分为3个区:堆(heap).栈(stack).方法区(method) 1.堆(heap):存储的全部对象,每个对象有个与之对应的class信息.即通过new关键字和构造器创建的对象.JVM只 ...
-
MyBatis实战之初步
关于MyBatis与Hibernate及其JDBC的比较,大家可以参考我的这篇文章:MyBatis+Hibernate+JDBC对比分析 如果觉得这个还不够系统全面,可以自行Google或者百度. 用 ...
-
Types方法之upperBound-lowerBound-isUnbounded-containsType
1.upperBound(Type t)方法 /** * The "rvalue conversion". * The upper bound of most types is t ...