提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
常用类字符串:
String、StringBuilder、StringBuffer
一、String
表示字符串,最常用,是常量; 它们的值在创建后无法更改;属于final类创建后无法被继承,byte字节数组来保存字符串。
1.1、如何创建
1.“ ”中直接通过字符串常量方式构建,存放在字符串常量池中。通过new String(实参),创建String对象存放在堆内存中。
代码如下:
//创建字符串对象
String s1=new String("我在堆内存中");
System.out.println(s1);
String s2="我在常量池中";
System.out.println(s2);
2.String(char[] value)用一个字符数组创建String对象
代码如下(示例):
char[] chars = {'a','b','c','d'};
String str1 = new String(chars);
System.out.println(str1);
2.String(char[] value, int offset, int count) 分配一个新的String ,其中包含来自字符数组参数的子数组的字符。
String str2 = new String(chars,0,2);
System.out.println(str2); //a
3.String(char[] value)通过使用平台的默认字符集解码指定的字节数组来构造一个新的String,并输出新字符数组信息。
byte[] bytes={4,8,6,9};
String st2 = new String(bytes);
System.out.println(Arrays.toString(bytes));
4.String(byte[] bytes, int offset, int length) 通过使用平台的默认字符集解码指定的字节子数组来构造一个新的String。
String st3=new String(bytes,0,2,"gbk");
System.out.println(s7);
5.compareTo(String anotherString) 按字典顺序比较两个字符串。
String str1="absksdfd";
String str2="Absksdfd";
System.out.println(str1.compareTo(str2));//a=97>A=65--->32
6.compareToIgnoreCase(String str) 忽略大小写
System.out.println(str1.compareToIgnoreCase(str2));
7.contentEquals(CharSequence cs) 将此字符串与指定的CharSequence进行比较。
System.out.println(str1.contentEquals(str2));
8.charAt(int index) 返回指定索引处的char值。
System.out.println(str1.charAt(0));
9.concat(String str) 将指定的字符串连接到此字符串的末尾。
System.out.println(str1.concat(str2));
二、StringBuffer和StringBuilder
StringBuffer 类与 StringBuilder 是可变字符串类,创建 StringBuffer
与StringBuilder 类的对象后可以随意修改字符串的内容。
2.1如何创建
1.StringBuilder() 构造一个没有字符且初始容量为 16 个字符的字符串构建器。
System.out.println(s1);
System.out.println(s1.length());
System.out.println(s1.capacity());
2. StringBuilder(int capacity) 构造一个字符串构建器,初始容量由capacity参数指定。
System.out.println(s2);
System.out.println(s2.capacity());
System.out.println(s2.length());
3. StringBuilder(String str) 构造一个初始化为指定字符串内容的字符串构建器。
System.out.println(s3);
System.out.println(s3.capacity());
System.out.println(s3.length());
4.StringBuilder delete(int start, int end) 删除此序列的子字符串中的字符。
System.out.println(s1.delete(1,3));
5.StringBuilder insert(int offset, String str) 将字符串插入此字符序列。
System.out.println(s1.insert(2,true));
三.分析比较:
3.1执行效率:
StringBuilder > StringBuffer > String
String : 不可变的字符序列
StringBuilder : 可变的字符序列,线程不安全不同步,相对效率较高–>常用
StringBuffer : 可变的字符序列,线程安全|同步的,相对效率较低