考虑到 String 在实际的工作之中使用非常的广泛,接下来介绍几类常用的方法。建议并希望读者将以下所讲解的每个方法的名称,返回值类型,参数类型及个数、方法的作用都尽可能的记下来。
下面就通过具体的应用范例来讲解 String 类中常用方法的基本使用。
目录
目录
1.字符串与字符数组的转换
字符串可以使用 toCharArray() 方法变成一个字符数组,也可以使用 String 类的构造方法,把一个字符数组变成一个字符串
用代码验证以上的方法(认真看其中的注释):
public class Main {
public static void main(String[] args)
{
// 1.字符串与字符数组的转换
String str="leixueyu"; // 字符串
//字符串变字符数组 用toCharArray()函数
char c[]=str.toCharArray();
for(int i=0;i<c.length;i++)
{
System.out.print(c[i]+" "); //将数组中的字符一个一个输出
}
System.out.println("");
//字符数组变字符串 用String类的构造方法
String str1=new String(c); //将全部字符数组变成String
String str2=new String(c,0,3); //将部分字符数组变成String
System.out.println(str1); // 输出全部
System.out.println(str2); // 输出部分
}
}
运行结果:
l e i x u e y u
leixueyu
lei
2.从字符串中取出指定位置的字符
可以直接使用 String 类的 charAt() 方法取出字符串指定位置的字符
用代码验证以上的方法(认真看其中的注释):
public class Main {
public static void main(String[] args)
{
// 2.从字符串中取出指定位置的字符
// 用charAt()
String str="word";
System.out.println(str.charAt(2)); //取出字符串中第3各字符
}
}
运行结果:
r
3.字符串与byte数组的转换
字符串可以通过 getBytes() 方法将 String 变成一个 byte 数组,之后可以通过 String 的构造方法将一个字节数组重新变成字符串
用代码验证以上的方法(认真看其中的注释):
public class Main {
public static void main(String[] args)
{
// 3.字符串与byte数组的转换
String str="leixueyu";
//字符串转成byte数组 用getBytes()方法
byte b[]=str.getBytes();
// for(int i=0;i<b.length;i++)
// {
// System.out.print(b[i]+" "); //输出字节
// }
// System.out.println("");
//将全部的byte数组转成字符串
String str1=new String(b);
//将部分的byte数组转成字符串
String str2=new String(b,0,3);
// 输出
System.out.println(str1); //全部
System.out.println(str2); //部分
}
}
运行结果:
leixueyu
lei
4.取得一个字符串的长度
在 String 中使用 length() 方法取得字符串的长度
用代码验证以上的方法(认真看其中的注释):
public class Main {
public static void main(String[] args)
{
// 4.取得一个字符串的长度
// 用length(),也会将空格的长度算进去
String str="lei xue yu";
System.out.println("\""+str+"\"的长度为:"+str.length());
}
}
运行结果:
"lei xue yu"的长度为:10
length 与 length()
许多初学者经常对" length "和" length() " 两者的关系搞不清楚,“在数组操作中, length 使用取得数组的长度,但是操作的最后没有 () .而字符串调用 length() 是一个方法,只要是方法后面都有 ' () ' ”。
5.查找一个指定的字符串是否存在
在 String 中使用 indexOf() 方法,可以返回指定的字符串的位置,如果不存在,则返回 -1
用代码验证以上的方法(认真看其中的注释):
public class Main {
public static void main(String[] args)
{
// 5.查找一个指定的字符串是否存在
//使用 indexOf()
String str="leixueyu";
System.out.println("字符\"i\"的位置:"+str.indexOf("i")); //查到返回位置
System.out.println("字符\"u\"的位置:"+str.indexOf("u"));
System.out.println("字符\"u\"的位置:"+str.indexOf("u",5));//从5(e)开始找
System.out.println("字符\"a\"的位置:"+str.indexOf("a")); //不存在返回-1
}
}
运行结果:
字符"i"的位置:2
字符"u"的位置:4
字符"u"的位置:7
字符"a"的位置:-1
可以使用 JDK1.5 后提供的 contains() 方法。
从 JDK1.5 开始,String 类 对于判断字符串是否存在的方法提供了 contains() (public boolean contains (String str ) ),此方法直接返回 boolean 型数据。
用代码验证以上的方法(认真看其中的注释):
public class Main {
public static void main(String[] args)
{
// 用contains() //返回是boolean型
String str="leixueyu"; //字符串对象
if(str.contains("lei")); //子字符串存在
{
System.out.println("lei存在");
}
if(str.contains("lee"))
{
System.out.println("lee存在");
}
}
}
运行结果:
lei存在
6.去掉左右空格
在实际的系统开发中,用户输入的数据中可能含有大量的空格,此时,使用 trim() 方法可以去掉字符串的左、右空格
用代码验证以上的方法(认真看其中的注释):
public class Main {
public static void main(String[] args)
{// 6.去掉左右空格
//使用 trim() 方法
String str=" leixueyu "; //含有空格的字符串
System.out.println(str.trim()); //去掉左右空格后输出
}
}
运行结果:
leixueyu
7.字符串截取
在 String 中提供了两个 substring() 方法,一个是从指定位置截取到字符串结尾,另一个是截取指定范围的内容
用代码验证以上的方法(认真看其中的注释):
public class Main {
public static void main(String[] args)
{
// 7.字符串截取
String str="hello world"; // 原字符串
System.out.println(str.substring(6)); //从第七个位置开始截取
System.out.println(str.substring(0,5)); //截取 0-5 位置上的内容
System.out.println(str);
}
}
运行结果:
world
hello
hello world
8.按照指定的的字符串拆分字符串
在 String 中通过 split() 方法可以进行字符串的拆分操作,拆分的数据将以字符串数组的形式返回
用代码验证以上的方法(认真看其中的注释):
public class Main {
public static void main(String[] args)
{
// 8.按照指定的的字符串拆分字符串
//用 split() 方法
String str="hello world";
String s[]=str.split(" "); //以空格拆分->可以拆分成两部分hello和world
for(int i=0;i<s.length;i++)// 其实这里的s.length=2,因为只有两个字符串
{
System.out.println(s[i]);
}
}
}
运行结果:
hello
world
本程序是根据空格进行字符串的拆分,如果在使用 split() 方法时只设置一个空字符串“ "" ”,那么就表示按照每一个字符进行拆分
split() 的一个小细节:
实际上 split() 方法的字符串拆分能否正常进行都与正则表达式的操作有关,所以有时候会出现无法拆分的情况。
例如,现在给一个IP地址(192.168.1.2),那么肯定首先想到的是根据 “.” 拆分,而如果直接使用 “.”是不可能正常拆分的(观察下面两个实例)
实例一:错误的拆分方法
public class Main {
public static void main(String[] args)
{
// split() 的转义操作
String str="192.168.1.2";
String s[]=str.split(".");
for(int i=0;i<s.length;i++)
{
System.out.print(s[i]+"、");
}
}
}
此时是不能够正常执行的,而要向正常执行,必须对要执行的 “.” 进行转义,在 java 中转义要使用 “\\” (“ \\”表示一个 “\” )描述。
实例二:正确的拆分方法
public class Main {
public static void main(String[] args)
{
// split() 的转义操作
String str="192.168.1.2";
String s[]=str.split("\\.");
for(int i=0;i<s.length;i++)
{
System.out.print(s[i]+"、");
}
}
}
运行结果:
192、168、1、2、
9.字符串的大小转换
在用户输入信息时有时需要统一输入数据的大小写,那么此时就可以使用 toUpperCase() 和toLowerCase() 两个方法完成大小写的转换操作
toUpperCase() -->小写转大写
toLowerCase() -->大写转小写
用代码验证以上的方法:
public class Main {
public static void main(String[] args)
{
// 9.字符串的大小转换
// toUpperCase()->小写转大写 toLowerCase()->大写转小写
System.out.println("\"hello world\"的大写:"+"hello world".toUpperCase());
System.out.println("\"HELLO WORLD\"的小写: "+"HELLO WORLD".toLowerCase());
}
}
运行结果:
"hello world"的大写:HELLO WORLD
"HELLO WORLD"的小写: hello world
10.判断是否以指定的字符串开头或结尾
在 String 中使用 startsWith() 方法可以判断字符串是否有以指定的内容开头,使用 endsWith() 方法可以判断字符串是否以指定的内容结尾
用代码验证以上的方法:
public class Main {
public static void main(String[] args)
{// 10.判断是否以指定的字符串开头或结尾
// startsWith()判断开头 endsWith()判断结尾
String str1="**helloworld"; //定义字符串
String str2="helloworld**"; //定义字符串
// 判断是否以"**"开头
if(str1.startsWith("**"))
{
System.out.println(str1+"以\"**\"开头");
}
// 判断是否以"**"结尾
if(str2.endsWith("**"))
{
System.out.println(str2+"以\"**\"结尾");
}
}
}
运行结果:
**helloworld以"**"开头
helloworld**以"**"结尾
11.不区分大小写进行字符串比较
在 String 中可以通过 equals() 方法进行字符串内容的比较,但是这种比较方法是区分大小写的比较,如果要完成不区分大小写的比较,则可以使用 equalsIgnoreCase() 方法
用代码验证以上的方法:
public class Main {
public static void main(String[] args)
{
// 不区分:equals() 区分:equalsIgnoreCase()
String str1="HELLO";
String str2="hello";
//大小写不区分:equals()
System.out.println("\"HELLO\"equals\"hello\":"+str1.equals(str2));
//大小写区分:equalsIgnoreCase()
System.out.println("\"HELLO\"equalsIgnoreCase\"hello\":"+str1.equalsIgnoreCase(str2));
}
}
运行结果:
"HELLO"equals"hello":false
"HELLO"equalsIgnoreCase"hello":true
12.将一个指定的字符串,替换成其他的字符串
使用 String 的 replaceAll() 方法,可以将字符串的指定内容进行替换
public class Main {
public static void main(String[] args)
{
// 12.将一个指定的字符串,替换成其他的字符串
// replaceAll("被替换内容","替换内容")
String str="hello";
String newstr=str.replaceAll("l", "x"); // 将 l 换成 x
System.out.println(newstr);
}
}
运行结果:
hexxo
以上 的 12 种方式就是String类比较常用的,可以选择慢慢记,多写几遍。最后,如有问题,欢迎留言。