【JAVA】字符串操作

您所在的位置:网站首页 java字符数组赋值 【JAVA】字符串操作

【JAVA】字符串操作

2024-06-12 04:51| 来源: 网络整理| 查看: 265

一、前言

前面,我们整体学习了有关文件操作方面的知识,实现了检测、新建、修改文件并写入或者复制移动的操作。本次学习的是有关字符串方面的操作,为方便大家学习,可以参照API阅读此类的各个方法知识。

API链接如下:https://pan.baidu.com/s/1_DMTYTstbDtfdjutBE3h8Q 提取码:elgp

字符串广泛应用 在Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。

二、任务学习

任务要求:

完成一个java application应用程序,完成字符串的各种操作。操作包括字符串的初始化赋值和输出。操作包括两个字符串相加合成为一个新字符串。操作包括两个字符串比较其是否相同。操作包括已知一个字符串,查找某一子字符串是否被包含在此字符串之中,如果包含,包含了多少次。操作包括已知一个字符串及其包含的某一子字符串,把此子字符串替换为其他的新的指定字符串。 1)分析学习: 1.1 字符串的初始化赋值和输出

String类又称作不可变字符序列。

String位于java.lang包中,Java程序默认导入java.lang包下的所有类。

Java字符串就是Unicode字符序列,例如字符串“Java”就是4个Unicode字符’J’、’a’、’v’、’a’组成的。

Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义的类String,每个用双引号括起来的字符串都是String类的一个实例。 1

1.2 将两个字符串合并为新字符串

Java允许使用符号"+"把两个字符串连接起来。 例:

String s1 = "Hello"; String s2 = "World! "; String s = s1 + s2; //HelloWorld!

符号"+“把两个字符串按给定的顺序连接在一起,并且是完全按照给定的形式。 当”+"运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。 例:

int age = 18; String str = "age is" + age; //str赋值为"age is 18" //这种特性通常被用在输出语句中: System.out.println("age is" + age);//age is 18 1.3 比较两个字符串是否相同

“==”代表比较双方是否相同。如果是基本类型则表示值相等,如果是引用类型则表示地址相等即是同一个对象。

覆盖:类 Object 中的 equals

Object类中定义有:public boolean equals(Object obj)方法,提供定义“对象内容相等”的逻辑。比如,我们在公安系统中认为id相同的人就是同一个人、学籍系统中认为学号相同的人就是同一个人。

Object 的 equals 方法默认就是比较两个对象的hashcode,是同一个对象的引用时返回 true 否则返回 false。

JDK提供的一些类,如String、Date、包装类等,重写了Object的equals方法,调用这些类的equals方法, x.equals (y) ,当x和y所引用的对象是同一类对象且属性内容相等时(并不一定是相同对象),返回 true 否则返回 false。

equals与equalsIgnoreCase的区别在于:后者将此 String 与另一个 String 比较,不考虑大小写。如果两个字符串的长度相同,并且其中的相应字符都相等(忽略大小写),则认为这两个字符串是相等的。 在忽略大小写的情况下,如果下列至少一项为 true,则认为 c1 和 c2 这两个字符相同。 7 8

1.4 查找字符串相互包含关系

在字符串中查询某个char值时,此字符可以是单字母也可以是某个字符串,但是只有包含指定的char值时才会返回确定的查找值。 9 当我们需要查找子字符串出现的次数时,我们需要进行遍历查找和切割判断。

方法很多,我们这里使用字符串截取的方案。使用indexOf来查找子字符串出现处的索引,用substring截取指导索引位置的字符串,即子串第一次出现的位置+长度=下一次的起始位置,如此循环查找,直至此字符串中没有这样的字符,则返回 -1退出循环语句。 10 11

1.5 替换字符串中指定字符

public String replace(char oldChar, char newChar)方法可以返回一个新字符串,这个新串是通过用newChar替换此字符串中出现的所有oldChar而生成的。 12

2)程序代码:

为实现整体效果,本人将以上所提的方法写成总的一个程序,如下:

