1string的所有方法只要内容更改就会返回新的string
2第一种:直接赋一个字面量String str1 ="ABCD"; 第二种:通过构造器创建String str2 =newString("ABCD");
String str1 = "ABCD";
最多创建一个String对象,最少不创建String对象.如果常量池中,存在”ABCD”,那么str1直接引用,此时不创建String对象.否则,先在常量池先创建”ABCD”内存空间,再引用.
String str2 = new String("ABCD");
最多创建两个String对象,至少创建一个String对象。new关键字绝对会在堆空间创建一块新的内存区域,所以至少创建一个String对象。
3判断string对象为空a==null&&a.equals(''");
4判断string对象是否相等用equals
5Stringbuilder是线程不安全,效率高。Stringbuffer是线程安全。都在源字符串上进行修改。
6方法
string
1 length()字符串的长度
String a = "Hello Word!";System.out.println(a.length);
输出的结果是字符串长度10。
2 charAt()截取一个字符
String a = "Hello Word";
System.out.println(a.charAt(1));
输出的结果是字符串a的下标为1的字符e。
3 getchars()截取多个字符并由其他字符串接收
String a = "Hello Word";char[] b =newchar[10];
a.getChars(0, 5, b, 0);
System.out.println(b);
输出的结果为Hello,其中第一个参数0是要截取的字符串的初始下标(int
sourceStart),第二个参数5是要截取的字符串的结束后的下一个下标(int sourceEnd)也就是实际截取到的下标是int
sourceEnd-1,第三个参数是接收的字符串(char target[]),最后一个参数是接收的字符串开始接收的位置。
4 getBytes()将字符串变成一个byte数组
String a = "Hello Word";byteb[] = a.getBytes();
System.out.println(newString(b));
输出的结果为Hello Word的byte数组。
5 toCharArray()将字符串变成一个字符数组
String a = "Hello Word";char[]b = a.toCharArray();
System.out.println(b);
输出的结果为Hello Word字符数组。
6 equals()和equalsIgnoreCase()比较两个字符串是否相等,前者区分大小写,后者不区分
String a = "Hello Word";
String b = "hello word";System.out.println(a.equals(b));
System.out.println(a.equalsIgnoreCase(b));
输出的结果为第一条为false,第二条为true。
7 startsWith()和endsWith()判断字符串是不是以特定的字符开头或结束
String a = "Hello Word";
System.out.println(a.startsWith("ee"));
System.out.println(a.endsWith("rd"));
输出的结果第一条为false,第二条为true。
8 toUpperCase()和toLowerCase()将字符串转换为大写或小写
String a = "Hello Word";
System.out.println(a.toUpperCase());
System.out.println(a.toLowerCase());
输出的结果第一条为“HELLO WORD”,第二条为“hello word”。
9 concat() 连接两个字符串
String a = "Hello Word";
String b = "你好";
System.out.println(b.concat(a));
输出的结果为“你好Hello Word”。
10 trim()去掉起始和结束的空格
String a =" Hello Word ";
System.out.println(a.trim());
输出的结果为“Hello Word”。
11 substring()截取字符串
String a = "Hello Word";
System.out.println(a.substring(0, 5));
System.out.println(a.substring(6));
输出的结果第一条为“Hello”,第一个参数0(beginIndex)是开始截取的位置,第二个参数5(endIndex)是截取结束的位置,输出的结果第二条是“Word”,参数6(beginIndex)是开始截取的位置。
12 indexOf()和lastIndexOf()前者是查找字符或字符串第一次出现的地方,后者是查找字符或字符串最后一次出现的地方
String a = "Hello Word";
System.out.println(a.indexOf("o"));
System.out.println(a.lastIndexOf("o"));
输出的结果第一条是4,是o第一次出现的下标,第二条是7,是o最后一次出现的下标。
13 compareTo()和compareToIgnoreCase()按字典顺序比较两个字符串的大小,前者区分大小写,后者不区分
String a = "Hello Word";
String b = "hello word";
System.out.println(a.compareTo(b));
System.out.println(a.compareToIgnoreCase(b));
输出的结果第一条为-32,第二条为0,两个字符串在字典顺序中大小相同,返回0。
14 replace() 替换
String a = "Hello Word";
String b = "你好";
System.out.println(a.replace(a, b));
System.out.println(a.replace(a, "HELLO WORD"));
System.out.println(b.replace("你", "大家"));
输出的结果第一条为“你好”,第二条为“HELLO WORD”,第三条为“大家好”。
StringBuffer 方法
以下是 StringBuffer 类支持的主要方法:
序号 方法描述
1public StringBuffer append(String s)
将指定的字符串追加到此字符序列。
2public StringBuffer reverse()
将此字符序列用其反转形式取代。
3public delete(int start, int end)
移除此序列的子字符串中的字符。
4public insert(int offset, int i)
将int参数的字符串表示形式插入此序列中。
5replace(int start, int end, String str)
使用给定String中的字符替换此序列的子字符串中的字符。
下面的列表里的方法和 String 类的方法类似:
序号 方法描述
1int capacity()
返回当前容量。
2char charAt(int index)
返回此序列中指定索引处的char值。
3void ensureCapacity(int minimumCapacity)
确保容量至少等于指定的最小值。
4void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
将字符从此序列复制到目标字符数组dst。
5int indexOf(String str)
返回第一次出现的指定子字符串在该字符串中的索引。
6int indexOf(String str, int fromIndex)
从指定的索引处开始,返回第一次出现的指定子字符串在该字符串中的索引。
7int lastIndexOf(String str)
返回最右边出现的指定子字符串在此字符串中的索引。
8int lastIndexOf(String str, int fromIndex)
返回 String 对象中子字符串最后出现的位置。
9int length()
返回长度(字符数)。
10void setCharAt(int index, char ch)
将给定索引处的字符设置为ch。
11void setLength(int newLength)
设置字符序列的长度。
12CharSequence subSequence(int start, int end)
返回一个新的字符序列,该字符序列是此序列的子序列。
13String substring(int start)
返回一个新的String,它包含此字符序列当前所包含的字符子序列。
14String substring(int start, int end)
返回一个新的String,它包含此序列当前所包含的字符子序列。
15String toString()
返回此序列中数据的字符串表示形式。
String的+=会新建一个stringbuilder的对象,非常消耗时间和内存
网友评论