Java中如何判断两个String是不是相等
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中如何判断两个String是不是相等相关的知识,希望对你有一定的参考价值。
1. 在java中,不能用“==”和“!=”来判断两个字符串是否相等。因为String是引用类型,而不是基本数据类型。故它们的比较是使用地址和值
来比较,因为它们是不同的对象,有不同的地址。故str1==str2永远是false,而str1!=str2永远都是true。
2. Java中必须使用string1.equals(string2)来进行判断
string s1="Hello";
string s2="Hello";
则(s1==s2)=true;
因为他们指向的同一个对象。
String s1=new String("Hello");
String s2=new String("Hello");
则(s1==s2)=false
如果把其他变量的值赋给s1和s2,即使内容相同,
由于不是指向同一个对象,也会返回false。
所以建议使用equals(),因为equals比较的才是真正的内容
3.案例
String string1=new String( "aaa" );
String string2=new String( "aaa" );
这两个字符串当然应该是相等的。
如果用表达式string1==string2,则该表达式的值为false
如果用表达式string1.equals(string2),则该表达式的值为true 参考技术A 1,判断相等的两个方法:
(1)== :用于基本数据类型的判断(基本数据类型包括: byte,short,int,long,double,float,boolean)
(2)A .equals(B):用于引用类型的判断
2,例如:
Student stu1=new Student("zhangsan");
Student stu2=new Student("zhangsan");
stu1和stu2是Student类下的两个不同的对象,内存区域不相同,因此判断时
如果用stu1==stu2 结果为false
如果用stu1.equals(stu2) 结果为true 参考技术B
Object 有个方法叫 equals(obj) 就是用来比较两个对象是否相等的
返回值是个boolean类型
String就重写了这个方法,用来比较两个字符串是否相等
例如 String s = "aa";
String s2 = "aaa";
boolean btn = s.equals(s2);
String有非常多的方法,请查看JDK的API
String中equals()方法覆盖了父类的Object方法,比较规则为:如果两个对象的类型一致,并且内容一致,则返回true,否则返回false.
例如:
String a = "abc";
String b = "abc";
if(a.equals(b))//通过equals比较a,b是否相等
//相等
else
//不想等
参考技术D
用Equals判断即可。示例:
package a;public class TestReturn
public static void main(String[] args)
// TODO Auto-generated method stub
String a="a";
String b="b";
String c="a";
System.out.println(a.equals(b));
System.out.println(a.equals(c));
将会输出:false true
java中如何比较两个数组确定是不是相等?
比如说我设计了个密码锁有两个数组int[] secret 和 int[] input。最后要开锁的时候要确定两个数组中的内容是否相等,我首先是用了if (secret,equals(input)) 结果调试的时候发现这里答案是不相等。。。然后我又用了secret == input发现结果还是一样的,不相等。最后我改成了secret[0] == input [0]这样一个一个比较,然后答案便是相等了。请问这是为什么呢? 有没有办法用一个式子就能确定相等?
java比较两个字符串是否相等可以用equals方法或者是“==”。
equals 方法常常用来比较两个对象的内容是否相等,如果只是比较对象的内容,而不比较对象来源和功能类型时,常用此方法。
“==”常用于用于比较引用和比较基本数据类型时是否具有不同的功能,或者是基本数据类型,如果两个值相同,则结果为true,在比较引用时,如果引用指向内存中的同一对象,结果为true。
在比较字符串时,使用equals方法会比较两个对象的字符串常量池里的内容是否相等,在使用“==”方法比较字符串时,需要指定字符串常量池里的比较的那个内容,如果内容相等结果则为true,如果没有指定内容,比较的是内容的来源。
扩展资料
java比较数组时是否相等的判断条件:
一、若当前对象和比较的对象是同一个对象,即return true。也就是Object中的equals方法。
二、若当前传入的对象是String类型,则比较两个字符串的长度,即value.length的长度。
1、若长度不相同,则return false
2、若长度相同,则按照数组value中的每一位进行比较,不同,则返回false。若每一位都相同,则返回true。
三、若当前传入的对象不是String类型,则直接返回false
参考资料来源:百度百科——equals
参考技术A package rechapter9;import java.util.Arrays;
public class BigDecimalDemo
public static void main(String[] args)
int[] secret = 2,3,4,5;
int[] input = 2,3,4,5;
System.out.println(Arrays.equals(secret,input));//true
不用自己写,有自带的
参考技术B Object 的equals方法比较的是地址;String的equals方法比较的是内容。一个式子就能确定相等:
java.util.Arrays类下的
public static boolean deepEquals(Object[] a1,Object[] a2)
对于密码,我建议不要只是用数字哦,这个解决非数字问题。 参考技术C
判断java中的数组是否相等,有一个方法:Array.equal(new int[], new int[]);
这样的结果是:true。
参考技术D 写一个类,数组作为成员变量,重写(equals 方法)或者自己写一个方法 就可以了的啊以上是关于Java中如何判断两个String是不是相等的主要内容,如果未能解决你的问题,请参考以下文章