第十章总结 字符串

String类

单个字符可以用char类型保存,多个字符组成的文本就需要保存在String对象中。

声明字符串

在java语言中,字符串必须包含在一对双引号("")之内。

"23.23","ABCDE","你好"

String sar

String:指定该变量为字符串类型

sar: 任意有效的标识符,表示字符串变量的名称

声明字符串变量s,代码如下:

String s;

创建字符串 

String(char a[])

用一个字符数组a(ch也行)创建String对象

==String s=new String("read"); 

String(char a[],int offset,int length)

提取字符数组a中一部分创建一个字符串对象。参数offset开始截取字符串的位置,lenght表示长度

==String s=new String("unden")

String(插入[] value)

构造方法分配一个新的String对象,表示字符数组参数中所有元素连接的结果

char[] c= {'s','t','u','d','e','n','t'};

String s=new String(b);

==String s=new String("stundent");

可以通过将字符串变量的引用赋值给一个字符串变量来创建字符串,代码如下:

 String str1,str2;

str1="We are students"

str2=" We are students"

连接字符串

使用多个字符串

使用“+”运算符可以实现多个字符串的连接并产生新的一个字符

例子:先连接一副对联的上、下,再分别输出在控制台上

 
  1. public class J {

  2. public static void main(String[] args) {

  3. // TODO Auto-generated method stub

  4. String s1=new String("春风绿千里");//声明string对象s1

  5. String s2=new String("马蹄香万家");//声明string对象s2

  6. String s=s1+"\n"+s2;//将对象s1、"\n"和对象s2连接并将结果赋值给s

  7. System.out.println(s);//输出

  8. }

  9. }

运行结果:

春风绿千里

马蹄香万家

连接其他数据类型

 字符串也可以同其他基本数据连接

如果将字符串同其他类型数据进行连接,会将其他数据类型数据直接转换字符串

例子:统计每天阅读和上机的时间

 
  1. public class J {

  2. public static void main(String[] args) {

  3. int booktime =4;//声明int类型变量booktime

  4. float practice=2.5f;//声明float类型变量practice

  5. System.out.println("我每天花费"+booktime+"小时看书;"

  6. +practice+"小时上机练习");

  7. }

  8. }

运行结果:

我每天花费4小时看书:2.5小时上机练习

获取字符串的信息

获取字符串的长度

使用String类length()方法可获取声明字符串对象的长度,如:

Str.length();

str作为字符串对象,获取字符串长度,代码如下:

String str= "We are students";

int size=str.length();

字符串查找

indexOf()与lastIndexOf()方法

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

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

indexOf(String s)

返回参数字符串s在指定字符串中首次出现的索引位置。

str.indexOf(substr)

str:任意字符串对象

substr: 要搜索的字符串

String str="We are students";

int size=str.indexOf("a");//size的值是3

 IastIndexOf(String str)

返回参数字符串s在指定字符串中最后一次出现的索引位置。

str. IastIndexOf(substr)

substr:要搜索的字符串 

