一:String类:Java API提供的 字符串处理类。
1)字符串是由多个字符组成的一串数据
2)字符串可以看成是字符数组
3)构造方法
*和
运算符拼接时候注意:如果一个String是由两个常量运算得到的,相当于用双引号创建出来,反之如果运算时,等号右边有一个“运算数”不为常量(即使该“运算数”是用双引号创建的常量),则得到的结果相当于new创建的一个新的String对象
public String(String original)
把字符串数据封装成字符串对象
public String(char[] value)
把字符数组的数据封装成字符串对象
public String(char[] value,int offset,int count)
把字符数组中的一部分数据封装成字符
串对象
直接赋值也可以是一个对象
(
定义一个字符串变量
)
注意:字符串是一种比较特殊的引用数据类型,直接输出字符串对象输出的是该对象中
的数据
4)String特点
通过构造方法创建字符串对象
String s = new String(“hello”);
直接赋值创建字符串对象
String s =
“
hello
”
;
*两者创建对象的区别:new的方式会在堆内存开辟一块空间存取String对象指向方法区常量池的常量。
Public class
Demo02String {
Public static void
main(String[]
args
) {
String
s1
=
new
String(
"hello"
);
String
s2
=
"hello"
;
System.
out
.println(
"s1:"
+
s1
);
System.
out
.println(
"s2:"
+
s2
);
System.
out
.println(
"s1==s2:"
+(
s1
==
s2
));
String
s3
=
"hello"
;
System.
out
.println(
"s1==s3:"
+(
s1
==
s3
));
System.
out
.println(
"s2==s3:"
+(
s2
==
s3
));
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/bfd31e5d5f2e68c28bef118aef6e21e1.png)
String s = "a" + "b"; String t = "ab"; 以上两种创建方式,完全等价 String str1 = "abc"; String str2 = "abcd"; String str3 = "abc" + "d"; String str4 = str1 + "d"; System.out.println(str2 == str3);(true ) System.out.println(str2.equals(str3));(true) System.out.println(str2 == str4);(false) System.out.println(str2.equals(str4));(true) 5)String常用方法
判断功能方法
boolean equals(Object obj):
比较字符串的内容是否相同
boolean equalsIgnoreCase(String str):
比较字符串的内容是否相同
,
忽略大小写
boolean startsWith(String str):
判断字符串对象是否以指定的
str
开头
boolean endsWith(String str):
判断字符串对象是否以指定的
str
结尾
获取功能方法
int length():
获取字符串的长度,其实也就是字符个数
char charAt(int index):
获取指定索引处的字符
int indexOf(String str):
获取
str
在字符串对象中第一次出现的索引
,
没有返回
-1
String substring(int start):
从
start
开始截取字符串到字符串结尾
String substring(int start,int end):
从
start
开始,到
end
结束截取字符串
;
包括
start
,
不包括
end
二:StringBuilder类
![](https://i-blog.csdnimg.cn/blog_migrate/c4ac3b4773cda0da9778cb2b5457e4b1.png)
1)解决String方式子符串拼接时在常量池中产生过多的产量问题。
2)与String的区别:
2)与String的区别:
String
的内容是固定的, StringBuilder
的内容是可变的,内存开销小,效率高。
3)常用方法:
添加功能
public StringBuilder append(
任意类型
):
添加数据,并返回自身对象
反转功能:
实现倒序
public StringBuilder reverse()
三:String、StringBuilder、StringBuffer 的区别:
1)效率:StringBuilder > StringBuffer>String
2) String 是被final 修饰的类,是不可变类。StringBuilder和StringBuffer有公共父类(AbstractStringBuilder),有很多从父类继承共用的方法。StringBuffer是线程安全的。