Java详解String类

1.String对象的初始化

/*
两种初始化方法,一种是直接用字符串赋值,一种是用面向对象的方法初始化
*/
String str="hello";
String str=new String("hello");


但这两种方法是有区别的,我们来看看下面一段程序。

public class Test {
	public static void main(String[] args) {
		String str1="hello";
		String str2="hello";
		String str3=new String("hello");
		String str4=new String("hello");
		if(str1==str2)
			System.out.println("str1与str2相等");
		else
			System.out.println("str1与str2不相等");
		if(str1==str3)
			System.out.println("str1与str3相等");
		else
			System.out.println("str1与str3不相等");
		if(str3==str4)
			System.out.println("str3与str4相等");
		else
			System.out.println("str3与str4不相等");	
	}
}
输出结果是: str1与str2相等
                    str1与str3不相等

                    str3与str4不相等

String str1="hello"这样创建的对象,会先去常量池查找是否有此字符串,若没有则在常量池中创建次字符串。最后str1成为指向常量池中此字符串的引用。
String str3=new String("hello")这样创建的对象,会先去常量池查找是否有此字符串,若没有则在常量池中创建次字符串。然后再在堆中创建常量池中此字符串的拷贝对象。最后str3成为指向该拷贝对象的引用。
这样有很容易明白为什么str1与str2相等,str1与str3不相等,str3与str4不相等。
PS:对象是否相等用"==",如果要判断对象的值是否相等可以用"equals()"。

2.String类的常用操作

2.1charAt()方法

返回相应索引位置的字符。索引值从0开始,若索引越界程序会报错。

String str="hello";
str.charAt(1);//返回的值是‘e’

2.2equals()与equalsIgnoreCase()方法

equals()方法:如果两个字符串具有相同的字符和长度并且大小写相同,则返回true,否则返回false。

equalsIgnoreCase()方法:在忽略大小写的情况下,如果两个字符串具有相同的字符和长度,则返回true,否则返回false。

String str="hello";
str.equals("hello");//返回true
str.equals("hElLo");//返回true

2.3length()方法

求字符串的长度

String str="hello";
str.length();//返回值是5

2.4indexOf()与lastIndexOf()方法

indexOf()方法:返回的是搜索的字符或字符串首次出现的位置。

lastIndexOf()方法:返回的是搜索的字符或字符串最后一次出现的位置。

若没有搜到,两者都返回-1。

String str="hello";
str.indexOf('l');//返回值是2
str.lastIndexOf('l');//返回值是3

2.5trim()方法

返回字符串去掉前导空白和尾部空白的一个副本。

String str="   hello    ";
str.trim();//返回值是"hello"

2.6substring()方法

substring(int beginIndex)方法:返回从指定索引位置开始截取字符串直到该字符串的结尾的子串。

substring(int beginIndex,int endIndex)方法:返回从开始索引位置到结束索引位置的的子串。子串中不包含结束索引位置的字符。

String str="hello";
str.substring(1);//返回值是"ello"
str.substring(1,4);//返回值是"ell"

2.7split()方法

split(String regex)方法:根据给定正则表达式的匹配拆分此字符串,返回值类型是字符串数组。

split(String regex,int limit)方法:根据给定正则表达式的匹配拆分此字符串,返回值类型是字符串数组,同时限制返回字符串数组的大小。

String str="hello";
str.split("l");//返回{"he","","o"}
str.split("l",2);//返回{"he",""}

2.8replace()方法

将指定的字符或字符串替换成新的字符或字符串。

String str="hello";
str.replace('h','Q');//返回值是"Qello"

2.9toLowerCase()与toUpperCase()方法

toLowerCase()方法:将字符串中所有字符转换成小写。

toUpperCase()方法:将字符串中所有字符转换成大写。

String str="Hello";
str.toLowerCase();//返回值是"hello"
str.toUpperCase();//返回值是"HELLO"
PS:具有大小写不仅仅只有字母。

2.10startsWith()与endsWith()方法

startsWith()方法:测试此字符串是否以指定的前缀开始。返回值类型是布尔类型。

endsWith()方法:测试此字符串是否以指定的后缀结束。返回值类型是布尔类型。

String str="hello";
str.startsWith("he");//返回值是true
str.endsWith("lo");//返回值是true









  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值