字符串相等判断
背景:条件语句中不能使用 “==” 来判定字符串相等。
- equals 方法
equals方法用于比较俩个字符串的内容是否相等,而“==”比较的是存放地址是否相等。
equals方法对于字符串来说是比较内容的,而对于非字符串来说是比较其指向的对象是否相同的。== 比较符也是比较指向的对象是否相同的也就是对象在对内存中的的首地址。
https://www.cnblogs.com/bluestorm/archive/2012/03/02/2377615.html
https://blog.csdn.net/yeyingss/article/details/53690098
- 代码如下
import java.util.Scanner;
public class Test13 {
public static void main(String[] args) {
Scanner num = new Scanner(System.in);
System.out.println("是否会员(y or n)");
String identity = num.next();
System.out.println("输入购物金额:");
double money=num.nextDouble();
if(identity.equals("n")){
System.out.println("your need pay is :"+money*0.9);
}else if(identity.equals("y")){
if (money >= 200) {
System.out.println("your need pay is :" + money * 0.75);
} else {
System.out.println("your need pay is :" + money * 0.8);
}
}
else{
System.out.println("输入有误");
}
}
}
代码输出:
是否会员(y or n)
n
输入购物金额:
200
your need pay is :180.0
- regionMatches() 方法
regionMatches()方法可用于判断字符串str1与str2中是否有相等的片段,或者限定str2的固定片段与str1的限定片段比较看是否相等,相等则返回 true 不想等返回 false。
public boolean regionMatches(int toffset,
String other,
int ooffset,
int len)
// ignoreCase -- 如果为 true,则比较字符时忽略大小写。
// toffset -- 此字符串中子区域的起始偏移量。
// other -- 字符串参数。
// ooffset -- 字符串参数中子区域的起始偏移量。
// len -- 要比较的字符数。
- 代码如下:
import java.util.Scanner;
public class Test13 {
public static void main(String[] args) {
Scanner num = new Scanner(System.in);
System.out.println("是否会员(y or n)");
String identity = num.next();
System.out.println("输入购物金额:");
double money=num.nextDouble();
if(identity.regionMatches(0,"n",0,1)){
if(money>=100){
System.out.println("your need pay is :"+money*0.9);
}else{
System.out.println("your need pay is :"+money);
}
}else if(identity.regionMatches(0,"y",0,1)){
if (money >= 200) {
System.out.println("your need pay is :" + money * 0.75);
} else {
System.out.println("your need pay is :" + money * 0.8);
}
}
else{
System.out.println("输入有误");
}
}
}
https://www.runoob.com/java/java-string-regionmatches.html
- 代码分析
上面俩个函数都可以实现判别字符串相等的功能,regionMaches()可以实现片段截取,equals()只能判断完整的字符串相等相等。