JAVA SE 雜論

概念:
    1.構造函數    //方法與類名相同,無返回值
        class Demo{
            public Demo(){
            }
        }
        在 new 此類對象時,執行構造函數
    2.構造函數塊    //無方法名,返回值,先於構造函數運行
        又稱代碼塊,每次new 運行一次
        class Demo{
            public{
            }
        }
        class Demo{
            {}
        }
    3.重載    //方法與類名相同,無返回值,參數不一樣的方法
        class Demo{
            public Demo(){
            }
            public Demo(int i){
            }
            public Demo(String str){
            }
        }
    4.遞歸        //函數本身調用本身
    5.外部類名.內部類名 名字 = new 外部類名().new 內部類名);        //其餘類引用內部類名時
    6.哈希值        //內存地址
    7.哈希表
        //存放內存地址的表,以地址的值爲順序,當存放地相同但對象不一樣時,在此地址下開一空間存放相同地的對象
    8.靜態     //會在上一級運行時直接在物理內存中使用一個位置
        8.1.靜態代碼塊,在虛擬機運行時就會加載,並且只會加一次
            class Demo{
                static{
                }
            }
        8.2.靜態方法
            在外部調用靜態方法時,可使用"類名.方法名"的方式,也可使用"對象名.方法名"的方式。
            而實例方法只有"對象名.方法名"。也就是說,調用靜態方法能夠無需建立對象。
            靜態方法在訪問本類的成員時,只容許訪問靜態成員(即靜態成員變量和靜態方法),
            而不容許訪問實例成員變量和實例方法;實例方法則無此限制。
            public static void demo{}
    9.沒有提供構造方法
        9.1.說明不能 new 對象,能想到該類中方法都是靜態的
        9.2.發現該類中還有非靜態方法
        9.3.說明該類確定會提供方法獲取本類對象,並且該方法是靜態的,並返回類型是本類型
    10字段
        類名.方法         //字段的使用
        字段內的方法都爲靜態
    11.文件
        沒法訪問隱藏文件
        刪除時直接刪除,不通過回收站
    12.反射
        經過一個類名來探察這個類裏面的信息,
            好比說類的屬性名,屬性名的修飾符,方法名,方法返回值,方法修飾符等等,
            反正除了方法體得不到,其餘均可以用反射獲得;
            反射還能夠生成類的實例,經過這個實例定義屬性,調用方法,
            特別是能調用私有的屬性和私有的方法。

符號
    1.(a==b)?a:b; 等同於 if(a==b){a}else{b}
    2.&&    //與
    3.||    //或
    4.!    //非
    5.>>    //將數字轉爲二進制右移?位
            不帶符號
            int的寬度爲32位
            8:
            0000 0000 0000 0000 0000 0000 0000 1000
            8>>1
            0000 0000 0000 0000 0000 0000 0000 0100 十進制爲4
            i >> n :     i / (2^n)
        >>>    //將數字轉爲二進制右移?位
            帶符號右移
            -7:
            1111 1111 1111 1111 1111 1111 1111 1001
            -7>>>1:
            0111 1111 1111 1111 1111 1111 1111 1100 十進制爲214748364
    6.<<    //將數字轉爲二進制左移
            i<<n:   i * (2^n)
        <<<    //帶符號左移

描述
    abstract      //抽象   //無具體描述
    static         //靜態   //函數一運行就存在於內存中
    instanceof     //判斷類型      if(i instanceof int) //i類型是否爲int
    implements      //實現,鏈接接口,(某函數實現接口)
    interface    //接口,描述類,裏面方法全是抽象,開放。變量全是開放,靜態,常量
    protected    //訪問範圍是子類
    private        //只能是本類
    public        //能夠是子類,同一個包中均可以訪問。

泛型
        //JDK1.5版本之後出現新特性,用於解決安全問題,是一個安全機制
        在集合中比較常見
        ArryList<String> al = new ArrayList<String>();
    1.<類型>    //指定輸入元素類型
        <String>    //指定輸入元素String類型
        <?>    //不明確具體類型,佔位符與<T>效果相似
    2.好處
        將運行時期出現的問題ClassCastException,轉移到編譯時期,方便與程序員解決問題
        避免強制轉換麻煩
    3.泛型類
        何時定義泛型類?
        當類中要操做的引用數據類型不肯定的時候,由引用方來定義類型
        早期定義的Object來完成擴展
        如今定義泛型類來完成擴展
        class Utiles<QQ>{        //QQ爲自定義泛型
            private QQ q;        
            public void setObject(QQ q){
                this.q = q;
            }
            public QQ getObject(){
                return q;
            }
        }
        Utils<Student> stu = new Utils<Student>();    //自定義學生類型
            但明確類型後下面方法只能是這個類型,不然只能在新建一個類
    4.泛型方法
            自由度比泛型方法高
            class Demo{
                public <T> void show(T t){
                }
                public <Q> void print(Q q){
                }
            }
            Demo d = new Demo();
            d.show("haha");
            d.show(new Integer(4));
            d.print("Heihei");
        靜態方法泛型
            靜態方法泛型不能夠訪問類上定義的泛型
            若是靜態方法操做的應用數據類型不肯定,能夠將泛型定義在方法上
            class Demo<T>{
                public static <w> void show(T t){
                }
            }
    5.泛型的限定
        ? 通配符,也能夠理解爲佔位符
        ? extends E: 能夠接收E類型或者E的子類型,上限
        ? super E: 能夠接收E類型或者E的父類型,下限
        
        public static void printColl(ArrayList<? extends E> all){}
        public static void printColl(ArrayList<? super E> all){}java

 


異常
    java.lang.Throwable
            java.lang.Object
              java.lang.Throwable
            異常所在類,包
        Exception    //異常
            RuntimeException    //執行異常
                ClassCastExcepion    //類型轉換異常
            CheckedException    //檢查異常
                除了runtimeException之外的異常,
            IOException         //I/O 異常
                FileNotFoundException
            方法
                printStackTrace        //輸出異常信息
                    try{}
                    catch( Exception e ){
                        e.printStackTrace(System.out)}       //在控制檯輸出錯誤信息
                        e.printStackTrace(new printStream("demo.txt"));} //將錯誤信息傳入demo.txt文件內  
    將編譯時異常轉爲運行時異常
        throw new RuntimeException(e)
    處理異常
        try{}
            catch( Exception e ){}
    拋出異常
        throw new RuntimeException("***")        //拋異常程序員

 

特殊
    ...      //可變參數
        public void demo(int... arr){       //使用方式,int 能夠爲任意類型
            System.out.println(arr.length);        //返回數組長度
        }        
        例如:
        demo(1,2,3,4);     demo();
        demo(12345,123,42,13);  //能夠傳入任意長度的 int 類型值
        不能夠:      public void demo(int... arr, String str){}   //error
        能夠:        public void demo(String str, int... arr){}

數組

測試
    junit
        @Before 在方法上添加,每次運行@Test 先運行@Before
        @BeforeClass 在方法上添加,每次運行Junit 先運行@BeforeClass
        @Test 在方法上添加,成爲測試方法
        @After 在方法上添加,每次運行@Test 後運行@After
        @AfterClass 在方法上添加,每次運行 junit 後運行@AfterClass安全

相關文章
相關標籤/搜索