基本數據類型:
一個字節: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中的類型自動提升規則:
黙認浮點類型為double,float數據類型有一個后綴為" f "或" F "。
long類型有一個后綴,為" l " 或者" L "。
java的switch中可以為byte嗎?
switch默認只能是int和枚舉類型
因為byte,short,char可以自動向上轉換為int,所以是可以用byte的
但是不能用long,因為向下轉型會丟失精度
switch在jdk1.7以后可以用String類型了。