java高階程式設計之深入
首先從基礎開始,
靜態方法的匯入:
包名.類名.靜態屬性|靜態方法|;
這種方法比較簡單,有利於減少程式碼,但是必須記住每個包裡的類的方法和屬性;這是前提,如果不能記清的話,也只能按以前的方法來,也沒有太大的區別;
舉例:
import java.lang.System,out;//寫完之後,底下的輸出就可以直接用out可以了;
pubic static void mian(String args[]){
out.println(“hello world”);
}
還可以用例如:import java.lang.Math.*;全靜態屬性;這些屬於簡化程式碼的,恩恩,看大家個人自己的條件了;
自動拆箱或裝箱:
自動裝箱:把一個基本資料型別直接賦值到對應的包裝類的變數,或者賦給Object的變數中;
自動拆箱:把包裡的物件直接賦給對應的相關基本資料型別變數中;
舉例:
package cn.itcast; public class AutoBox { public static void main(String[] args) { /*jdk1.4時代*********************************************************************/ //基本型別 int num=8; System.out.println(" num "+num); //基本型別轉化為包裝型別 Integer num1=Integer.valueOf(num); System.out.println(" num1 "+num1); //包裝型別轉化為基本型別 int num2=num1.intValue(); System.out.println(" num2 "+num2); /*jdk1.5 時代*********************************************************************/ int m=9; System.out.println(" m "+m); //自動裝箱 Integer n=m; System.out.println(" n "+n); //自動拆箱 int k=n; System.out.println(" k "+k); } }
典型例子:
List list= new ArrayList();
//add(int index, E element)將指定的元素插入此列表中的指定位置。
list.add(1);
list.add(2);
list.add(3);
Iterator it=list.iterator();//對 collection 進行迭代的迭代器
while(it.hasNext()){
int num=(Iterator)it.next();
System.out.println(num);
}
//這樣一個簡單的自動拆箱和裝箱就應用上了;
加強for迴圈:
引入增強for迴圈的原因:在JDK5以前的版本中,遍歷陣列或集合中的元素, 需先獲得陣列的長度或集合的迭代器,比較麻煩!
因此JDK5中定義了一種新的語法——增強for迴圈,以簡化此類操作。增強for迴圈只能用在陣列、或實現Iterator介面的集合類上
使用 foreach 迴圈遍歷陣列和集合元素時, 無須獲得陣列和集合長度, 無須根據索引來訪問陣列元素和集合元素, foreach 迴圈自動遍歷陣列和集合的每個元素
語法格式:
for ( type 變數名:集合變數名 ) { … }
for(type varName : array | collection){
//varName 自動迭代訪問每一個元素
}
public static void main(String[] args) {
/***************************************************************************************************/
//遍歷list 使用泛型
List<String> list=new ArrayList();
list.add("name1");
list.add("name2");
list.add("name3");
for(String str:list){
System.out.println("str "+str);
}
/***************************************************************************************************/
//遍歷list沒有使用泛型
List list2=new ArrayList();
list2.add("name1");
list2.add("name2");
list2.add("name3");
for(Object str:list2){
System.out.println("str "+str);
}
/***************************************************************************************************/
//遍歷List List中放置的javaBean 首先建好一個Person類,加入set,get方法;
List<Person> list3=new ArrayList();
list3.add(new Person("張1",45));
list3.add(new Person("張2",46));
list3.add(new Person("張3",47));
for(Person person:list3){
System.out.println(person.getName()+" "+person.getAge());
}
/***************************************************************************************************/
//遍歷陣列中
String[] array1={"name1","name2","name3"};
for(String str:array1){
System.out.println("str "+str);
}
/***************************************************************************************************/
//遍歷遍歷陣列 陣列中放置的javaBean
Person[] persons=new Person[3];
persons[0]=new Person("張1",45);
persons[1]=new Person("張2",46);
persons[2]=new Person("張3",47);
for(Person person:persons){
System.out.println(person.getName()+" "+person.getAge());
}
}
}
定義一個方法求陣列中元素的和
可變引數:
從 JDK 1.5 開始, Java 允許定義形參長度可變的引數,從而允許為方法指定數量不確定的形參
若在定義方法時, 在最後一個形參的型別後增加三點(…, ...位於變數型別和變數名之間,前後有無空格都可以)則表明該形參可以接受多個引數值, 多個引數值被當成陣列傳入
可變形參只能處於形參列表的最後, 所以一個方法最多隻能有一個長度可變的形參
呼叫包含一個可變形參的方法時, 可以為該形參傳入多個引數或一個數組
呼叫可變引數的方法時, 編譯器為該可變引數隱含建立一個數組, 在方法體中以陣列的形式訪問可變引數
package cn.itcast;
public class VarParameter {
public static void main(String[] args) {
//求和 一個引數
Integer array[] ={1,2,3,4};
System.out.println(add(array));
//求和 一個引數 多個引數
System.out.println(add(7,array));
}
public static int add(int m,Integer ... array){
int sum=0;
if(array!=null&&array.length>0){
for(int i=0;i<array.length;i++){
sum=sum+array[i];
}
}
return sum+m;
}
public static int add(Integer ... array){
int sum=0;
if(array!=null&&array.length>0){
for(int i=0;i<array.length;i++){
sum=sum+array[i];
}
}
return sum;
}
}
//可變引數事例1
可變引數事例2
//可變引數方法示例程式碼3
可變引數方法示例程式碼4
測試JDK中具有可變引數的類Arrays.asList()方法。分別傳多個參、傳陣列的情況
注意:傳入基本資料型別陣列的問題。