第五章 字符串

本文详细介绍了Java中的String类,包括声明、创建字符串,以及连接其他数据类型的方法。重点讲解了提取字符串信息,如获取长度、特定字符、子字符串,判断首尾内容,转换为字符数组等。此外,还探讨了字符串的操作,如截取、替换、分割、大小写转换和去除空白。最后,对比分析了StringBuffer和StringBuilder类,强调了它们在线程安全和效率上的差异。
摘要由CSDN通过智能技术生成

5.1 String类

5.1.1 声明字符串

        字符串是常量,它们可以显示任何文字信息,字符串的值在创建之后不能更改。在Java语言中,单引号中的内容表示字符,例如's',而双引号中的内容则表示字符串,例如:

"我是字符串","123456789","上下,左右,东西,南北"

        Java通过java.lang.String这个类来创建可以保存字符串的变量,所以字符串变量是一个对象。

        声明一个字符串变量a,以及声明两个字符串变量a、b。代码如下:

String a
String a,b; 

5.1.2 创建字符串

给字符串变量赋值有很多方法,下面分别介绍。

1.引用字符串的常量

String a ="时间就是金钱,我的朋友。";
String b= "锄禾日当午",C ="小鸡炖蘑菇";
string strl, str2;
strl ="We are students";
srt2 = "We are students";

2.利用构造方法实例化

String a = new String ("我爱清汤小肥羊");

Stringb=new String(a) ;

3.利用字符数组实例化

char[] charArray ={'t','i','m','e',};

String a=new String(charArray);

4.提取字符数组中的一部分创建字符串对象

char[] charArray ={'时','间','就','是','金','钱' };

String a=new String(charArray,3,2);

例5.1

public class j {   //创建类
    public static void main(String[] args) {   //主方法
        // TODO Auto-generated method stub
String a="时间就是金钱,我的朋友.";   //直接引用字符串常量
System.out.println("a="+a);    //输出a =时间就是金钱,我的朋友
String b= new String("我爱清汤小肥羊");  //利用构造方法实例化
String c= new String(b);     //使用已有字符串变量实例化
System.out.println("b="+b);    //输出字符串b的变量
System.out.println("c="+c);    //输出字符串c的变量
char[] charArray= {'t','i','m','e'};    //利用字符数组实例化
String d= new String(charArray);    //利用字符数组实例化
System.out.println("d="+d);     //输出字符串d的变量
char[]charArray2= {'时','间','就','是','金','钱'};    //利用字符数组实例化
//提取字符数组部分内容,从下标为4的元素开始,截取2个字符
String e= new String(charArray2,4,2);  //提取字符数组部分内容,从下标为4的元素开始,截取2个字符
System.out.println("e="+e);    //输出字符串e的变量
    }
}

5.2.2  连接其他数据类型


        字符串也可同其他基本数据类型进行连接。如果将字符串同这些数据类型进行连接,会将这些数据直接转换成字符串

例5.3

public class j {//创建类
    public static void main(String[] args) {//主方法
        // TODO Auto-generated method stub
int booktime=4;//声明的int型变量booktime
float practice=2.5f;//声明的float型变量practice
System.out.println("我每天花费"+booktime+"小时看书;"+practice+"小时上机练习");//将字符串与整型、浮点型变量相连,并将结果输出
    }
}

5.3  提取字符串信息

        字符串作为对象,可以通过相应的方法获取字符串的有效信息,如获取某字符串的长度、某个索引位置的字符等。本节将介绍几种获取字符串信息的方法。

5.3.1  获取字符串长度

length0方法返回采用UTF-16的编码表示字符的数量,也就是char的数量

str.length();

例如:定义一个字符串num,使用length()方法获取其长度。

string num ="12345 678910";

int size =num.length();

将size输出,得出的结果就是:

11

        这个结果将字符串num的长度赋值给int型变量size,此时变量size的值为11,这表示length()方法返回的字符串长度包括字符串中的空格。

5.3.2  获取指定的字符

charAt(string index)方法将可指定索引出的字符返回。

str. charAt (index);

str: 任意字符串对象。

 index: char值的索引。

例5.4

public class j {//创建类
public static void main(String[] args) {//主方法
String str="床前明月光,疑是地上霜。";//创建字符串对象str
char chr=str.charAt(4);//将字符串str中索引位置为4的字符赋值给chr
System.out.println("字符串中索引位置为4的字符是:"+chr);//输出chr
    }
}

5.3.3  获取子字符索引位置

1.indexOf(String str)
语法如下:

a.indexof(substr);

a:任意字符串对象

substr:要搜索的字符串