/* 项目名称:Task_Du * 创建时间:2019年4月9日 * 创建者:Administrator_wz * 创建地点:kmust * 功能:字符串的各项操作:赋值输出、对比合成、查找替换 */ import java.util.Scanner;//导入java.util包中的Scanner类 public class stringTest1{//创建类名 public static void main(String[] args){//程序的主函数入口 //字符串的初始化赋值和输出 Scanner s1 = new Scanner(System.in);//获取键盘输入并赋值给s1字符串 System.out.println("请给字符串a赋值:");//输入提示信息 String a = s1.nextLine();//定义字符串变量,并赋值为用户输入的信息 Scanner s2 = new Scanner(System.in);//获取键盘输入并赋值给s2字符串 System.out.println("请给字符串b赋值:");//输入提示信息 String b = s2.nextLine();//定义字符串变量,并赋值为用户输入的信息 System.out.println("字符串a的内容为:"+a);//输出字符串a赋值后的内容 System.out.println("字符串a的内容为:"+b);//输出字符串b赋值后的内容 //将两个字符串比较是否相同 System.out.println("两字符串的内容是否相同? "+a.equals(b));//输出结果信息 //System.out.println(a==b); //比较两字符串是否同一个对象 //System.out.println(a.equals(b)); //比较两个字符串内容是否相同 //System.out.println(a.equalsIgnoreCase(b));//比较两个字符串(忽略大小写) //将两个字符串相加合成为一个新字符串 String c = a + b;//合并两个字符串 System.out.println("字符串a与b合并之后的内容为:\n"+c);//输出合并字符串 //查找某一子字符串是否被包含在此字符串之中,如果包含,包含了多少次 Scanner s3 = new Scanner(System.in);//获取键盘输入并赋值给s3字符串 System.out.println("请输入想要查找的字符串:");//输入提示信息 String d = s3.nextLine();//定义字符串变量,并赋值为用户输入的信息 boolean con =c.contains(d);//子字符串是否被包含在此字符串之中,包含输出true,否则输出false System.out.println("子字符串是否被包含在此字符串之中:"+con);//输出结果信息 System.out.println("包含次数为:"+repetitions(c,d));//调用count,输出包含次数 //把此子字符串替换为其他的新的指定字符串。 Scanner s4 = new Scanner(System.in);//获取键盘输入并赋值给s4字符串 System.out.println("请选择是否替换字符(串):确定(1)/拒绝(2)");//提示选择查询方式 int e = s4.nextInt();//定义一个int类型变量,选择查询方式 switch(e){//查询方式类 case 1://查询类型1,替换字符(串)后输出 Scanner s5 = new Scanner(System.in);//获取键盘输入并赋值给s5字符串 System.out.println("请输入想要替换的原字符:");//输入提示信息 String f = s5.nextLine();//定义字符串变量,并赋值为用户输入的信息 Scanner s6 = new Scanner(System.in);//获取键盘输入并赋值给s6字符串 System.out.println("请输入想要替换的原字符:");//输入提示信息 String g = s6.nextLine();//定义字符串变量,并赋值为用户输入的信息 String z=c.replace(f,g);//将f替换为g System.out.println("替换前:"+c);//输出替换前字符串信息 System.out.println("替换后:"+z);//输出替换后字符串信息 break;//跳出 case 2://查询类型2,不替换 System.out.println("最终的字符串内容为:\n"+c);//输出合并字符串 break;//跳出 default://输入有误项 System.out.println("该字符(串)有误");//输出错误提示 break;//跳出 } } public static int repetitions(String c, String d) {//创建repetitions统计出现次数 int count = 0;//创建一个计数器,统计次数 int fromIndex = 0;//创建计数器,设开始的地址 while ((fromIndex = c.indexOf(d, fromIndex)) != -1) {// 循环到没有输出-1时就停止循环 fromIndex = fromIndex + d.length();//子串第一次出现的位置+长度=下一次的起始位置 count++;//次数加1 } return count;//返回值 } } 3)执行结果

分部拆装效果见下: 2 3 4 String类常用的方法有(可到API中查看,部分前面也已讲过,此处不赘述):

String类的下述方法能创建并返回一个新的String对象: concat()、 replace()、substring()、 toLowerCase()、 toUpperCase()、trim()。

提供查找功能的有关方法: endsWith()、 startsWith()、 indexOf()、lastIndexOf()。

提供比较功能的方法: equals()、equalsIgnoreCase()、compareTo()。

其它方法: charAt() 、length()。

参考链接: https://blog.csdn.net/hacker754/article/details/78686212 https://blog.csdn.net/u014259820/article/details/79654444 https://blog.csdn.net/qq276295783/article/details/84947981 https://blog.csdn.net/wufaliang003/article/details/74931375/ https://blog.csdn.net/weixin_42014622/article/details/82988533 https://blog.csdn.net/mingzhuo_126/article/details/83653422 https://blog.csdn.net/P90X_Liyuan/article/details/79573294 https://blog.csdn.net/jiaxianggege215/article/details/78206167



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3