例子:两种方法判断字符串的长度

 
  1. public class Test {

  2. public static void main(String[] args) {

  3. // TODO 自动生成的方法存根

  4. String str = "we are students";//定义字符串str

  5. int size = str.lastIndexOf("");//将空字符串在str中的索引位置赋值给变量size

  6. System.out.println("空字符串在字符串str中的索引位置是:"+size);//将变量size输出

  7. System.out.println("字符串str的长度是:"+str.length());//将字符串str的长度输出

  8. }

运行结果:

空字符串在字符串str中索引位置是:15

字符串str的长度:15

获取指定索引位置的字符

使用char  At()方法可以将指定的索引处的字符返回

str.char At(int index)

index:整型值。用于指定要返回字符的下标 

例子:查看索引位置上的字符

 运行结果:

字符串str中索引位置6的字符为:w

字符串的操作

获取子字符串

substring()方法被两种不同的重载形式,来满足不同的需要

substring(int beginIndex)

该方法是从指定的索引位置开始截取直到该字符串结尾的字串,语法:

str.substring(int beginIndex)

beginIndex指定从某一索引处开始截取字符串

截取字符串,代码如下:

String str="hello worrd";

String substr=str.substring(3); 

substring(int beginIndex,int endIndex) 

该方法返回的是从字符串某一索引位置开始截取至某一索引位置结束的子串,语法:

substring(int beginIndex,int endIndex) 

beginIndex:开始截取子字符串的索引位置

endIndex:子字符串在整个中的结束位置

例子:

 运行结果:

《将进酒》的作者是李白

去除空格

trim()方法返回字符串的副本,忽略前导和尾部的空格

str.trim()

例子:去掉首、尾的空格

运行结果:

字符串原来的长度:16

去掉空格后的长度:11

字符串替换

replace()方法可实现将指定的字符或者字符串替换成新字符或者字符串

str.repace(CharSequence  target,CharSequence replacement)

target:要替换的字符或者字符串

replacement: 用于替换原来字符串的内容

例子:将单词中的a替换成A

判断字符串的开始与结尾

startWith()方法与endsWith()方法分别用于判断字符串是否以指定的内容开始或者结束。这两个方法的返回值都是boolean类型。

startWith()方法

该方法用于判断当前字符串对象的前缀是否参数指定的字符串,语法:

str.startWith(String prefix)

prefix:是作为前缀的字符串。

endsWith()方法

该方法判断当前字符串是否以给定的字符串结束。语法:

str.endsWith(String suffix)

 suffix:是指作为后缀的字符串

例子:判断字符串是否以指定的内容开始或者结束

判断字符串是否相等 

对字符串对象进行比较不能简单地使用比较运算符"==",因为这个比较运算符比较的是这两个字符串的地址是否相同。

使用比较运算符比较的两个字符串,语法:

String trim=new String("i am a student");

String jery=new String("i am a student");

boolean b=(tom==jery);

例子:判断“abc”与 “ABC"是否相等

按字典顺序比较两个字符串

compareTo0方法为技字典顺序比较两个字符串,该比较基于字符串中各个字符的 Unicode 值,按字典顺序将 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。

如果按字典顺序此 String 对象位于参数字符串的运行结果之前,则比较结果为一个负整数;如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为个正整数:如果这两个字符串相等,则结果为0。

语法如下:

str compareTo(String otherstr)
其中,str、otherstr 是要比较的两个字符串对象

 例子:判断字母b的位置

 
  1. public class J {

  2. public static void main(String[] args) {

  3. String str=new String("b");//用于比较三个字符串

  4. String str1=new String("a");

  5. String str2=new String("c");

  6. System.out.println(str+"compareTo"+str1+":"+str.compareTo(str1));//将str与str1比较结果输出

  7. System.out.println(str+"compareTo"+str2+":"+str.compareTo(str2));//将str与str2比较结果输出

  8. }}

运行结果:

b   copareTo  a:1

b   copareTo  c:-1

字母大小写转换

String 类的 toLowerCase0方法可将字符串中的所有大写字母改与2写为小写字母,而 toUpperCase0方法可将字符串中的所有小写字母改写为大写字母

1.toLowerCase()方法

该方法将字符串中的所有大写字母转换为小写。,如果字符串中没有应该被转换的字待,则在原字符串返回,否则将返回一个新的字符串,将原字符用中每个大写字母都转换成小写,字符串长度不变,语法如下:
st.toLowerCase()
其中,st 是要进行转换的字符串。
2.toUpperCase()方法

该方法将字符串中所有的小写字母转换为大写。如果字符事中没有应该被转换的字符,否则将原字符串返回:否则运回一个新字符串,将原字符串中每个小写字母都转换成大写,字符串长度不变,语法如下:
str. toUpperCase()
其中,str 是要进行转换的字符串。

例子:字母大小写的转换

 
  1. public class J {

  2. public static void main(String[] args) {

  3. String str=new String("Oh My God");//创建字符串str

  4. String newstr =str.toLowerCase();//使用toLowerCase()方法实行小写转换

  5. String newstr1 =str.toLowerCase();//使用toLowerCase()方法实现大写转换

  6. System.out.println(newstr);//将转换后的结果输出

  7. System.out.println(newstr1);

  8. }}

字符串分割

使用 split0方法可以使字符串按指定的分割字符或字符串进行分割,并将分割后的结果存放在字符串数组中。split0)方法提供了以下两种字符串分割形式。
1. split(String sign)
该方法可根据给定的分割符对字符串进行拆分。语法如下:str.split(String sign)

