基本數據類型(Integer問題)


基本數據類型:

一個字節:boolean,byte,

兩個字節:char,short

四個字節:int,float

八個字節:double,long

https://blog.csdn.net/weixin_36431280/article/details/78430786

String類型

utf-8編碼情況下,一個中文字符占3個字節

gbk編碼情況下,一個中文字符占2個字節

英文字符都是一個字節

裝箱拆箱

在Integer為null的時候不能等於int

當比較

Integer i = new Integer(200);

int j=200;

i==j true

進行了兩步,j裝箱變為Integer,Integer重寫equals方法比較的是值的大小。

Integer i=10;//裝箱

int j=i;          //拆箱

Integer i=10;

int j=10;

i==j;//true,拆箱,會轉換成int類型來進行比較,和上面new Integer()會有點不一樣。

Integer緩存:和String常量池類似,但范圍只有-128-127

Integer a=100,b=100;

a==b true//Integer緩存池里面只有一份數據,就像String一樣

Integer a=200,b=200

a==b false//不能放到Integer緩存池里面,就像兩個對象,所以不相等

java中只有值傳遞

public class Solution {
    public static void main(String[] args) {
       Integer a=new Integer(100);
       Integer b=new Integer(200);
       Solution s=new Solution();
       s.swap(a, b);//這里其實是傳的引用的復制的值
       System.out.println(a);
    }
    public void swap(Integer a,Integer b) {所以只修改了復制的值,並沒有直接去改引用
        Integer temp=b;
        b=a;
        a=temp;
    }
}
輸出100

 基本類型轉換

 正向過程:由低字節向高字節自動轉換

    byte->short->int->long->float->double

逆向過程:使用強制轉換,可能丟失精度。

    int a=(int)3.14;

java中的類型自動提升規則:

   1) 所有的byte型. short型和char型將被提升到int型(例外: final修飾的short, char變量相加后不會被自動提升。)
   2)如果一個操作數是long形 計算結果就是long型;
   3)如果一個操作數是float型,計算結果就是float型;
   4)如果一個操作數是double型,計算結果就是double型;
 
 java中:

   黙認浮點類型為double,float數據類型有一個后綴為" f "或" F "。

   long類型有一個后綴,為" l " 或者" L "。

java的switch中可以為byte嗎?

switch默認只能是int和枚舉類型

因為byte,short,char可以自動向上轉換為int,所以是可以用byte的

但是不能用long,因為向下轉型會丟失精度

switch在jdk1.7以后可以用String類型了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM