字符串-创建、常用API

本文介绍了Java中字符串的基本概念,创建方式,并详细讲解了包括length()、charAt()、toCharArray()、getBytes()、isEmpty()、indexOf()、lastIndexOf()、toUpperCase()、toLowerCase()、substring()、trim()、replace()、startsWith()、endsWith()、equals()、equalsIgnoreCase()和compareTo()在内的常用API,通过实例展示了它们的用法和返回结果。同时,提供了字符串反转和统计大写字母数量的练习案例。
摘要由CSDN通过智能技术生成


什么是字符串

多个字符连接起来组成的字符序列
举例:“中国”
注意:字符串是用双引号括起来的,字符是用单引号括起来的


字符串的创建

1、String s=new String(“hello”);
2、char[] b={‘h’,‘e’,‘l’,‘l’,‘o’};
String s=new String(b);
3、byte[] b={‘h’,‘e’,‘l’,‘l’,‘o’};
String s=new String(b);
4、String s=“hello”;
区别:使用new关键字创建字符串对象,一定会在堆里开辟空间,第四种的话如果字符串常量池中没有这个字符串那么它会在堆里开辟空间,有的话就不在堆里开辟空间。
验证

String s1="abc";
String s2="abc";
String s3=new String("abc");
System.out.printlb(s1==s2);
System.out.printlb(s3==s1);

结果

true
false

注意:代码中的比较运算符“==”比较的是两个字符串的地址是否相同

常用API

length()

求字符串长度

String s1="";
String s2=" ";
String s3="Hello World";
System.out.println(s1.length());
System.out.println(s2.length());
System.out.println(s3.length());

结果

0
1
11

注意:在字符串中length()是方法,后面要加上(),而在数组中length是属性,后面不用加(),如:a.length;

charAt()

将制定索引处的字符返回

String s="china";
char a=s.charAt(3);
System.out.println(a);

结果

n

toCharArray()

将字符串转变为字符数组

String s="hello";
char[] c=s.toCharArray();
System.out.println(Arrays.toString(c));

结果

[h, e, l, l, o]

getBytes()

将字符串转换成byte类型的数组

String s="hello";
byte[] b=s.getBytes();
System.out.println(Arrays.toString(b));

结果

[104, 101, 108, 108, 111]

isEmpty()

判断字符串是否为空,返回boolean类型

String s1="hello";
String s2=" ";
String s3="";
System.out.println(s1.isEmpty());
System.out.println(s2.isEmpty());
System.out.println(s3.isEmpty());

结果

false
false
true

注意:字符串为空返回true,不为空返回false

indexOf() lastIndexOf()

  • indexOf(String s):查找字符串s在所查找字符串中第一次出现的位置,如果有,返回子串第一次出现的位置,没有查找到,返回-1
String s="Helohlo World";
System.out.println(s.indexOf("lo"));
System.out.println(s.indexOf("p"));

结果:

2
-1
  • indexOf(String s,int i):从要查找的字符串的第i个位置开始查找,返回和上面一样
String s="Hellollopotu";
System.out.println(s.indexOf("lo",5));
System.out.println(s.indexOf("ll",8));

结果

6
-1
  • lastIndexOf(String s):类比indexOf(String s),只是查找最后出现的位置
String s="heloolopolo";
System.out.println(s.lastIndexOf("lo"));
System.out.println(s.lastIndexOf("a"));

结果:

9
-1
  • lastIndexOf(String s,int i):类比indexOf(String s,int i):只是查找子串最后出现的位置
String s="pdhipdubpdfg";
System.out.println(s.lastIndexOf("pd",3));
System.out.println(s.lastIndexOf("hi",5));

结果:

0
2

注意:lastIndexOf(String s,int i)是查找字符串在位置i之前的子串

toUpperCase() toLowerCase()

  • toUpperCase():转成大写
String s="khihi";
System.out.println(s.toUpperCase());

结果:

KHIHI
  • toLowerCase():转成小写
String s="GYFSWhgY";
System.out.println(s.toLowerCase());

结果:

gyfswhgy

substring()

  • substring(int i):从字符串的i位置截取到最后,返回一个新的字符串
String s1="hsfuwdwv";
String s2=s1.substring(2);
System.out.println(s2);

结果:

fuwdwv
  • substring(int i,int j):从i位置截取到j-1位置
String s1="sfrethtrhr";
String s2=s1.substring(2,5);
System.out.println(s2);

结果:

ret

trim()

去掉字符串的空格,但是只能去掉开始和结束的空格,中间的空格不能去掉

String s=" dhu d b ";
String s2=s.trim();
System.out.println(s2);

结果:

dhu d b

replace()

replace(String s1,String s2):用s2替换掉字符串中的s1

String s="jhkjhuy";
String s2=s.replace("j","hello");
String s3=s.replace("h","");
System.out.println(s2);
System.out.println(s3);

结果:

hellohkhellohuy
jkjuy

startsWith() endsWith()

  • startsWith(String s):判断这个字符串是否是s开头的,返回一个boolean类型的值
String s="shgd";
System.out.println(s.startsWith("s"));
System.out.println(s.startsWith("b"));

结果:

true
false
  • startsWith(String s,int i):判断字符串从i位置开始起是不是以s开头
String s="dsfwg";
System.out.println(s.startsWith("f",2));

结果

true
  • endsWith(String s):判断字符串是不是以s结尾
String s="bhbmj";
System.out.println(s.endsWith("mj"));

结果:

true

equals() equalsIgnoreCase()

  • equals(String s):比较两个字符串是否相等,比较区分大小写,如果用“==”比较的是地址
String s1="hello";
String s2="hello";
String s3="Hello";
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));

结果

true
false
  • equalsIgnoreCase(String s):比较时不区分大小写
String s1="hello";
String s2="Hello";
String s3="HELLO";
System.out.println(s1.equalsIgnoreCase(s2));
System.out.println(s1.equalsIgnoreCase(s3));

结果:

true
true

compareTo()

compareTo(String s):比较各个字符的Unicode值,注意是一个字符一个字符的进行比较

String s1="ac";
String s2="ab";
String s3="c";
String s4="ac";
System.out.println(s1.compareTo(s2));
System.out.println(s1.compareTo(s3));
System.out.println(s1.compareTo(s4));

结果:

1
-2
0

如果前者大返回一个正整数,反之返回一个负整数,如果相等返回0

练习

将一个字符串进行反转

String s="abcde";
char[] c=s.toCharArray(); //转化为数组
for(int i=0;i<c.length/2;i++) //将数组进行反转
{
	char temp=c[i];
	c[i]=c[c.length-1-i];
	c[c.length-1-i]=temp;
}
String s2=new String(c); //重新转化为字符串
System.out.println(s2);

结果:

edcba

找出字符串中所有的大写字母并输出数量

String s="jbxjisVHfVBHJScbhjBHSJ";
int count=0;
for(int i=0;i<s.length();i++)
{
	if(s.charAt(i)>='A'&&s.charAt(i)<='Z') //判断是否为大写字母
	{
		System.out.print(s.charAt(i)+" ");
		count++;  //计数器加一
	}
}
System.out.println();  //换行
System.out.println(count);

结果

V H V B H J S B H S J 
11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值