没有统一的对字符进行分割的符号。如果想定义多个分割符,可使用符号“”。例如,“,”表示分割符分别为“”和“_”
2. split(String sign,int limit)
该方法可根据给定的分割符对字符串进行拆分,并限定拆分的次数。语法如下:
str.split(String sign,int limit)
 sign: 分割字符串的分符,也可以使用正则表达式。
 limit; 限制的分割次数。

例子:按照要求分割“192.168.0.1”

 
  1. public class J {

  2. public static void main(String[] args) {

  3. String str="192.168.0.1";//创建字符串

  4. String[]firstArray =str.split("\\.");//按照"."进行分割,使用转义字符"\\."

  5. String[]secondArray=str.split("\\.",2);//按照"."进行两次分割,使用转义字符"\\."

  6. System.out.println("str的原值为:["+str+"]");//输出str原值

  7. System.out.println("全部分割的结果:");//输出全部分割结果

  8. for(String a:firstArray) {

  9. System.out.println("["+a+"]");

  10. }

  11. System.out.println();//换行

  12. System.out.print("分割两次的结果为:");//输出分割两次的结果

  13. for(String a:firstArray) {

  14. System.out.println("["+a+"]");

  15. }

  16. System.out.println();

  17. }}

运行结果: 

 [1]

格式化字符串

String 类的静态 formm0方法用于创建格式化的字符用。foat0方法有两种重载形式
1.format(String format,Object...args)

该方法使用指定的格式字符非和参数返回一个格式化字符串,格式化后的新字符申使用本地默认的语言环境。语法如下:

str.fommat(String format Object args)
format:格式字符申。

angs:格式字符串中由格式说明符引用的参数。如果还有格式说明符以外的参数,则忽略这些额外的参数。此参数的数目是可变的,可以为0。
2.format(Local l,String format,Object...args)
该方法使用指定的语言环境、格式字符串和参数返回一个格式化字符串,格式化后的新字用其指定的语言环境。语法如下:
str formmat(Local l,String formal,Object...args)
 l:格式化过程中要应用的语言环境。如果1为 null,则不进行本地化。
format:格式字符串。
args:格式字符串中由格式说明符引用的参数。如果还有格式说明符以外的参数,则忽
额外的参数。此参数的数目是可变的,可以为 0。

日期和时间字符串格式化

返回一个月中的天数,代码如下:
Date date = new Date()://创建 Date 对象 date

String s = String.foat(”%te”,date)://通过 format()方法对 date 进行格式化
上述代码中变量s的值是当前日期中的天数,如今天是 15 号,则s 的值为15;%te 是转换待日期格式化转换符如表 10.1 所示

例子:按照格式输出今天的年月日

 
  1. import java.util.Date;

  2. public class Eval {

  3. public static void main(String[] args) {

  4. // TODO 自动生成的方法存根

  5. Date date = new Date();//创建Date对象date

  6. String year = String.format("%tY", date);//将date进行格式化

  7. String month = String.format("%tB", date);

  8. String day = String.format("%td", date);

  9. System.out.println("今年是:"+year + "年");//输出信息

  10. System.out.println("现在是:"+month);

  11. System.out.println("今天是:"+day + "号");

  12. }

  13. }

运行结果:

今年是:2023年

现在是:五月

今天是:8号

时间格式化

例子:按照格式输出当下的时分秒

 
  1. import java.util.Date;

  2. public class GetDate {

  3. public static void main(String[] args) {

  4. // TODO 自动生成的方法存根

  5. Date date =new Date();//创建Date对象date

  6. String hour = String.format("%tH", date);//将date进行格式化

  7. String minute= String.format("%tM", date);

  8. String second = String.format("%tS", date);

  9. System.out.println("现在是:"+hour+"时"+minute +"分"+second + "秒");//输出信息

  10. }

  11. }

运行结果是:

现在是:16时3分5秒

格式化常见的日期时间组合

格式化日期与时间组合的转换符定义了各种日期时间组合的格式

