Java中的比较方法有很多种
有equals比较内容是否相同一般与判断语句相连。
String s="a";
String s1="A";
if(s.equals(s1)){
System.out.println("相等");
}
else{
System.out.println("不相等");
}//运行结果为不相等
有==号这个有值的情况下比较的是值如果是字符就比较首地址。
int a=5;
int b=5;
if(a==b){
System.out.println("相等");
}
else{
System.out.println("不相等");
}//这上面一段运行结果为相等
String s1="a"; //我们知道s1,s2,s3是对象,这个对象不是内容的持有者而是管理者
String s2=new String("a");//s2是新建一个地址,如果不建立新地址则s2不被创建会分配到常量池里
String s3=s1; //这个意思是s3跟s1共同管理字符串的内容
if(s1==s2){
System.out.println("相等");
}
else{
System.out.println("不相等");
}//这段运行结果为不相等,这个情况下比较的是地址,s1与s2地址不一样,因为s2是新建了一个地址
if(s1==s3){
System.out.println("相等");
}
else{
System.out.println("不相等");
}//这里运行结果则是相等,因为s1,s3共同管理所以比较的地址是一样的
equalsIgnoreCase比较的是内容并且忽略大小写。
String s="a";
String s1="A";
if(s.equalsIgnoreCase(s1)){
System.out.println("相等");
}
else{
System.out.println("不相等");
}//运行结果为相等,因为比较的是内容,且忽略内容大小写
compareTo是对象与与方法的参数进行比较,仅用于相同两个数据类型的比较,
compareTo的返回是这样的if(指定数=参数)return 0;
if(指定数>参数)return 1,指定数比参数大多数数则返回多少
if(指定数<参数)return -1,指定数比参数小多数则返回负多少
String s1="a";
String s2="A";
String s3="A";
System.out.println(s1.compareTo(s2)); //输出为32,我们知道Ascll码表a为97,A为65,所以返回32
System.out.println(s2.compareTo(s1)); //输出为-32,看哪个对象前哪个对象后
//s1.compareTo(s2),s1前s2后是s1-s2,97-65
//s2.compareTo(s1),s2前s1后是s2-s1,65-97
System.out.println(s2.compareTo(s3)); //输出的是0;
对象与对象的比较是compare,比较的是首地址
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)