Java字符串

简介: String类表示字符串。Java程序中的所有字符串文字,比如“abc”,都是作为这个类的实例实现的。字符串是常量,它们的值在创建后不能更改。

🍎道阻且长,行则将至。🍓


字符串🌾

String类表示字符串。Java程序中的所有字符串文字,比如“abc”,都是作为这个类的实例实现的。
字符串是常量,它们的值在创建后不能更改。== 字符串缓冲区支持可变字符串==。因为字符串对象是不可变的,所以它们可以被共享。
例如: String str = "abc";
相当于: char data[] = {'a ',' b ',' c ' };
`String str =new String(data);`

以下是更多使用字符串的示例:
System.out.println("abc");
String cde = "cde";
System.out.println("abc" + cde);
String c = "abc".substring(2, 3);
String d = cde.substring(1, 2);
类String包括用于检查序列中的单个字符、比较字符串、搜索字符串、提取子字符串以及创建所有字符都转换为大写或小写的字符串副本的方法。大小写映射基于字符类指定的Unicode标准版本。
Java语言为字符串连接运算符(+), 以及其他对象到字符串的转换提供了特殊支持。有关字符串连接和转换的更多信息,请参见Java语言规范。... ...

实现说明:
字符串连接操作符的实现由Java编译器决定,只要编译器最终符合Java语言规范。例如,根据JDK版本,javac编译器可能使用StringBuffer、StringBuilder或Java.lang.invoke.stringconcatfactory实现运算符。字符串转换的实现通常是通过方法 toString,由Object定义并由Java中的所有类继承。
作者:Lee Boynton, Arthur van Hoff, Martin Buchholz, Ulf Zibis

1.String

在java中最简单的创建字符串方法就是使用String类:

直接给字符串赋值String str="Java";
使用构造方法String str2=new String("Java");

他们的区别在于str存储在公共池中,而str2存储在堆中。
构造方法也可以使用字符数组作为参数:

char[] strc={'J','a','v','a'};
String str4=new String(strc);

我们可以查看String:
image.png

在String中提供有多中构造方法和字符串方法,说明:

方法 ~
字符串索引取值 charAt(int index)
字符串长度 length()
判断字符串是否为空 isEmpty()
连接字符串 concat(String str)\ +
字符串比较 equals()
字符串哈希值 hashCode()
转换为字符数组 toCharArray()
第一次出现指定字符子字符串的索引值 indexOf(String str)
指定字符子字符串最后一次出现处的索引 lastIndexOf(String str)
字符串是否匹配正则表达式 matches(String str)
根据正则表达式的匹配拆分字符串 split(String str)
子字符串 substring(int beginIndex, int endIndex)
忽略字符串前导空白和尾部空白 trim()
返回参数x的数据类型的字符串表示形式 static String valueOf(dataType x)
数字串转数字 Integer.parseInt(String str)

2.StringBuffer

由于string类型的字符串是不能修改的,当需要修改字符串我们就需要使用StringBuffer或者StringBuider的对象。

StringBuffer线程安全的;
StringBuider具有更快的速度

StringBuffer修改字符串示例(append):

StringBuffer stringBuffer = new StringBuffer("Java");
stringBuffer.append(" is");
stringBuffer.append(" The").append(" best!");

System.out.println(stringBuffer);

》初始化也可以使用非负的int型数字为参数。

我们常用到StringBufferappend方法在==原字符串==后面追加字符串。除此之外,StringBuffer还有一些常用方法:

1.反转字符串|reverse()

image.png

2.删除子字符串|delete(int start, int end)

System.out.println(stringBuffer.delete(4, 6));

image.png

3.插入子字符串|insert(int i, String s)

System.out.println(stringBuffer.insert(0, "hello "));
image.png

4.替换子字符串|replace((int start, int end, String str)

System.out.println(stringBuffer.replace(12, 16, "best language"));
image.png

5.返回当前容量|capacity()

示例:

StringBuffer stringBuffer = new StringBuffer("Java");
System.out.println(stringBuffer);
System.out.println("容量:"+stringBuffer.capacity());
stringBuffer.append(" is");
stringBuffer.append(" The").append(" best!");
System.out.println(stringBuffer);
System.out.println("容量:"+stringBuffer.capacity());

image.png

使用初始设置容量的方法:

StringBuffer stringBuffer = new StringBuffer(5);
stringBuffer.append("java");
System.out.println(stringBuffer);
System.out.println("容量:"+stringBuffer.capacity());
stringBuffer.append(" is");
stringBuffer.append(" The").append(" best!");
System.out.println(stringBuffer);
System.out.println("容量:"+stringBuffer.capacity());

image.png

发现默认容量是20,且每次扩容也是增加20。

还有length()charAt()toString()等String支持的方法。

3.StringBuider

同样也可以使用数字或者字符串进行初始化:

StringBuilder stringBuilder = new StringBuilder(5);
stringBuilder.append("Java ");
stringBuilder.append("is").append(" the best!");
System.out.println(stringBuilder);

image.png

StringBuider提供与StringBuffer兼容的API,但不保证同步。 此类设计用作StringBuffer替代品,用于单个线程使用字符串缓冲区的位置(通常情况下)。 在可能的情况下,建议优先使用此类,因为在大多数实现中它会更快。StringBuilder的主要操作是appendinsert方法。


水光潋滟晴方好,山色空蒙雨亦奇。——饮湖上初晴后雨·苏轼


☕物有本末,事有终始,知所先后。🍭

相关文章
|
2月前
|
安全 Java API
【Java字符串操作秘籍】StringBuffer与StringBuilder的终极对决!
【8月更文挑战第25天】在Java中处理字符串时,经常需要修改字符串,但由于`String`对象的不可变性,频繁修改会导致内存浪费和性能下降。为此,Java提供了`StringBuffer`和`StringBuilder`两个类来操作可变字符串序列。`StringBuffer`是线程安全的,适用于多线程环境,但性能略低;`StringBuilder`非线程安全,但在单线程环境中性能更优。两者基本用法相似,通过`append`等方法构建和修改字符串。
48 1
|
6天前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
16 3
|
6天前
|
SQL Java 索引
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
8 2
|
9天前
|
存储 移动开发 Java
java核心之字符串与编码
java核心之字符串与编码
13 2
|
16天前
|
Java
Java实现:将带时区的时间字符串转换为LocalDateTime对象
通过上述方法,你可以将带时区的时间字符串准确地转换为 `LocalDateTime`对象,这对于处理不需要时区信息的日期和时间场景非常有用。
206 4
|
26天前
|
算法 Oracle Java
Java字符串拼接技术演进及阿里巴巴的贡献
本文主要讲述了Java字符串拼接技术的演进历程,以及阿里巴巴贡献的最新实现 PR 20273。
|
1月前
|
算法 Oracle Java
Java字符串拼接技术演进及阿里巴巴的贡献
本文主要讲述了Java字符串拼接技术的演进历程,以及阿里巴巴贡献的最新实现 PR 20273。
|
2月前
|
存储 Java
|
2月前
|
存储 Java
如何在 Java 中打印字符串数组列表
【8月更文挑战第23天】
31 2
下一篇
无影云桌面