java.lang基礎(chǔ)包之java基本數(shù)據(jù)類型解析

java里的八大基礎(chǔ)數(shù)據(jù)類型:
分別是:

long(64)

[-9,223,372,036,854,775,808~ 9,223,372,036,854,775,807]
默認值:0L

int(32)

[-2,147,483,648-2,147,483,647] 20億左右
默認值: 0

short(16)

[-32768~32767]
默認值: 0

byte(8)

[-128~127]
默認值: 0

float(32)

默認值:0.0f
ps:不能表示精確的值

double(64)

默認值 :0.0d

boolean(64)

默認值:false

char(16)

char類型是一個單一的 16 位 Unicode 字符

關(guān)于被封裝的基本類型

他們在java里都被封裝成了不同的包裝類
區(qū)別在于 一個是數(shù)據(jù)基本類型,而包裝類是一個對象。
對于類我們的使用應(yīng)該是這樣的
Integer i= new Integer(1);
但是在jdk1.5引入了自動裝箱與拆箱(注解1)
然后就可以
Integer i=1;
但是實際執(zhí)行的是Integer i = Integer.valueOf(1);
可以看下這段代碼

        Integer a=1000;
        Integer b=1000;
        Integer c=100;
        Integer d=100;
        System.out.println(a==b);
        System.out.println(c==d);

執(zhí)行輸出會是什么呢?

false
true

我們來看下源碼

  public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }

說白了,就是當新建一個Integer類型的對象,如果其值再-128到127之內(nèi),就會將這個值緩存起來 用的時候也是用的同一個緩存對象,所以用==去判斷的時候,因為是同一個地址的同一個對象,所以肯定是==的。就不會去新new一個了。但是用equal方法去比較的時候,因為比較的是值,所以就都會返回true了。

public boolean equals(Object obj) {
//先判斷該對象是不是 Integer的實例
        if (obj instanceof Integer) {
    //進行值的比較
            return value == ((Integer)obj).intValue();
        }
        return false;
    }

這部分的源碼有些是相同的,所以這里只記錄下學(xué)習(xí)的結(jié)果,不將全部過程記錄下來。


數(shù)值類型類比.png

在所有的數(shù)值類型里都繼承了Number類且實現(xiàn)了Comparable接口【注解2】。
在Number里 最主要都是定義了可以六種數(shù)值的獲取格式。

注解21:自動裝箱與拆箱

自動裝箱:
Integer i=1;
系統(tǒng)執(zhí)行:Integer i = Integer.valueOf(1);
自動拆箱:
int a=i;
系統(tǒng)執(zhí)行:int t = i.intValue();

注解2:關(guān)于Comparale 接口

主要說明下Comparale里面的方法,里面只有一個方法:
public int compareTo(T o);
其實這個的主要作用是暴露這個接口給外部可以重新定義排序的方法

class Grade implements  Comparable<Grade> {
     private Integer grade;
     private String name;

     public Grade(String name,Integer grade ) {
         this.grade = grade;
         this.name = name;
     }

     public Integer getGrade() {
         return grade;
     }

     public void setGrade(Integer grade) {
         this.grade = grade;
     }

     public String getName() {
         return name;
     }

     public void setName(String name) {
         this.name = name;
     }

     //重新定義排序
     @Override
     public int compareTo(Grade o){
       if(o.getGrade()>this.getGrade()){
           return 1;
       } else if( o.getGrade()<this.getGrade()) {
           return -1;
       } else {
           return 0;
       }
     }
 }
public  static void main(String[] args){
        int[] test1={1,2,4,3,6,5};
        Arrays.sort(test1);

        for (Integer t:test1){
            System.out.println(t.intValue());
        }

        Grade[] grades={
                new Grade("aa",39),
                new Grade("bb",42),
                new Grade("cc",13),
                new Grade("ee",73),
                new Grade("ff",11),
        };
        Arrays.sort(grades);
        for (Grade t:grades){
            System.out.println(t.getName()+t.getGrade());
      
    }

輸出結(jié)果為

ee73
bb42
aa39
cc13
ff11

我們就可以根據(jù)我們在Grade類里的重寫實現(xiàn) compareTo方法得到我們想要的排序

注解3:如何解決float,double存在精度丟失的問題

 double result = 1.0 - 0.9;

結(jié)果為0.09999999999999998

因為浮點數(shù)值采用的是二進制表示,二級制中無法精確表示1/10。當不允許有任何四舍五入的誤差的時候應(yīng)該使用BigDecimal類。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、基本數(shù)據(jù)類型 注釋 單行注釋:// 區(qū)域注釋:/* */ 文檔注釋:/** */ 數(shù)值 對于byte類型而言...
    龍貓小爺閱讀 4,451評論 0 16
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評論 19 139
  • 前言 人生苦多,快來 Kotlin ,快速學(xué)習(xí)Kotlin! 什么是Kotlin? Kotlin 是種靜態(tài)類型編程...
    任半生囂狂閱讀 26,692評論 9 118
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,692評論 18 399
  • 《最好的我們》已經(jīng)上映一段時間了,因為不太看青春電視劇了,墮胎打架愛恨情仇根本不是一般人的青春啊,所以直到到歡樂頌...
    冬素閱讀 203評論 0 0

友情鏈接更多精彩內(nèi)容