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

时间:2022-08-30 09:02:34

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&comma;lambda表达式&comma;序列化

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

  5. java成神之——接口&comma;泛型&comma;类

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

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

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

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

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

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

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

  9. 转载&lowbar;2016,Java成神初年

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

随机推荐

  1. 做一个 App 前需要考虑的几件事

    做一个 App 前需要考虑的几件事  来源:limboy的博客   随着工具链的完善,语言的升级以及各种优质教程的涌现,做一个 App 的成本也越来越低了.尽管如此,有些事情最好前期就做起来,避免当 ...

  2. &lbrack;转&rsqb; Android PhoneGap Cordova 体系结构

    说明: 本文档只针对Cordova(PhoneGap)的Android端,基于Cordova2.1.0版本. 一.总体结构 Cordova的目标是用HTML,JS,来完成手机客户端的开发,并且是只开发 ...

  3. 算法心得1:由&dollar;nlogn&dollar;复杂度的LIS算法引起的思考

    LIS(Longest Increasing Subsequence)是一类典型的动态规划类问题,简化描述如下: 给定$N(n) = \{1,2...,n\}$的一个排列$P(n)$,求$P(n)$中 ...

  4. CentOS安装Node&period;js简单教程

    记录一下自己安装过程 先安装gcc-c++编译环境和openssl  代码如下 复制代码 yum install gcc-c++ openssl-devel wget http://nodejs.or ...

  5. POJ 3311 Hie with the Pie(状压DP &plus; Floyd)

    题目链接:http://poj.org/problem?id=3311 Description The Pizazz Pizzeria prides itself in delivering pizz ...

  6. BizTalk开发小技巧

    BizTalk开发小技巧 随笔分类 - Biztalk Biztalk 使用BizTalk实现RosettaNet B2B So Easy 摘要: 使用BizTalk实现RosettaNet B2B ...

  7. Java设计模式之原型设计模式

    概述 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结. 使用设计模式的目的:为了代码可重用性.让代码更容易被他人理解.保证代码可靠性. 设计模式 ...

  8. 堆(heap)、栈(stack)、方法区(method)

    JVM内存分为3个区:堆(heap).栈(stack).方法区(method) 1.堆(heap):存储的全部对象,每个对象有个与之对应的class信息.即通过new关键字和构造器创建的对象.JVM只 ...

  9. MyBatis实战之初步

    关于MyBatis与Hibernate及其JDBC的比较,大家可以参考我的这篇文章:MyBatis+Hibernate+JDBC对比分析 如果觉得这个还不够系统全面,可以自行Google或者百度. 用 ...

  10. Types方法之upperBound-lowerBound-isUnbounded-containsType

    1.upperBound(Type t)方法 /** * The "rvalue conversion". * The upper bound of most types is t ...