亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

java語言

Java中的== 和equals()方法詳解與實(shí)例教程

時(shí)間:2024-08-03 06:51:08 java語言 我要投稿
  • 相關(guān)推薦

Java中的== 和equals()方法詳解與實(shí)例教程

  Java中的== 和equals()方法有什么區(qū)別呢?下面是由百分網(wǎng)小編為大家整理的Java中的== 和equals()方法詳解與實(shí)例教程,喜歡的可以收藏一下!了解更多詳情資訊,請(qǐng)關(guān)注應(yīng)屆畢業(yè)生考試網(wǎng)!

  Java中的== 和equals()方法:

  Java中的數(shù)據(jù)類型,可分為兩類:

  1.基本數(shù)據(jù)類型,也稱原始數(shù)據(jù)類型。

  byte,short,char,int,long,float,double,boolean,他們之間的比較,應(yīng)用雙等號(hào)(==),比較的是他們的值。

  2.引用數(shù)據(jù)類型(類)

  當(dāng)它們用(==)進(jìn)行比較的時(shí)候,比較的是他們?cè)趦?nèi)存中的存放地址,所以,除非是同一個(gè)new出來的對(duì)象,他們的比較后的結(jié)果為true,否則比較后結(jié)果為false。

  Java當(dāng)中所有的類都是繼承于Object這個(gè)基類的,在Object中的基類中定義了一個(gè)equals()的方法,這個(gè)方法的初始行為是比較對(duì)象的內(nèi)存地址,但在一些類庫當(dāng)中這個(gè)方法被覆蓋掉了,如String,Integer,Date在這些類當(dāng)中equals有其自身的實(shí)現(xiàn),而不再是比較類在堆內(nèi)存中的存放地址。

  對(duì)于引用數(shù)據(jù)類型之間進(jìn)行equals比較,在沒有覆寫equals方法的情況下,他們之間的比較還是基于他們?cè)趦?nèi)存中的存放位置的地址值的,因?yàn)镺bject的equals方法也是用雙等號(hào)(==)進(jìn)行比較的,所以比較后的結(jié)果跟雙等號(hào)(==)的結(jié)果相同。

  Object中的equals()方法

  publicbooleanequals(Objectobj){

  return(this==obj);

  }

  舉個(gè)實(shí)例:

  packageorg.java.test;

  publicclassPerson{

  privateintage;

  privateStringname;

  publicintgetAge(){

  returnage;

  }

  publicvoidsetAge(intage){

  this.age=age;

  }

  publicStringgetName(){

  returnname;

  }

  publicvoidsetName(Stringname){

  this.name=name;

  }

  publicPerson(intage,Stringname){

  this.age=age;

  this.name=name;

  }

  publicPerson(){

  }

  @Override

  publicinthashCode(){

  finalintprime=31;

  intresult=1;

  result=prime*result+age;

  result=prime*result+((name==null)?0:name.hashCode());returnresult;}

  @Override

  publicbooleanequals(Objectobj){

  if(this==obj)

  returntrue;

  if(obj==null)

  returnfalse;

  if(getClass()!=obj.getClass())

  returnfalse;

  Personother=(Person)obj;

  if(age!=other.age)

  returnfalse;

  if(name==null){

  if(other.name!=null)

  returnfalse;

  }elseif(!name.equals(other.name))

  returnfalse;

  returntrue;

  }

  }

  MainTest.java[java]view plaincopyprint?

  packageorg.java.test;

  publicclassMainTest{

  publicstaticvoidmain(String[]args){

  Personp1=newPerson(99,"A");

  Personp2=newPerson(99,"A");

  Personp3=p1;

  System.out.println(p1==p2);//false

  System.out.println(p1==p3);//true

  System.out.println(p1.equals(p2));

  //未重寫equals()方法,返回false

  //重寫equals()方法后,比較的是內(nèi)容,返回true;System.out.println("<====================>");Strings1="hello";Strings2="hello";

  Strings3=newString("hello");

  System.out.println(s1==s2);//true

  System.out.println(s1==s3);//false

  System.out.println(s1.equals(s2));//true

  System.out.println(s1.equals(s3));//true

  }

  }

【Java中的== 和equals()方法詳解與實(shí)例教程】相關(guān)文章:

java中BigDecimal的操作方法詳解06-28

Java中Class對(duì)象詳解09-03

關(guān)于基于Java字符串==與 equals07-28

Java中的對(duì)象與引用知識(shí)詳解11-07

Java中的clone方法08-15

Java環(huán)境變量配置方法詳解07-02

java基本教程之join方法的詳解06-08

JAVA中IP和整數(shù)相互轉(zhuǎn)化的方法07-10

Java語法基礎(chǔ)中for循環(huán)語句詳解10-10

詳解Java中的Lambda表達(dá)式10-20