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

歡迎訪問 生活随笔!

生活随笔

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

java

Java学习_int和Integer的区别+包装类

發布時間:2024/9/20 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java学习_int和Integer的区别+包装类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.Java 中的數據類型分為基本數據類型和引用數據類型

  int是基本數據類型,Integer是引用數據類型;

  Ingeter是int的包裝類,int的初值為0,Ingeter的初值為null。

2.初始化

  int i =1;

  Integer i= new Integer(1);

  有了自動裝箱和拆箱,使得對Integer類也可使用:Integer i= 1;  

3.自動裝箱和拆箱

  •  從Java5.0版本以后加入了autoboxing功能;
  •  自動“拆箱”和“裝箱”是依靠JDK5的編譯器在編譯期的“預處理工作”。

  3.1 自動裝箱:將基本數據類型封裝為對象類型,成為一個對象以后就可以調用對象所聲明的所有的方法。

1 //聲明一個Integer對象 2 Integer num = 10; 3 //以上的聲明就是用到了自動的裝箱:解析為 4 Integer num = new Integer(10);

  3.2?自動拆箱:將對象重新轉化為基本數據類型。

1 //裝箱 2 Integer num = 10; 3 //拆箱 4 int num1 = num;

  自動拆箱有個很典型的用法就是在進行運算的時候:因為對象時不恩直接進行運算的,而是要轉化為基本數據類型后才能進行加減乘除。

Integer num = 10; //進行計算時隱含的有自動拆箱 System.out.print(num--);

  進階:

//在-128~127 之外的數 Integer num1 = 297; Integer num2 = 297; System.out.println("num1==num2: "+(num1==num2)); // 在-128~127 之內的數 Integer num3 = 97; Integer num4 = 97; System.out.println("num3==num4: "+(num3==num4));

  打印的結果是:

    num1==num2:?false???

    num3==num4:true?

  很奇怪吧:這就歸結于java對于Integer與int的自動裝箱與拆箱的設計,是一種模式:享元模式(flyweight)

  為了加大對簡單數字的重利用,java定義:在自動裝箱時對于值從–128到127之間的值,它們被裝箱為Integer對象后,會存在內存中被重用,始終只存在一個對象

  而如果超過了從–128到127之間的值,被裝箱后的Integer對象并不會被重用,即相當于每次裝箱時都新建一個 Integer對象;

  以上的現象是由于使用了自動裝箱所引起的,如果你沒有使用自動裝箱,而是跟一般類一樣,用new來進行實例化,就會每次new就都一個新的對象;

  這個的自動裝箱拆箱不僅在基本數據類型中有應用,在String類中也有應用,比如我們經常聲明一個String對象時:

1 String str = "sl"; 2 //代替下面的聲明方式 3 String str = new String("sl");

  4.包裝類

  1)概述

  •   所有基本類型都有一個與之對應的類,即包裝類;
  •   包裝類是不可變類;  
  •   包裝類是final的,不能定義他們的子類。

基本數據類型

包裝類

byte

java.lang.Byte

boolean

java.lang.Boolean

short

java.lang.Short

char

java.lang.Character

int

java.lang.Integer

long

java.lang.Long

float

java.lang.Float

double

java.lang.Double

?

?

?

?

?

?

?

?

?

?

?

?

?

  提供包裝類的原因:

  為了解決基本類型不能參與面向對象開發的問題。(為了在各種類型間轉化,通過各種方法的調用。否則,你無法直接通過變量轉化)。

  比如,現在int要轉為String
     int a=0;
     String result=Integer.toString(a);
  在java中包裝類,比較多的用途是用在于各種數據類型的轉化中。
  以下是demo(來自落葉補充)

  //通過包裝類來實現轉化的

1 int num=Integer.valueOf("12");2 int num2=Integer.parseInt("12");3 4 double num3=Double.valueOf("12.2");5 double num4=Double.parseDouble("12.2");6 //其他的類似。通過基本數據類型的包裝來的valueOf和parseXX來實現String轉為XX7 8 String a=String.valueOf("1234");//這里括號中幾乎可以是任何類型9 String b=String.valueOf(true); 10 String c=new Integer(12).toString();//通過包裝類的toString()也可以 11 String d=new Double(2.3).toString();

來源:https://www.cnblogs.com/hxliang/p/5454184.html

總結

以上是生活随笔為你收集整理的Java学习_int和Integer的区别+包装类的全部內容,希望文章能夠幫你解決所遇到的問題。

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