天天看點

2、java新特性

可變參數,functionName(type… x)

1、如下

public class hello{
 public static void main(String args[]){
           fun(1);
           fun(3,6);
 }
 
 static void fun(int... args){
           for(int i=0; i<args.length; i++){
                    System.out.println(args[i]);
           }
 }
}      

面向對象特性

1、  繼承、封裝、多态,繼承實作了重用、封裝保證了安全、多态提供了靈活性

2、  GC,garbage collection,垃圾回收器,會自動掃描缺少指針指向的對象(堆記憶體空間),并将其及時釋放出來

3、  匿名對象,直接用new而沒有指針引用的對象,使用完後将直接被銷毀,new person().say(),此處的new person()就是匿名對象

特殊類型String

1、  String是類,不是基本資料類型,基本資料類型可以使用==,!=等來對值進行比較,而類類型比較的是引用位址

2、  String x=”abc”; String y=”abc”; 編譯時abc将存儲在常量池,x、y都引用常量池對象,是以x==y為true

3、  String x=”abc”; String y=new String(“abc”); 此時x的abc存儲在常量池,y的abc存儲在堆存儲區,是以x==y為false

4、  String x=new String(“abc”); String y=new String(“abc”); 此時x、y分别存儲在堆空間的兩個位置,是以x==y為false

5、  String x=”a”; String y=”b”;String z = x+y; 此時z==”ab”為false,因為z的值在編譯時是不知道的,它在運作時才知道,此時它要通過new String(“ab”)來建立對象,而”ab”是存儲在常量池中,是以為false

6、  String x=”a”; String y=”b”;String z = “a”+”b”; 此時z==”ab”為ture,因為編譯時,z的值就确定了,z指向的是常量存儲區的”ab”,是以為ture

7、  要比較類類型中的值與基本資料類型的值,必須使用String.equals(“xxx”)

8、  String内容一旦聲明不可修改,如果要修改則使用StringBuffer

9、  是以能否比較主要看,編譯時是否确定存儲空間,編譯時确定的為常量,使用相同的空間,運作時确定的為堆空間,使用堆中不同的空間

static靜态聲明靜态代碼塊

1、  static聲明代碼塊優先于主方法執行,如下

public class hello{
 public static void main(String args[]){
           System.out.println("main coderunning");
 }
 
 static{
           System.out.println("static coderunning");
 }
}      
class person{
privateperson(){}
}
 
publicclass hello{
 public static void main(String args[]){
            person p = new person();
 }
}      

繼續閱讀