第十章字符串

10.1.String类:

单个字符串可以用char类型保存,多个字符组成的文本则需要保存在String类型对象中String通常被称为字符串,一个String对象最多可保存(2^32-1)个字节(占用4GB的大小)的文本内容。

1.1声明字符串:在java语言中,字符串必须包含在一对双引号之间。例如:

"23.23"   "a"   "hello"   "好"

以上都是字符串常量。不能作为其他数据类型来使用 。

声明变量的方法:

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

b.str:任意有效的标识符,表示字符串变量的名称。

声明字符串变量 s   String s。

1.2创建字符串:在java中,将字符串作为对象来处理,因此可以像创建其他类对象一样来创建字符串对象,创建对象要使用类的构造方法,String类的常用构造方法如下:

(1)String(char a [])使用一个字符数组a创建String对象

 char a[] = {'g','o','o','d'};    //等价与
String s = new String (a);     String s = new String("good")

(2)String(char a[],int offset,int length)使用提取数组a中的一部分创建一个字符串对象,offest表示开始截取的位置,length表示截取长度

 char a[] = {'s','t','u','d','e','n','t'};   等价于
String s = new String (a,2,4);   String s = new String("uden") 

(3).String (char [] value)分配一个新的String对象,使其表示字符数组参数中所有元素连接的结果

 char a[] = {'s','t','u','d','e','n','t';}  等价于
String s = new String(a);    String s= new String("student") 

(4)通过将字符串常量引用赋值给一个字符串变量来创建字符串 

 String str1,str2;
str1 ="We are students"
str2 = "We are students"

10 2.连接字符串

对于已经声明的字符串,可以对其进行相应的操作。可对多个字符串进行连接,也可使字符串与其他数据类型连接

2.1连接多个字符串使用“+”可以实现多个字符串连接。

2.2连接其他数据类型,会将其他数据类型直接转化为字符串

10.3.获取字符串信息

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

String str="we are students"

int size=str.length();

3.2字符串查找:使用 indexOf()查找字符串中该元素首次出现的位置与IndexOf()查找字符串中该元素最后一次出现的位置,这两种方法进行。

3.3获取指定索引位置的字符: 使用charAt()方法

10. 4.字符操作

4.1获取子字符串:通过 String类的substring()方法可对字符串进行截取。substring()被两种不同的的重载形式来满足不同的需要。这些形式的共同点是利用字符串的下标进行截取。明确字符串的下标是从0开始的。

substring(  int    begainindex前索引) ,从指定的索引位置开始截取直到该字符串的结尾的子串。

                                 substring(int    begainindex前索引   int  endindex后索引  )从字符串某一索引位置开始截取至某一位置结束的子串。

 4.2去除空格:trim()方法返回字符串中的副本,忽略前导空格和尾部空格。

str.trim 

4.3替换字符 

replace()方法将指定的字符串或字符替换成新的字符串或字符。

str.replace(      )

4.4 判断字符串的开始与结尾

starts With()方法与endWith()方法分别用于判断字符串是否以指定的内容开始或结束。返回值为boolean类型

(1)startsWith()方法,用于判断当前字符串对象前缀是否为指定参数的字符。

str.sartsWith(String prefix)

 (2)endWith()方法判断当前字符串是否以给定的子字符串结尾。

endWith(String sufix)

4.5判断字符串是否相等。对字符串对象进行比较不能简单的使用比较运算符“==”

(1)equals()方法:如果两个字符串具有相同的字符和长度,则使用equals()方法进行比较。

str.equals(String otherstr) 

4.6按照字典顺序比较两个字符串。使用compareTo方法。如果按字典顺序此 String对象位于参数字符串之前,则比较结果为一个负整数;如果按字典顺序此比String对象位于参数字符串之后,则比较结果为一个正整数:如果这两个字符串相等,则结果为0。 语法如下: 
str.compareTo(String otherstr)

4.7字母大小写转换:String类的toLowerCase()方法可将字符串中的所有大写字母改写为小写字母,而toUpperCase()方法可将字符串中的所有小写字母改写为大写字母。

1. toLowerCase()方法
该方法将字符串中的所有大写字母转换为小写。如果字符串中没有应该被转换的字符,则将厦符串返回;否则将返回一个新的字符串,将原字符串中每个大写字母都转换成小写,字符串长度不变


str.toLowerCase()


2.toUpperCase()方法
该方法将字符串中所有的小写字母转换为大写。如果字符串中没有应该被转换的字符,则将原符串返回;否则返回一个新字符串,将原字符串中每个小写字母都转换成大写,字符串长度不变。


str.toUpperCase()

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

str.split(String sign)

2. split(String sign,int limit)
该方法可根据给定的分割符对字符串进行拆分,并限定拆分的次数。


str.split(String sign,int limit)