查找字符e在字符串str中首次出现的索引位置;

string str ="We are the world";

int size =str.indexof('e');        //size的值为1

例5.5

public class j {//创建类
    public static void main(String[] args) {//主方法
        String str = "12345abcde";   // 创建字符串对象
        int charIndex = str.indexOf("abc");// 获取字符串str中"abc"首次出现的索引,赋值给charIndex
        if (charIndex != -1) {// 判断:index的值不等于-1
            System.out.println("str中存在abc字符串");// 如果index不等于-1,则执行此行代码,说明str中存在“abc”字符串
        } else {//else语句
            System.out.println("str中没有abc字符串");//输出没有abc的字符串
        }
    }
}

 2.indexOf(String srt,int fromindex)

语法如下;

a.indexof(str,fromindex);

a:任意字符串对象

str:要搜索的子字符串

fromindex:开始搜索的索引位置

例5.6

public class j {    //创建类
    public static void main(String[] args) {   //主方法
        // TODO Auto-generated method stub
                String str = "We are the world";   // 创建字符串
                int firstIndex = str.indexOf("r");   // 获取字符串中"r"第一次出现的索引位置
                int secondIndex = str.indexOf("r", firstIndex + 1);  // 获取字符串中"r"第二次出现的索引位置,从第一次出现的索引位置之后开始查找
                int thirdIndex = str.indexOf("r", secondIndex + 1);  // 获取字符串中"r"第三次出现的索引位置,从第二次出现的索引位置之后开始查找
                System.out.println("e第一次出現的索引位置是:" + firstIndex);   //输出e出现的第一次索引位置
                System.out.println("e第二次出現的索引位置是:" + secondIndex);  //输出e出现的第二次索引位置
                System.out.println("e第三次出現的索引位置是:" + thirdIndex);   //输出e出现的第三次索引位置
            }
}

 

3.pubile int lastindexOf(String srt)
语法如下;

a.lastindexof(str);

a:任意字符串对象

str:要搜索的字符串

例5.7

public class j {    //创建类
    public static void main(String[] args) {   //主方法
        // TODO Auto-generated method stub
        String str = "Let it go!Let it go!";     // 创建字符串对象
        int gIndex = str.lastIndexOf("g");     // 返回”g“最后一次出现的位置
        int goIndex = str.lastIndexOf("go");     // 返回”go“最后一次出现的位置
        int oIndex = str.lastIndexOf("o");     // 返回”o“最后一次出现的位置
        System.out.println("字符串\"Let it go!Let it go\"中:\n");  //输出字符串
        System.out.println("\"g\"最后一次出现的位置是:" + gIndex);   //输出”g“最后一次出现的位置
        System.out.println("\"o\"最后一次出现的位置是:" + oIndex);   //输出”o“最后一次出现的位置
        System.out.println("\"go\"最后一次出现的位置是:" + goIndex);  //输出”go“最后一次出现的位置
    }
}

4.lastindexOf(String srt,int fromindex)
语法如下;

a.lastindexof(str,fromindex);

a:任意字符串

srt:要搜索的子字符串

fromindex:开始搜索的索引位置

例5.8

public class j {    //创建类
    public static void main(String[] args) {   //主方法
        // TODO Auto-generated method stub
        String str = "01a3a56a89";   // 返回字母"a"最后一次出现的索引位置
        int lastIndex = str.lastIndexOf("a");   //返回字母"a"的索引位置otherIndex
        // 满足0<=fiveBeforeIndex<=5条件,在满足条件的结果集中,返回最大的数字
        int fiveBeforeIndex = str.lastIndexOf("a", 5);   // 返回字母"a"的索引位置otherIndex
        int threeBeforeIndex = str.lastIndexOf("a", 3);   // 满足0<=threeBeforeIndex<=3条件,在满足条件的结果集中,返回最大的数字
        System.out.println("字符串\"01a3a56a89\"中:\n");    //输出字符串
        System.out.println("字母\"a\"最后一次出现的位置是:" + lastIndex);  //输出a最后一次出现的位置
        System.out.println("从索引位置5开始往回搜索,字母\"a\"最后一次出现的位置:" + fiveBeforeIndex);  //输出索引位置5开始往回搜索“a”最后一次出现的位置
        System.out.println("从索引位置3开始往回搜索,字母\"a\"最后一次出现的位置:" + threeBeforeIndex); //输出索引位置3开始往回搜索“a”最后一次出现的位置
    }
}

5.3.4  判断字符串首尾内容


1.starsWith(String prefix)
语法如下;

str.startsWith(prefix);

srt:任意字符串

prefix:作为前缀的字符串

例5.9 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值