龙空技术网

Java基础之:比较Java比较的三种方式

TechShare 328

前言:

今天大家对“java中的比较”大致比较讲究,看官们都想要知道一些“java中的比较”的相关资讯。那么小编在网上网罗了一些关于“java中的比较””的相关知识,希望咱们能喜欢,兄弟们快快来学习一下吧!

首先抱歉取了一个这么拗口的题目,是故意的。很多人在比较两个Java对象尤其是字符串时常常会犹豫用那种方式好。今天简单地梳理一下java的三种比较方式:“==”,compareTo(),equels()。

1、== 和 equals的区别:

==主要是两个变量值的比较,返回值为true 或者是false。对于普通变量,如:int a=10; int b= 10; a==b,返回为 true。

而对于下面情况:

String a=new String("abc");

String b=new String("abc");

a==b; 返回的则是一个false。这是因为,对于对象的比较是对对象引用的比较,对于a和b ,他们在内存中对应的地址是不一样的,所以 a==b 返回的值是一个false.

==操作符并不涉及对象内容的比较。若要对对象内容进行比较,则用equals. 如果 在本例中,a.equals(b)则返回是一个true值。

总而言之,==是对对象地址的比较,而equals是对对象内容的比较。对于基本数据类型,一般用==,而对于字符串的比较,一般用equals

2、对于compareTo(), 在API中,Java.lang包下面的基本数据类型的封装类都提供了该方法,如 Integer,Float,Byte,Short,Character 等

在基本数据中,compareTo()是比较两个Character对象;

在 Boolean中,是用boolean的实例于其它实例进行比较;

在String 中,则是按照字典顺序进行比较,返回的值是一个int 型。

贴一段代码:

public class Test{ public static void main(String args[]){ String s1=new String("abc"); String s2=new String("abc"); System.out.println((s1==s2)? "true":"false"); System.out.println((s1.equals(s2))? "true":"false"); if(s1.compareTo(s2)==0){ System.out.println("s1 is equal s2");} s1=s2; System.out.println((s1==s2)? "true":"false"); } }

程序的运行结果为:

falsetrues1 is equals s2true

这里需要说明的一点,s2对象赋值给s1之后,s2和s1的引用其实是指向了内存中的同一个位置。所以,再进行比较时,就是true.

标签: #java中的比较 #java 比较两个对象