10.5格式化字符串

 String类的静态format0方法用于创建格式化的字符串。format)方法有两种重载形式。
1.format(StringformatObject….args)
该方法使用指定的格式字符串和参数返回一个格式化字符串,格式化后的新字符串使用本地默认的语言环境。


str.format(StringformatObject..args)


format:格式字符串。
args:格式字符串中由格式说明符引用的参数。如果还有格式说明符以外的参数,则忽略这些额外的参数。此参数的数目是可变的,可以为0。
2.format(Local lStringformatObject...args)
该方法使用指定的语言环境、格式字符串和参数返回一个格式化字符串,格式化后的新字符串使用其指定的语言环境


str.format(Local StringformatObject...args)

1:格式化过程中要应用的语言环境。如果1为null,则不进行本地化。
format:格式字符串。
rgs:格式字符串中由格式说明符引用的参数。如果还有格式说明符以外的参数,则忽略这些额外的参数。此参数的数目是可变的,可以为0。

5.1日期和时间字符串的格式化:如果想输出满意的日期和时间格式,一般需要编写大量的代码、经过各种算法才能实现。format()方法通过给定的特殊转换符作为参数来实现对日期和时间的格式化。
1.日期格式化
先来看一个例子。返回一个月中的天数,


Date date=new Date(); //创建 Date 对象 date 
String s=String.format("%te", date); //通过 format()方法对 date 进行格式化 


上述代码中变量s是前日期中的天数,如今天是15号,则s的值为15;%e转换符。常
用的日期格式化转换符如表10.1所示。

import java.util.Date; //导入java.util.Date类 
public class Eval { //新建类 
public static void main(String args){ //主方法 
Date date=new Date(); //创建Date 对象 date 
String year =String.format("%tY",date); //将 date 进行格式化 
String month=String.format("%tB,date); String day =String.format("%td",date);
System.out.printin(“今年是:"+year+年”); //输出信息 System.out.printin("现在是:"+month); System.out.printin(“今天是:“+day+"号");

 2.时间格式化:使用format()方法不仅可以完成日期的格式化,也可以实现时间的格式化。时间的格式化转换符要比日期的格式化转换符更多、更精确,它可以将时间格式化为时、分、秒、毫秒等。

3.格式化常见的日期与时间组合:

 

5.2常规类型格式化: 

 

10.6使用正则表达式

通常用于判断语句中用来检查某一字符串是否满足某一格式。正则表达式是含有一些具有特殊意义字符的字符串,这些特殊字符串称为正则表达式的元字符。

 

10.7字符串生成器

创建成功的字符串对象,其长度是固定的,内容不能被改变和编译。虽然使用“+”可以达到附加新字符或字符串的目的,但“+”会产生一个新的 String 实例,会在内存中创建新的字符串对象。如果重复地对字符串进行修改,将极大地增加系统开销。而 JDK 新增了可变的字符序列 StringBuilder类,大大提高了频繁增加字符串的效率。

String str="";
  long starTime=System.currentTimeMillis();
  for(int i=0;i<10000;i++) {
   str=str+i;
  }
  long endTime=System.currentTimeMillis();
  long time=endTime-starTime;
  System.out.println("String消耗时间:"+time);
  StringBuilder builder=new StringBuilder("");
  starTime=System.currentTimeMillis();
  for(int j=0;j<10000;j++) {
   builder.append(j);
  }
  endTime=System.currentTimeMillis();
  time=endTime-starTime;
  System.out.println("StirngBuilder消耗时间:"+time);

 1. append()方法
方法用于向字符串生成器中追加内容。通过该方法的多个重载形式,可实现接受任何类型的数据,如int、boolean、char、String、double或者另一个字符串生成器等。


append(content)


其中,content表示要追加到字符串生成器中的内容,可以是任何类型的数据或者其他对象。


2. insert(int offset,arg)方法
该方法用于向字符串生成器中的指定位置插入数据内容。通过该方法的不同重载形式,可实现向字符串生成器中插入int、float、char 和boolean 等基本数据类型的数据或其他对象。语法如下:
insert(int offset arg)
offset:字符串生成器的位置。该参数必须大于等于0,且小于等于此序列的长度。 arg:将插入至字符串生成器的位置。该参数可以是任何数据类型的数据或其他对象。向字符串生成器中指定的位置添加字符


StringBuilder bf=new StringBuilder("hello"); //创建字符生成器 
bf.insert(5."world");位置 //添加至字符生成器的位置及内容 
System.outprintn(bf.toString()); //此时输出信息为helloworld

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

StringBuilder bf=new StringBuilder("StringBuilder"); //创建字符串生成器 
bf.delete(5, 10); //删除的子字符串 
System.out.printin(bftoString()); //此时输出的信息为Strinder

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值