日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java类型比较_Java数据类型的比较

發布時間:2024/4/20 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java类型比较_Java数据类型的比较 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. “==” : 可以比較基本數據類型 , 也可以比較引用數據類型 ?;緮祿愋捅容^的是值,引用數據類型比較的是地址。

基本數據類型byte,short,char,int,long,float,double,boolean

封裝數據類型Byte,Short,Character,Integer,Long,Float,Double,Boolean

示例代碼1:/**

*?@ClassName:?TypeCompare1

*?@Author:?liuhefei

*?@Description:?byte,?short,?int,?long四種基本數據類型以及其包裝類的比較

*??1.?基本數據類型與其對應的包裝類運算或比較時,會自動拆箱成基本數據類型;

在自動裝箱時,會先檢查其值是否在-128到127之間,如果在這之間,就會直接指向常量池中其值的地址;

如果不在-128到127之間,就會創建一個新的對象,存儲在堆中,就是兩個不同的對象,比較時為false.

2.同時byte,?short,?long也具有該特性。

3.不同類型之間的基本數據類型也可以使用==進行比較,比較的是它們的值

*

*?@Date:?2020/5/11?17:53

*/

public?class?TypeCompare1?{

public?static?void?main(String[]?args)?{

int?i?=?127;

int?i1?=?127;

Integer?i2?=?127;

Integer?i3?=?127;

Integer?i4?=?new?Integer(127);

Integer?i5?=?new?Integer(127);

Integer?i6?=?128;

Integer?i7?=?128;

int?i8?=?300;

int?i9?=?300;

long?l1?=?300;

float?f1?=?300;

double?d1?=?300;

System.out.println(i?==?i1);?//?true;?基本類型比較值

System.out.println(i1?==?i2);//?true;i2自動拆箱變成基本類型,兩基本類型比較值

System.out.println(i1?==?i4);//?true;?i4自動拆箱變成基本類型,兩基本類型比較值

System.out.println(i2?==?i3);//?true;?i2和i3都指向常量池中同一個地址

System.out.println(i2?==?i4);//?false;?兩個不同的對象

System.out.println(i4?==?i5);//?false;?兩個不同的對象

System.out.println(i6?==?i7);//?false;?自動裝箱時,如果值不在-128到127,就會創建一個新的對象

//不同類型之間的基本數據類型也可以使用==進行比較

System.out.println(i8?==?i9);???//true?基本類型之間的比較,比較的是值

System.out.println(i8?==?l1);???//true

System.out.println(i8?==?f1);???//true

System.out.println(i8?==?d1);???//true

}

}

示例代碼2:/**

*?@ClassName:?TypeCompare2

*?@Author:?liuhefei

*?@Description:?float,double的比較

*?1.?float,double類型的包裝類,都會在堆中創建一個新對象,因此比較的是對象的地址

*

*?@Date:?2020/5/11?17:53

*/

public?class?TypeCompare2?{

public?static?void?main(String[]?args)?{

float?f1?=?314.15926f;

float?f2?=?314.15926f;

Float?f3?=?314.15926f;

Float?f4?=?314.15926f;

System.out.println(f1?==?f2);???//true,基本數據類型的比較,比較的是值

System.out.println(f3?==?f4);???//false,包裝類型的比較,都會創建新對象,比較的是對象的地址

System.out.println(f1?==?f3);???//true,?包裝類型拆箱為基本數據類型,比較的是值

double?d1?=?314.15926575958;

double?d2?=?314.15926575958;

Double?d3?=?314.15926575958;

Double?d4?=?314.15926575958;

System.out.println(d1?==?d2);??//true,基本類型的比較,比較的是值

System.out.println(d3?==?d4);??//false,包裝類型的比較,都會創建新對象,比較的是對象的地址

System.out.println(d1?==?d3);??//true,包裝類型拆箱為基本數據類型,比較的是值

}

}

2. equals() : 只能比較引用數據類型, 默認比較的是地址值,它不能比較基本數據類型,基本數據類型不是Object類型, 不能使用equals方法比較。

