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
在java中最简单的创建字符串方法就是使用String类:
直接给字符串赋值:String str="Java";
使用构造方法:String str2=new String("Java");
他们的区别在于str
存储在公共池中,而str2
存储在堆中。
构造方法也可以使用字符数组作为参数:
char[] strc={'J','a','v','a'};
String str4=new String(strc);
我们可以查看String:
在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) |
由于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型数字
为参数。
我们常用到StringBuffer
的append
方法在原字符串后面追加字符串。除此之外,StringBuffer
还有一些常用方法:
1.反转字符串 | reverse() |
---|
2.删除子字符串 | delete(int start, int end) |
---|
System.out.println(stringBuffer.delete(4, 6));
3.插入子字符串 | insert(int i, String s) |
---|
System.out.println(stringBuffer.insert(0, "hello "));
4.替换子字符串 | replace((int start, int end, String str) |
---|
System.out.println(stringBuffer.replace(12, 16, "best language"));
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());
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());
发现:默认容量是20,且每次扩容也是增加20。
还有length()
、charAt()
、toString()
等String支持的方法。
同样也可以使用数字或者字符串进行初始化:
StringBuilder stringBuilder = new StringBuilder(5);
stringBuilder.append("Java ");
stringBuilder.append("is").append(" the best!");
System.out.println(stringBuilder);
StringBuider
提供与StringBuffer
兼容的API,但不保证同步。 此类设计用作StringBuffer替代品,用于单个线程使用字符串缓冲区的位置(通常情况下)。 在可能的情况下,建议优先使用此类,因为在大多数实现中它会更快。StringBuilder
的主要操作是append
和insert
方法。
☕物有本末,事有终始,知所先后。
☝☝☝☝☝我的CSDN☝☝☝☝☝☝