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方法。


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


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

相关文章
|
4月前
|
SQL JSON Java
告别字符串拼接:用Java文本块优雅处理多行字符串
告别字符串拼接:用Java文本块优雅处理多行字符串
431 108
|
6月前
|
SQL JSON Java
告别拼接噩梦:Java文本块让多行字符串更优雅
告别拼接噩梦:Java文本块让多行字符串更优雅
630 82
|
6月前
|
自然语言处理 Java Apache
在Java中将String字符串转换为算术表达式并计算
具体的实现逻辑需要填写在 `Tokenizer`和 `ExpressionParser`类中,这里只提供了大概的框架。在实际实现时 `Tokenizer`应该提供分词逻辑,把输入的字符串转换成Token序列。而 `ExpressionParser`应当通过递归下降的方式依次解析
384 14
|
10月前
|
存储 缓存 安全
Java 字符串详解
本文介绍了 Java 中的三种字符串类型:String、StringBuffer 和 StringBuilder,详细讲解了它们的区别与使用场景。String 是不可变的字符串常量,线程安全但操作效率较低;StringBuffer 是可变的字符串缓冲区,线程安全但性能稍逊;StringBuilder 同样是可变的字符串缓冲区,但非线程安全,性能更高。文章还列举了三者的常用方法,并总结了它们在不同环境下的适用情况及执行速度对比。
230 17
|
SQL Java 索引
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
331 83
|
10月前
|
存储 缓存 安全
Java字符串缓冲区
字符串缓冲区是用于处理可变字符串的容器,Java中提供了`StringBuffer`和`StringBuilder`两种实现。由于`String`类不可变,当需要频繁修改字符串时,使用缓冲区更高效。`StringBuffer`是一个线程安全的容器,支持动态扩展、任意类型数据转为字符串存储,并提供多种操作方法(如`append`、`insert`、`delete`等)。通过这些方法,可以方便地对字符串进行添加、插入、删除等操作,最终将结果转换为字符串。示例代码展示了如何创建缓冲区对象并调用相关方法完成字符串操作。
277 13
|
存储 安全 Java
Java零基础-字符串详解
【10月更文挑战第18天】Java零基础教学篇,手把手实践教学!
250 60
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
234 26
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
375 8