一、可變參數:
1、需求: 定義一個函數做加法功能(函數做幾個數據的加法功能是不確定)。
方式一:函數重載,但是隻要多一個參數就要重寫一次方法,太麻煩。
方式二:數組
方式三:可變參數
2、可變參數的格式:
數據類型… 變量名
3、可變參數要注意的細節:
1)如果一個函數的形參使用上了可變參數之後,那麼調用該方法的時候可以傳遞參數也可以不傳遞參數。
2)可變參數實際上是一個數組對象。
3)可變參數必須位於形參中的最後一個參數。
4)一個函數最多隻能有一個可變參數,因爲可變參數要位於形參中最後一個位置上。
二、自動裝箱與自動拆箱
1、java是面向對象 的語言,任何事物都可以使用類進行描述,sun就使用了一些類描述java中八種基本數據類型數據。
基本數據類型 包裝類型
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character
2、基本數據類型數據有了對應的包裝類型的好處:
public class Demo7 {
public static void main(String[] args) {
String str = "12";
//字符串轉換成int類型數據。 可以把字符串轉換成對應的數字
int i = Integer.parseInt(str);
System.out.println(i+1);
//把數字轉換成字符串
System.out.println("把整數轉換成對應的字符串:"+i+"");
System.out.println("把整數轉換成對應的字符串:"+Integer.toString(i));
//把整數轉換成對應的進制形式
System.out.println("10的二進制(字符串形式):"+ Integer.toBinaryString(10));
System.out.println("10的八進制(字符串形式):"+ Integer.toOctalString(10));
System.out.println("10的十六進制(字符串形式):"+ Integer.toHexString(10));
//可以把字符串當成對應的進制數據幫你轉換,查看源碼發現最大爲三十六進制,不能再大了。
String data = "10";
//二進制
int a = Integer.parseInt(data, 2);
System.out.println("a="+a);
//三進制
int a2 = Integer.parseInt(data, 3);
System.out.println("a2="+a2);
//集合: 集合是可以存儲任意對象類型數據的容器。
ArrayList list = new ArrayList();
list.add(1);
list.add(2);
list.add(3);
//那爲什麼存入基本數據類型數據不報錯呢?原因如下:
//自動裝箱: 自動把java的基本數據類型數據轉換成對象類型數據。
int temp = 10; //基本數據類型
//JDK1.5之前的寫法(沒有自動裝箱的功能):
//Integer b = new Integer(temp);
Integer b = temp; //把a存儲的值賦予給b變量。
//自動拆箱: 把引用類型的數據轉換成基本類型的數據
Integer c = new Integer(13);
//JDK1.5之前的寫法(沒有自動拆箱的功能):
//int d = c.intValue();
int d = c;
System.out.println(d);
//引用的數據類型
Integer e = 127;
Integer f = 127;
System.out.println("同一個對象嗎?"+(e==f));
// 查看Integer源碼中的IntegerCache:
// Integer類內部維護了緩衝數組,該緩衝數組存儲的-128~127 這些數據在一個數組中。
// 如果你獲取的數據是落入到這個範圍之內的,那麼就直接從該緩衝區中獲取對應的數據。
Integer e2 = 128;
Integer f2 = 128;
System.out.println("同一個對象嗎?"+(e2==f2));
}
}