使用equals方法比較引用類型時,等同于"==",比較的是兩個對象的值是否相等。

如果你想自定義比較方法,需要重寫equals方法。

3. Jave中,Object類是所有Java類的祖先,Object是Java語言中唯一一個沒有父類的類。每個類都使用 Object 作為超類。所有對象(包括數組)都實現這個類的方法??梢允褂妙愋蜑镺bject的變量指向任意類型的對象。

在Object類中定義的方法,在所有類中都可以使用。Object類中定義了equals()方法和hashCode()方法,具體如下:

public boolean equals(Object obj): 比較兩個對象引用的值是否相等(比較地址)。指出調用該方法的對象是否與obj對象相等。即地址是否相等。

public int hashCode():該方法返回對象的哈希碼值,唯一標識一個對象。

Object類中定義的equals方法,用于比較對象的內存地址, 對于引用數據類型進行equals比較,在沒有重寫equals方法的情況下,它們之間的比較還是基于它們在內存中的存放位置的地址值的。

而有些類重寫了equals方法和hashCode方法,比如Byte,Short,Character,Integer,Long,Float,Double,String,Date,Boolean等等,在這些類當中equals方法有其自身的實現,而不再是比較類在堆內存中的存放地址了。

因為Object的equals方法也是用雙等號(==)進行比較的,所以比較后的結果跟雙等號(==)的結果相同。

4. 基本數據類型byte,short,char,int,long,float,double,boolean的比較應該使用雙等號(==),比較的是它們的值。

5. 引用數據類型在使用==比較的時候,比較的是它們在內存中的存放地址.只有當它們是同一個new出來的對象時,它們的比較結果才會為true,否則比較結果為false.

基本數據類型在使用==比較的時候,比較的是它們的值。不同類型之間的基本數據類型也可以使用==進行比較

6. 基本數據類型與其對應的包裝類運算或比較時,會自動拆箱成基本數據類型,也可以使用==直接進行比較。

在自動裝箱時,會先檢查其值是否在-128到127之間,如果在這之間,就會直接指向常量池中其值的地址;

如果不在-128到127之間,就會創建一個新的對象,存儲在堆中,就是兩個不同的對象,比較時為false.

7. 凡是new出來的都是對象,存儲在堆內存中。

7. java中Integer類型對于-128-127之間的數是存緩沖區的,所以用等號比較是一致的。但對于不在這區間的數字是在堆中new出來的。所以地址空間不一樣,也就不相等。

如果兩個Integer類型的數相等,且在-128-127之間,用==比較返回true,其余返回false.

8. 對于引用數據類型,我們還可以使用x.compareTo(y)方法來比較, 如果x與y相等,返回0;x大于y返回1;x小于y返回-1;

9. 兩個基本類型int進行相等比較,直接用==即可。一個基本類型int和一個包裝類型Integer進行相等比較,直接用==比較即可,Integer類型會做拆箱操作。

10. Integer類型比較大小,要么調用Integer.intValue()轉為基本類型用“==”比較,要么直接用equals比較。

總結:

(1)凡是new出來的都是對象,new Integer(127)與new Integer(127)使用==比較為false,使用equals比較才會返回true.

(2)無論如何,Integer與new Integer使用==比較都不會相等,使用equals比較才會返回true.

(3)兩個都是非new出來的Integer,如果數在-128到127之間,使用==比較則是true,如果不在-128到127之間,使用==比較否則為false。而如果使用equals方法來比較,無論比較的數在不在-128到127之間都為true.

(4)int和integer(無論new否)比,都為true,因為會把Integer自動拆箱為int再去比.

