Java语言之String类

第一关:

任务描述

在最近的班干部竞选中,小明如愿以偿的当上了班长,成为班长后的第一件事,便是统计制作全班同学的花名册。由于上一任班长是个马大哈,之前的花名册可能存在各种问题,现在小明想要比对两份花名册的长度,以及它们是否相同。

需要用到的知识:

(1)String 类的创造

可以按照创建类的对象的一般方法来创建String类的对象:

String string = new String();

也可以直接在创建对象时指定字符串内容:

String string1 = "Hello World";  //string1字符串内容为"Hello World"
String string2 = "";  //string2字符串内容为空

(2)length()方法:

String类中的length()方法将返回字符串对象的长度

例如:

String string = "abcd";
int len = string.length();
System.out.println(len)

(3)compareTo()方法

String类中的compareTo()方法将返回两个字符串对象的比较结果,若相等,返回0。不相等时,从两个字符串第0个字符开始比较,返回第一个不相等的字符差;另一种情况,较长字符串的前面部分恰巧是较短的字符串,返回它们的长度差。

接下来看代码:

package step1;

import java.util.Scanner;

public class Roster {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        /********** Begin *********/
         String roster1 = "";
   String roster2 = "";
   roster1 = scanner.nextLine();
   roster2 = scanner.nextLine();
   System.out.println(roster1.length());
   System.out.println(roster2.length());
   if (roster1.compareTo(roster2) == 0) {
    System.out.println("相同");
}
else {
    System.out.println("不相同");
}


        /********** End *********/
    }
}

第二关:

任务描述

成为班长的小明最近好不忙,刚统计好了全班的花名册,班主任又交给了他一项任务。班主任的电脑不幸中了病毒,有一个文件变成了一堆乱码,但是班主任仔细查看了文件后发现,在这堆毫无意义的乱码中,还是有零散的班上同学的姓名穿插其中,现在班主任让小明将其位置找出来。

(1)substring()方法

String类中有两个substring()方法,第一种如下:

  1. String.substring(int start)

 其中,start为要开始截取的位置的索引,方法将返回一个字符串,内容为原字符串从start位置开始到原字符串结束中间的数据。

第二种substring()方法:

  1. String.substring(int start, int end)

其中,start为开始位置索引,end为结束为止索引,方法将返回一个字符串,内容为原字符串从start位置开始到end位置结束中间的数据。

(2)indexOf()方法

indexOf()方法用于在String类的对象中查找子字符串,方法返回一个整数值,为子字符串的开始位置,若存在多个子字符串,返回数值最小的整数值;如果没有找到子字符串,返回-1。

例如:

String str1 = "abcdefghijklmnabc";
System.out.println(str1.indexOf("c"));  //结果为2,为字符"c"第一次出现的位置
System.out.println(str1.indexOf("x"));  //结果为-1,没有找到字符"x"

代码如下:

package step2;

import java.util.Scanner;

public class NameSearch {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        /********** Begin *********/
        String data=scanner.nextLine();
		String name=scanner.nextLine();
		int i=0,a=0;
		while(i<=data.length()){
			a=data.indexOf(name,i);
			if(a!=-1){
				System.out.println(a);
                i=a+1;
			}
			else
			i++;
		}
		


        /********** End *********/
    }
}

 第三关:

(1)split方法

在处理字符串的时候我们经常需要将他们切割,然后分别处理,比如我们有一个字符串:张三,李四,王五,赵六,现在我们想要将他们的名字拆分出来,变成一个单独的字符串,如何做呢?

很简单使用split方法即可。

String str = "张三,李四,王五,赵六";
String[] names = str.split(",");
for (int i = 0; i < names.length; i++) {
    System.out.println(names[i]);
}

(2)StringBuffer类

StringBuffer类和String类一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,StringBuffer在进行字符串处理时,不生成新的对象,所以在内存使用上,StringBuffer类要优于String类。

StringBuffer类中存在很多和String类一样的方法,这些方法在功能上是完全一样的。

StringBuffer类中也有一些独特的方法,用于帮助我们更方便的实现某些功能。

StringBuffer类的对象的初始化:

StringBuffer stringBuffer = new StringBuffer();

这样初始化出的StringBuffer对象是一个空的对象。

如果需要创建带有内容的StringBuffer对象,则可以使用:

StringBuffer stringBuffer = new StringBuffer("Hello World!");

这样初始化出的StringBuffer对象的内容就是字符串"Hello World!"。

(3)append()方法

append()方法的作用是追加内容到当前StringBuffer对象的末尾,类似于字符串的连接:

StringBuffer stringBuffer = new StringBuffer("Hello");
stringBuffer.append("World!");
System.out.println(stringBuffer)

(4)reverse()方法

reverse()方法将把当前字符序列反转后返回,请看示例:

StringBuffer stringBuffer = new StringBuffer("abc");
System.out.println(stringBuffer.reverse());

(5)StringBuffer对象和String对象互转

注意,StringBufferString属于不同的类型,也不能直接进行强制类型转换,下面的代码都是错误的:

StringBuffer s = "abc";  //赋值类型不匹配
StringBuffer s = (StringBuffer)"abc";  //不存在继承关系,无法进行强转

正确的对象之间互转代码如下:

String string1 = "Hello World!";
StringBuffer stringBuffer = new StringBuffer(string1);  //String转换为StringBuffer
String string2 = stringBuffer.toString();  //StringBuffer转换为String

接下来看代码:

package step3;


public class Reverse {
    public static StringBuffer start(String data) {
        StringBuffer ans = new StringBuffer();
        /********** Begin *********/
      String[] str=data.split(" ");
	  for(int i=0;i<str.length;i++){
          StringBuffer a=new StringBuffer(str[i]);
		  ans.append(a.reverse());
		  ans.append(" ");

	  }

        /********** End *********/
        return ans;
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

长街395

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

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

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

打赏作者

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

抵扣说明:

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

余额充值