1.String、StringBuffer和StringBuilder的区别

String:是被final修饰的,它的长度是不可改变的。

StringBuffer:长度可以改变,它是线性安全的。

StringBuilder:长度可以改变,它是非线性安全的,运行速度比StringBuffer更快。

 

1.1常用的内置方法

①append(String str): 在字符串末尾添加字符串

②reverse():将此字符串用其反转形式取代

③charAt(int index) 返回此序列中指定索引处的字符。

④toString()    返回此序列中数据的字符串表示形式。 

⑤substring(int start)  截取指定索引处字符串 

⑥ indexOf(String str) 返回指定字符的索引值

 

1.2字符串截取的几种方法

①split()方法:

String str = "5@285964@qq.com";
String[] strs = str.split("@");
for(int i=0;i<strs.length;i++){
System.out.println(strs[i].toString());
}

java中stringbuilder截取最后一个字符 stringbuffer截取最后一个字符_System

 

②subString(beginIndex)一个参数方法来进行字符串截取:将字符串从索引号为beginIndex开始截取,一直到字符串末尾。(注意索引值从0开始)。

 

 

String sb = "abcdef";
String str = sb.substring(2);
System.out.println(str);

java中stringbuilder截取最后一个字符 stringbuffer截取最后一个字符_System_02

 

③substring(int beginIndex, int endIndex)两个参数方法:从索引号beginIndex开始到索引号endIndex结束(返回结果包含索引为beginIndex的字符不包含索引endIndex的字符)

String sb = "abcdef";
String str = sb.substring(2,4);
System.out.println(str);

java中stringbuilder截取最后一个字符 stringbuffer截取最后一个字符_字符串_03

 

2.String s1 = new String(“hello”)和String s 2= “hello”有区别吗?

有。前者会创建2个对象,后者创建1个对象。

 

String s1 = new String(“hello”);在堆内存中创建了一个对象

在方法区中的字符串常量池中创建了一个”hello”常量值, 地址0x001;

指向new String();

new String()本身就是new出来的,所以也有一个地址值0x0001;

赋值给String s1,指向了String s1

String s2 直接赋值,在常量池里找,有就直接赋值,把”hello”的地址0x001给了String s2

String s2指向了常量池里的”hello”

java中stringbuilder截取最后一个字符 stringbuffer截取最后一个字符_字符串_04

 

==:比较引用类型比较的是地址值是否相同

equals:比较的是内容是否相同。 

s1 == s2--------> false 
s1.equals(s2)--------->true

 

3.StringBuffer和数组的区别?

二者都是可以看成是一个容器,装其他的数据,但StringBuffer的数据最终是一个字符串数据;而数组可以放置多种数据,但必须是同一种数据类型的。

 

4.字符串的拼接方法:concat,StringBuffer,StringBuilder,"+"。

①concat拼接法:

String s = "abcd";
s = s.concat("ef");
System.out.println(s);

java中stringbuilder截取最后一个字符 stringbuffer截取最后一个字符_System_05

 

②最简单的方法:用"+"连接起来

String a= "我会带带的";
String b= "看着你";
String c= a + "," + b;
System.out.println(c);

java中stringbuilder截取最后一个字符 stringbuffer截取最后一个字符_字符串_06

 

③StringBuffer:

StringBuffer a = new StringBuffer("我会呆呆的");
String b = "看着你";
StringBuffer c = a.append(",").append(b);
System.out.println(c);

java中stringbuilder截取最后一个字符 stringbuffer截取最后一个字符_数据_07

 

④StringBuilder的用法与StringBuffer类似:

 

5.字符串逆序输出的方法:

①: StringBuffer的reverse方法(StringBuilder也是一样的用法)

String string="我爱他风风烈烈最疯狂";
StringBuffer sb=new StringBuffer();
sb.append(string);
System.out.println(sb.reverse());

java中stringbuilder截取最后一个字符 stringbuffer截取最后一个字符_字符串_08

 

②:StringBuffer的循环

String string="我爱他风风烈烈最疯狂";
int length=string.length();
StringBuffer sb=new StringBuffer();
for(int i=string.length()-1;i>=0;i--){
sb.append(string.charAt(i));
}
System.out.println(sb);

java中stringbuilder截取最后一个字符 stringbuffer截取最后一个字符_数据_09

 

③:使用数组循环

String string="我爱他风风烈烈最疯狂";
int len=string.length();
char[] newstring=string.toCharArray();
for (int i = 0; i < len/2; i++) {
newstring[i]=string.charAt(len-i-1);
newstring[len-i-1]=string.charAt(i);
}
System.out.println(newstring);

java中stringbuilder截取最后一个字符 stringbuffer截取最后一个字符_数据_10