例子:按照格式输出当下的年月日

 
  1. import java.util.Date;//导入java.util.Date

  2. public class DateAndTime {

  3. public static void main(String[] args) {

  4. // TODO Auto-generated method stub

  5. Date date=new Date();//创建Date对象date

  6. String time=String.format("%tc", date);//将date格式化

  7. String form=String.format("%tc", date);

  8. System.out.println("全部的时间信息是:"+time);//就格式化后的日期时间输出

  9. System.out.println("年-月-日格式:"+form);

  10. }

  11. }

 运行结果:

常规类型格式化

例子:使用转换符获取表达式的结果

 
  1. public class General {

  2. public static void main(String[] args) {

  3. // TODO Auto-generated method stub

  4. String str=String.format("%d",400/2);//将结果以十进制格式显示

  5. String str2=String.format("%b",3>5);//将结果以boolean型显示

  6. String str3=String.format("%x",200);//将结果以十六进制格式显示

  7. System.out.println("400的一半是:"+str);//输出格式字符串

  8. System.out.println("3>5正确吗:"+str2);

  9. System.out.println("200的十六进制数是:"+str3);

  10. }

  11. }

 使用正则表达式

  [^456]: 代表4、5、6之外的任何字符
 [a-r]:代表a -r中的任何一个字母
[a-zA-2]:可表示任意一个英文字母。
[a-c[g-z]]:代表a-e或g~z中的任何一个字母(非运算)
 [a-o&&[def]]:代表字母d、e、f(交运算)。
[a-d&&[^bc]]:代表字母a、d(差运算)
在正则表达式中允许使用限定修饰符来限定元字符出现的次数

例子:验证E-mail地址是否“合法”

字符串生成器 

创建成功的字符串对象,其长度是固定的,内容不能改变和编译

例子:效率比拼

 
  1. public static void main(String[] args) {

  2. // TODO 自动生成的方法存根

  3. String str = "";//创建空字符串

  4. long starTime = System.currentTimeMillis();//定义对字符串执行操作的起始时间

  5. for(int i = 0;i < 10000;i++) {//利用for循环执行10000次操作

  6. str = str + i;//循环追加字符串

  7. }

  8. long endTime = System.currentTimeMillis();//定义字符串操作后的时间

  9. long time = endTime - starTime;//计算字符串执行操作的时间

  10. System.out.println("String消耗时间:"+time);//将执行的时间输出

  11. StringBuilder builder = new StringBuilder("");//创建字符串生成器

  12. starTime = System.currentTimeMillis();//更新操作执行的时间

  13. for(int j = 0;j<10000;j++) {//利用for循环进行操作

  14. builder.append(j); //循环追加字符

  15. }

  16. endTime = System.currentTimeMillis();//更新操作后的时间

  17. time = endTime - starTime;//更新追加操作执行的时间

  18. System.out.println("StringBuilder消耗时间:"+time);//将操作时间输出

  19. }

  20. }

运行结果:

String消耗的时间:89

StringBuilder消耗时间:1

append()方法

该方法用于向字符串生成器中追加内容。通过该方法的多个重载形式,可实现接受任何类型的费据,如int、boolean、char、String、double 或者另一个字符串生成器等。语法如下:
append(content)
其中,content表示要追加到字符串生成器中的内容,可以是任何类型的数据或者其他对象
2.insert(int offset, arg)方法
该方法用于向字符串生成器中的指定位置插入数据内容。通过该方法的不同重载形式,可实现向字符串生成器中插入 int、float、char 和 boolean 等基本数据类型的数据或其他对象。语法如下:
insert(int offset arg)
 ofset: 字符串生成器的位置。该参数必须大于等于0,且小于等于此序列的长度。

arg:将插入至字符串生成器的位置。该参数可以是任何数据类型的数据或其他对象。

StringBuilder bf=new StringBuilder("hello");//创建生成器

bf.insert(5,"word");//添加至字符生成器的位置及内容

System.out.println(bf.toString());//输出信息为hellowird

3.delete(int start , int end)方法
移除此序列的子字符串中的字符。该子字符串从指定的 start 处开始,一直到索引 end-1处的字符。如果不存在这种字符,则一直到序列尾部。如果 stat 等于 end,则不发生任何更改。语法如下:
delete(int start , int end)
start:将要删除的字符串的起点位置
 end:将要删除的字符串的终点位置
删除指定位置的子字符串,代码如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆比

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值