Java+字符串+赋值+相等_【JAVA】字符串操作 —字符串赋值、输出、合并、比较、查找、替换...

一、前言

前面,我们整体学习了有关文件操作方面的知识,实现了检测、新建、修改文件并写入或者复制移动的操作。本次学习的是有关字符串方面的操作,为方便大家学习,可以参照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.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 这两个字符相同。

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

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

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

1.5 替换字符串中指定字符

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

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)执行结果

分部拆装效果见下:    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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值