示例代碼3:public?class?TypeCompare3?{

public?static?void?main(String[]?args)?{

int?i?=?127;

int?ii?=?128;

Integer?i1?=?new?Integer(127);

Integer?i2?=?new?Integer(127);

Integer?i3?=?127;

Integer?i4?=?127;

Integer?i5?=?128;

Integer?i6?=?128;

Integer?i7?=?new?Integer(128);

Integer?i8?=?new?Integer(128);

Integer?i9?=?200;

Integer?i10?=?100;

System.out.println(i?==?i1);????//true?int和integer(無論new否)比,都為true,因為會把Integer自動拆箱為int再去比

System.out.println(i?==?i3);????//true

System.out.println(ii?==?i7);???//true

System.out.println(i1?==?i2);???//false??兩個不同的對象

System.out.println(i1?==?i3);???//false??無論如何,Integer與new?Integer不會相等

System.out.println(i3?==?i4);???//true??在-128-127之間,用==比較返回true

System.out.println(i5?==?i6);???//false?不在-128-127之間,用==比較返回false

System.out.println(i7?==?i8);???//false??兩個不同的對象

System.out.println(i1?==?i3);???//false??兩個不同的對象

System.out.println(i5?==?i7);???//false??兩個不同的對象

//x.compareTo(y)?如果x與y相等,返回0;x大于y返回1;x小于y返回-1

int?result1?=?i1.compareTo(i2);

int?result2?=?i5.compareTo(i6);

int?result3?=?i7.compareTo(i8);

int?result4?=?i1.compareTo(i9);

int?result5?=?i1.compareTo(i10);

System.out.println("result1?=?"?+?result1);??//0

System.out.println("result2?=?"?+?result2);??//0

System.out.println("result3?=?"?+?result3);??//0

System.out.println("result4?=?"?+?result4);??//-1

System.out.println("result5?=?"?+?result5);??//1

System.out.println("1:?"?+?i1.equals(i2));???//true

System.out.println("2:?"?+?i3.equals(i4));???//true

System.out.println("3:?"?+?i5.equals(i6));???//true

System.out.println("4:?"?+?i7.equals(i8));???//true

System.out.println("5:?"?+?i1.equals(i3));???//true

System.out.println(i1.intValue()?==?i2.intValue());??//true

System.out.println(i3.intValue()?==?i4.intValue());??//true

System.out.println(i5.intValue()?==?i6.intValue());??//true

System.out.println(i7.intValue()?==?i8.intValue());??//true

}

}

11. long與Long的比較, float與Float的比較, double與Double的比較均與int與Integer的比較類似,不再多說。

示例代碼4:public?class?TypeCompare4?{

public?static?void?main(String[]?args)?{

float?f1?=?3.14f;

float?f2?=?3.14f;

Float?f3?=?3.14f;

Float?f4?=?3.14f;

Float?f5?=?new?Float(3.14);

Float?f6?=?new?Float(3.14);

System.out.println(f1?==?f2);??//true???基本數據類型比較

System.out.println(f3?==?f4);??//false??兩個不同的對象

System.out.println(f5?==?f6);??//false??兩個不同的對象

System.out.println(f1?==?f3);??//true??封裝類型會拆箱

System.out.println(f1?==?f5);??//true??封裝類型會拆箱

System.out.println(f3?==?f5);??//false

System.out.println("1:?"?+?f3.equals(f4));??//true

System.out.println("2:?"?+?f3.equals(f5));??//true

System.out.println("3:?"?+?f5.equals(f6));??//true

}

}

示例代碼5:public?class?TypeCompare5?{

public?static?void?main(String[]?args)?{

double?d1?=?3.1415926d;

double?d2?=?3.1415926d;

Double?d3?=?3.1415926d;

Double?d4?=?3.1415926d;

Double?d5?=?new?Double(3.1415926d);

Double?d6?=?new?Double(3.1415926d);

System.out.println(d1?==?d2);??//true???基本數據類型比較

System.out.println(d3?==?d4);??//false??兩個不同的對象

System.out.println(d5?==?d6);??//false??兩個不同的對象

System.out.println(d1?==?d3);??//true??封裝類型會拆箱

System.out.println(d1?==?d5);??//true??封裝類型會拆箱

System.out.println(d3?==?d5);??//false??兩個不同的對象

System.out.println("1:?"?+?d3.equals(d4));??//true

System.out.println("2:?"?+?d3.equals(d5));??//true

System.out.println("3:?"?+?d5.equals(d6));??//true

}

}

總結

以上是生活随笔為你收集整理的java类型比较_Java数据类型的比较的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。