熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

java高級技術總結 2

2022-06-13   來源: Java核心技術 
    ArrayList集合與HashSet的區別
   
    Arraylist : add方法直接把所以元素加進來不會判斷是否存在
   
    HashSet:在調用add方法之前會先判斷該元素是否存在
   
    HashCode()方法用於判斷兩個元素是否相等在元素相應的類中定義相應的hashcode值是由元素中相關成員變量算出                      來的
   
    同時還會覆蓋equals()方法
   
    框架
   
    在某些東西還沒寫出來之前就能對他們進行調用相當於一個基本架構利用的是反射的原理
   
    如classforName(配置信息newInstance()   這樣我們只要在配置文件裡面將要引用的類名寫進去就行了同時可以隨時更改
   
    用類加載器的方式管理資源和配置文件
   
    當程序給普通用戶時加載配置文件回事一個問題因為它的路徑不好找此時有兩種方法解決
   
    getRealPath()方法通過運算獲得配置文件的路徑不是硬編碼(普通方法)
   
    類加載器類名classgetClassLoader()getResourceAsStream(com/baidu/exam/configureproperties
   
    也可以簡化為類名classgetResourceAsStream(configureproperties
   
    配置文件與java類放在同一個包中
   
    javabean與內省
   
    是一種類他裡面有get()set()方法用於外界訪問本類的私有變量
   
    屬性去掉getset之後的東西即為屬性但不一定和成員變量名相同他們是看不到的
   
    內省用於處理javabean類的Api
   
    String propertyname = x;
   
    PropertyDescriptor pd = new  PropertyDescriptor(propertynamepgetClass())
   
    Method  methodx = pdgetReadMethod()
   
    Object retval = methodxinvoke(p)
   
    eclipse小技巧方法的重構
   
    將某段很長的代碼放入一個函數中但只需要將他們選擇出來再右鍵選擇重構
   
    InspectorBeanInfo用於處理屬性的類
   
    BeanUtils工具包
   
    注解
   
    注解相當於一種標記在程序中加了注解就等於為程序打上了某種標記沒加則等於沒有某種標記以後javac編譯器開發工具和其他程序可以用反射來了解你的類及各種元素上有無何種標記看你有什麼標記就去干相應的事標記可以加在包字段方法方法的參數以及局部變量上
   
    為注解增加屬性
   
    什麼是注解的屬性注解是一種標識注解的屬性是注解標識的內容
   
    加了屬性的標記效果為@MyAnnotation(color=red
   
    定義基本類型的屬性和應用屬性
   
    在注解類中增加String color()
   
    @MyAnnotation(color=red
   
    用反射方式獲得注解對應的實例對象後再通過該對象調用屬性對應的方法
   
    MyAnnotation a = (MyAnnotation)AnnotationTestclassgetAnnotation(MyAnnotationclass)
   
    Systemoutprintln(lor())
   
    可以認為上面這個@MyAnnotation是MyAnnotaion類的一個實例對象
   
    為屬性指定缺省值
   
    String color() default yellow;
   
    value屬性String value() default zxx;
   
    如果注解中有一個名稱為value的屬性且你只想設置value屬性(即其他屬性都采用默認值或者你只有一個value屬性)那麼可以省略value=部分例如@MyAnnotation(lhm
   
    注意 :枚舉和注解都是特殊的類不能用new 創建它們的實例對象創建枚舉的實例對象就是在其中增加元素在程序中如何創建出一個注解的實例對象啊?用@注解名
   
    @Retention(RetentionPolicyRUNTIME)
   
    @Target({ElementTypeMETHODElementTypeTYPE})
   
    public @interface ItcastAnnotation {
   
    String color() default blue;
   
    String value()
   
    int[] arrayAttr() default {};
   
    EnumTestTrafficLamp lamp() default EnumTestTrafficLampRED;
   
    MetaAnnotation annotationAttr() default @MetaAnnotation(lhm
   
    }
    [nextpage]
泛型
   
    泛型是提供給javac編譯器使用的可以限定集合中的輸入類型讓編譯器擋住源程序中的非法輸入編譯器編譯帶類型說明的集合時會去除掉類型信息使程序運行效率不受影響對於參數化的泛型類型getClass()方法的返回值和原始類型完全一樣由於編譯生成的字節碼會去掉泛型的類型信息只要能跳過編譯器就可以往某個泛型集合中加入其它類型的數據例如用反射得到集合再調用其add方法即可
   
    參數化類型與原始類型的兼容
   
    參數化類型不考慮類型參數的繼承關系
   
    泛型通配符
   
    使用?通配符可以引用其他各種參數化的類型?通配符定義的變量主要用作引用可以調用與參數化無關的方法不能調用與參數化有關的方法
   
    限定通配符的上邊界
   
    正確Vector<? extends Number> x = new Vector<Integer>()
   
    錯誤Vector<? extends Number> x = new Vector<String>()
   
    定通配符的下邊界
   
    正確Vector<? super Integer> x = new Vector<Number>()
   
    錯誤Vector<? super Integer> x = new Vector<Byte>()
From:http://tw.wingwit.com/Article/program/Java/hx/201311/27158.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.