<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    2013年1月13日

    JAVA語(yǔ)法復(fù)習(xí)

    工作原理
    1)編寫.java文本文件;
    2)通過(guò)編譯器編譯為.class二進(jìn)制文件;
    3)使用JAVA虛擬機(jī)執(zhí)行.class文件,不同平臺(tái)對(duì)應(yīng)不同虛擬機(jī);
    System.exit:main方法結(jié)束不等于整個(gè)程序的真正結(jié)束,可能還有線程在運(yùn)行著,調(diào)用System.exit()才達(dá)到程序的真正結(jié)束。


    面向?qū)ο笤?/strong>
    單繼承,多接口實(shí)現(xiàn);一般,繼承主要用在一個(gè)系列的對(duì)象抽象;接口主要針對(duì)功能的抽象;
    JAVA語(yǔ)言中,并非所有的變量都是對(duì)象,基本的數(shù)值類型(char,short,int,long,float,double,boolean)除外,可能是為了運(yùn)行速度,編譯器沒(méi)有將這些類型編譯為對(duì)象;
    對(duì)象Object是所有對(duì)象的祖宗;
    對(duì)象Class保存一個(gè)對(duì)象的類型信息,也可以是基本的數(shù)值類型;


    數(shù)據(jù)類型
    int         4B
    short       2B
    long        8B
    byte        1B
    float       4B (后綴f,F)
    double      8B (后綴d,D)
    char        2B
    boolean     1B
    前綴:
    0x:十六進(jìn)制 (指數(shù)用p,十進(jìn)制用e)
    0:八進(jìn)制


    變量命名
    字母(a-zA-Z)、下劃線(_)開(kāi)頭,后續(xù)字母可以是字母、數(shù)字、下劃線,不能是關(guān)鍵字或者保留字。


    關(guān)鍵字
    abstract, assert, boolean, break, byte, case, catch, char, class, const, continue, default, do, double, else, extends, final, finally, float, for, goto, if,

    implements, import, instanceof, int, interface, long, native, new, null, package, private, protected, public, return, short, static, strictfp, super, switch,

    synchronized, this, throw, throws, transient, try, void, volatile, while
    其中,const和goto是保留關(guān)鍵字。


    注釋
    //行注釋


    運(yùn)算符
    算術(shù)運(yùn)算:+、-、*、/、%;++、--、+=、-=;
    關(guān)系運(yùn)算:>、<、==、>=、<=、!=、!、&&、||;
    位運(yùn)算:&、|、^、~、>>、>>>、<<、<<<;


    流程控制
    if ... else ...
    (...) ? ... : ...;
    switch  只能接受byte、short、char、int四種,不能接受long類型。
    for
    for each
    while
    do...while


    參數(shù)傳遞
    基本數(shù)據(jù)類型按照值傳遞,對(duì)象按照引用傳遞;String對(duì)象沒(méi)有修改該對(duì)象的方法,如果要通過(guò)引用修改可以使用StringBuilder或StringBuffer;


    面向?qū)ο?br />類加載:static字段、一般字段、構(gòu)造函數(shù)字段;(注意:static成員是類加載器加載的,是線程安全的;)
    繼承;
    接口;
    內(nèi)部類、匿名內(nèi)部類用途:使用一個(gè)對(duì)象去做任務(wù)處理,但是該對(duì)象以后也不需要用到;這樣在一個(gè)類A內(nèi)部定義一個(gè)內(nèi)部類B,這樣類B可以訪問(wèn)類A的數(shù)據(jù),外界并不知道有類B的存在;
    異常繼承時(shí)候,父類與子類的異常聲明可以不同,但是子類的異常必須在父類的異常范圍之內(nèi),也就是父類的異常必須可以引用子類的異常;
    方法繼承時(shí)候,如果需要覆蓋,方法名稱、形參類型、返回類型必須相同;


    訪問(wèn)修飾符
               當(dāng)前對(duì)象    同一個(gè)包中子類/非子類     其它包中子類/非子類
    private    yes         no/no                     no/no
    protected  yes         yes/yes                   yes/no
    默認(rèn)       yes         yes/yes                   no/no
    public     yes         yes/yes                   yes/yes


    對(duì)象比較
    使用==比較的是引用;使用equals默認(rèn)比較的也是對(duì)象的引用,但是,經(jīng)過(guò)重載的equals可以按照我們需要去比較特點(diǎn)字段;
    String類重載了equals與hashCode,而StringBuilder與StringBuffer沒(méi)有經(jīng)過(guò)重載,因此使用equals比較StringBuilder與StringBuffer實(shí)際比較的是引用;
    注意:重載equals必須同時(shí)重載hashCode,這兩個(gè)方法必須保持同步,即equals與hashCode同真假;


    對(duì)象序列化
    繼承接口Serializable即可以實(shí)現(xiàn)對(duì)象序列化,默認(rèn)是序列化與反序列化的結(jié)果是相同的(引用被序列化后再反序列化回來(lái)還是跟之前相同的);
    一般序列化后,要定義字段serialVersionUID,eclipse自動(dòng)可以生成;作用是保持序列化與反序列化時(shí)候的版本兼容,如果不定義該字段,當(dāng)出現(xiàn)反序列化時(shí)候內(nèi)容不同時(shí),可能會(huì)報(bào)錯(cuò);
    transient關(guān)鍵字可以使該字段不進(jìn)行序列化;


    對(duì)象克隆
    繼承接口Cloneable,然后覆蓋Object類的clone()方法進(jìn)行克隆的聲明;默認(rèn)是淺拷貝,若字段是引用類型,則需要手動(dòng)在clone()方法里面人工進(jìn)行new一個(gè)對(duì)象;
    數(shù)組默認(rèn)支持克隆,但是數(shù)組的數(shù)組(二維數(shù)組以上)不支持直接使用克??;


    異常
    異常的結(jié)構(gòu)
    Throwable
            |
        Error  Exception
                                |
                   IOException等  RuntimeException

    異常的分類
    1)未檢查異常
    RuntimeException和Error及其子類。
    這類異常不需要顯式捕捉,一旦發(fā)生,它自動(dòng)會(huì)拋出來(lái),然后程序終止;當(dāng)然,你也可以進(jìn)行捕捉,這樣程序就可以繼續(xù)運(yùn)行;
    2)已檢查異常
    Exception及其子類
    由于Exception派生的子類及Exception類多是已檢查異常,所以,Throwable類也屬于已檢查異常;這類異常必須進(jìn)行捕捉,否則編譯不能通過(guò)。

    聲明已檢查異常
    例:public FileInputStream(String name) throws FileNotFoundException

    拋出已檢查異常
    例:throw new Exception("message");

    捕獲異常
    如果不捕獲的話,程序就會(huì)終止。有些時(shí)候,出現(xiàn)了異常,但是,我們不需要終止程序,那么就需要捕獲異常。
    try {
        // 可能拋出異常的代碼
    } catch(異常類型 e) {
        // e.printStackTrace(); // 打印異常堆棧
        // 處理
    }
    // catch語(yǔ)句是從上到下執(zhí)行的,具體的異常應(yīng)該放在上面;

    傳遞異常
    將異常傳遞下去,這樣才能不會(huì)被覆蓋;
    try {
        // access the database
    } catch(SQLException e) {
        throw new ServletException("database error.", e);
    }

    finally子句
    finally子句是一定會(huì)執(zhí)行的,該子句主要用于回收一些資源。


    泛型(屬于底層代碼,不常用)
    JAVA虛擬機(jī)中沒(méi)有泛型,只有普通類與方法,使用泛型主要是為了方便類型轉(zhuǎn)換;還有泛型可以限定對(duì)象引用的使用;所有,泛型了解使用即可,不需要深究;
    泛型包含兩種:泛型類、泛型方法;泛型類主要用于對(duì)某個(gè)不確定類型的字段進(jìn)行操作;泛型方法是指static方法中使用了泛型參數(shù);

    泛型的翻譯
    翻譯泛型表達(dá)式
    A a = new A();
    a.setT("generic programming.");
    String str = a.getT(); // 翻譯為:String str = (String) a.getT();
    翻譯泛型方法
    public static T getMiddle(T[] a) // 翻譯為:public static Object getMiddle(Object[] objects)
    public static   T getMiddle(T[] a) // 翻譯為:public static Comparable getMiddle(Comparable[] a)
    // 默認(rèn)是轉(zhuǎn)化為左邊第一個(gè)類型,所有盡量將范圍大的類型放到前面;
    復(fù)雜一點(diǎn)的橋方法:
    class A {
     
     private T t;
     
     public void setT(T t) {
      this.t = t;
     }
     public T getT() {
      return t;
     }
    }
    class B extends A {

     

     public void setT(String t) {
      super.setT(t);
     }
    }

    // 翻譯后:
    class A { // 父類翻譯后肯定是Object
        private Object t;
      
        public void setT(Object object) {
     t = object;
        }
      
        public Object getT() {
     return t;
        }
    }
    class B extends A {
        public void setT(String string) { // 子類肯定它的父類是String
     super.setT(string);
        }
      
        public volatile void setT(Object object) { // 橋方法,外界還是認(rèn)為是Object
     setT((String) object);
        }
    }
    // 調(diào)用:
    A a = new B();
    a.setT("generic programming."); // 翻譯為:b.setT((Object) "generic programming.");

    不能使用泛型的情況
    不能使用泛型繼承異常。
    例如:public class Problem extends Exception {...}。
    不能在catch(...)中,使用catch(T t)。
    異常聲明中可以使用泛型。
    例如:public static void doWork(T t) throws T {...}。

    不能用泛型數(shù)組
    A[] arr = new A[5]; // 擦除后為:A[] arr = new A[5];

    不能將泛型類型實(shí)例化。
    class A {
     a = new T(); // 擦除后是a = new Object();我們本意卻不是這個(gè)。
     ...
    }

    類的靜態(tài)字段不能使用泛型;

    當(dāng)泛型類型擦除后,創(chuàng)建條件不能產(chǎn)出沖突。
    例如:public boolean equals(T t) {...}

     

    類型限定
    子類型限定<? extends Employee>,可以讀,不能寫。
    Pair<? extends Employee> pair1 = null; // ?是Employee的子類,子類可能很多,不確定有幾個(gè)。
    Pair<Manager> pair2 = new Pair<Manager>();
    pair1 = pair2;
    pair1.getFirst(); // 操作成功,因?yàn)槭?#8220;(? extends Employee) pair1.getFirst();”,
      // 相當(dāng)于是“(Employee) pair1.getFirst();”。
    pair1.setFirst(new Manager()); // 編譯通不過(guò),因?yàn)槭?#8220;pair1.setFirst(? extends Employee);”
      // 相當(dāng)于是“pair1.setFirst(?);” 不確定的類型。

    超類型限定<? super Employee>,可以寫,不能讀;剛好和上面相反。

    無(wú)限定通配符<?>,可以讀,不能寫;讀的時(shí)候直接轉(zhuǎn)型為Object。


    反射(屬于底層代碼,不常用)
    對(duì)象產(chǎn)生于類,而在JAVA虛擬機(jī)里面還保存著對(duì)類的描述,這個(gè)描述是一個(gè)Class的對(duì)象;類信息被加載到虛擬機(jī),就會(huì)產(chǎn)生一個(gè)Class對(duì)象,用以描述這個(gè)類的信息;
    通過(guò)這個(gè)Class對(duì)象可以解析類的結(jié)構(gòu),這個(gè)Class對(duì)象可以從類信息來(lái)(例如:Employee.class),也可以從對(duì)象來(lái)(例如:emp.getClass());
    通過(guò)這個(gè)Class對(duì)象可以引用具體對(duì)象的字段、方法、構(gòu)造器,可以完全操作一個(gè)對(duì)象;
    .class: 應(yīng)該是一個(gè)指向類的Class對(duì)象的指針。
    forName(): 會(huì)調(diào)用當(dāng)前線程所在的ClassLoader來(lái)裝載一個(gè)類的Class實(shí)例。
    注意:基礎(chǔ)類型也可以這樣使用“int.class”;


    類加載器(屬于底層代碼,不常用)
    java中的類是動(dòng)態(tài)加載的,即引用到了才會(huì)被加載;
    // 三種加載方式示例
    class A{}
    class B{}
    class C{}
    public class Loader{
        public static void main(String[] args) throws Exception{
           Class aa=A.class;
           Class bb=Class.forName("B");
           Class cc=ClassLoader.getSystemClassLoader().loadClass("C");
        }
    }

    系統(tǒng)內(nèi)默認(rèn)的類加載器
    Bootstrap ClassLoader (加載rt.jar)
     |
     ExtClassLoader (加載jre/lib/ext/)
      |
      AppClassLoader (加載claspath)

    //ClassLoader實(shí)現(xiàn):查找類,從父加載器向上遍歷,找不到就調(diào)用當(dāng)前自定義的加載器;
    protected ClassLoader() {
     SecurityManager security = System.getSecurityManager();
     if (security != null) {
         security.checkCreateClassLoader();
     }
     // 自己實(shí)現(xiàn)的類加載器,默認(rèn)是用系統(tǒng)類加載器的。
     this.parent = getSystemClassLoader();
     initialized = true;
    }

    protected ClassLoader(ClassLoader parent) {
     SecurityManager security = System.getSecurityManager();
     if (security != null) {
         security.checkCreateClassLoader();
     }
     // 傳入一個(gè)父加載器
     // 如果parent=null,那么啟動(dòng)類加載器就是父親。
     this.parent = parent;
     initialized = true;
    }
     
    // 雙親委派加載的實(shí)現(xiàn)
    public Class<?> loadClass(String name) throws ClassNotFoundException {
     return loadClass(name, false);
    }

    protected synchronized Class<?> loadClass(String name, boolean resolve)
     throws ClassNotFoundException {
     // 先檢查該類是否已經(jīng)被裝載過(guò)
     Class c = findLoadedClass(name);
     if (c == null) {
         try {
       // 向父加載器委托(加載不到拋ClassNotFoundException)
       if (parent != null) {
           c = parent.loadClass(name, false);
          
          // 最終到啟動(dòng)類加載器(加載不到拋ClassNotFoundException)
       } else {
           c = findBootstrapClass0(name);
       }
         } catch (ClassNotFoundException e) {
             // 父加載器加載不到,調(diào)用我們自己設(shè)定的findClass(name)進(jìn)行查找
             // 對(duì)于API提供的ClassLoader,findClass()是直接拋ClassNotFoundException
             c = findClass(name);
         }
     }
     // 是否要解析(解析符號(hào)引用為直接地址引用)
     // 一般我們用false。
     // 我的理解是使用false的話,程序啟動(dòng)速度應(yīng)該會(huì)有一點(diǎn)點(diǎn)提升,但是第一次執(zhí)行的時(shí)候應(yīng)該會(huì)慢一點(diǎn)點(diǎn)。
     // 當(dāng)然,這個(gè)我們?nèi)耸歉杏X(jué)不出來(lái)的。
     if (resolve) {
         resolveClass(c);
     }
     return c;
    }



    =====
    from
    http://blog.sina.com.cn/s/blog_667ac0360102e8ii.html

    posted @ 2013-01-13 09:29 DolveVita 閱讀(135) | 評(píng)論 (0)編輯 收藏

    Java的SystemTray類的使用方法

    Java的SystemTray類的使用方法

    JDK1.6版增加了java.awt.SystemTray類,該類表示桌面的系統(tǒng)托盤,這對(duì)大多數(shù)系統(tǒng)托盤應(yīng)用已經(jīng)足夠。如果這個(gè)類還是不能滿足您的需求,可以試一試JDIC (JDesktop Integration Components)。
    JDK1.6的API文檔,給出了這個(gè)類的用法。有人愿意把創(chuàng)建系統(tǒng)托盤的代碼直接放在主應(yīng)用代碼中,筆者更傾向于把創(chuàng)建系統(tǒng)托盤的責(zé)任分派給一個(gè)單獨(dú)的類,這符合類的設(shè)計(jì)原則。在主應(yīng)用中直接調(diào)用該類的工廠方法就可以了,結(jié)構(gòu)清晰,便于維護(hù),改動(dòng)或增加系統(tǒng)托盤的功能,不必改動(dòng)主應(yīng)用代碼。
    創(chuàng)建系統(tǒng)托盤的類(TrayFactory.java)的代碼如下:

    //package com.jnmc.liang.systemtray;

    import java.awt.*;
    import java.awt.event.*;

    public class TrayFactory {
            private TrayIcon trayIcon = null;
            private Component comp = null;
            private String trayImageName = null;
            private String tooltip = null;
            
            private TrayFactory(Component comp, String trayImageName, String tooltip) {
                    this.comp = comp;
                    this.trayImageName = trayImageName;
                    this.tooltip = tooltip;
                    
                    init();
            }
            
            private void init() {
                    if (SystemTray.isSupported()) {
                            SystemTray tray = SystemTray.getSystemTray();
                            Image image  = Toolkit.getDefaultToolkit().getImage(trayImageName);
                            PopupMenu popupMenu = new PopupMenu();
                            MenuItem restoreItem = new MenuItem("還原"); 
                            MenuItem exitItem  = new MenuItem("退出");
                            
                            restoreItem.addActionListener(new RestoreItemActionListener());                        
                            exitItem.addActionListener(new ExitItemActionListener());
                            
                            popupMenu.add(restoreItem);
                            popupMenu.addSeparator();
                            popupMenu.add(exitItem);
                            
                            trayIcon = new TrayIcon(image, tooltip,  popupMenu);
                            trayIcon.addMouseListener(new TrayIconMouseListener());
                            //trayIcon.addActionListener(new TrayIconActionListener());
                                                    
                            try {
                                    tray.add(trayIcon);
                            }
                            catch (AWTException e) {
                                    System.err.println(e);
                            }
                    }
                    else {
                            //..........
                    }
            }

            private class RestoreItemActionListener implements ActionListener {
                    public void actionPerformed(ActionEvent ae) {
                            comp.setVisible(true);
                    }
            }
                    
            private class ExitItemActionListener implements ActionListener {
                    public void actionPerformed(ActionEvent ae) {
                            System.exit(0);
                    }
            }
            
            private class TrayIconMouseListener extends MouseAdapter {
                    public void mousePressed(MouseEvent me) {
                            if (me.getButton() == MouseEvent.BUTTON1) {
                                    comp.setVisible(true);
                            }
                    }
            }

            public static void createTray(Component comp, String trayImageName, String tooltip) {
                    new TrayFactory(comp, trayImageName, tooltip);
            }
    }

    這個(gè)類的構(gòu)造方法是private的,因?yàn)閯?chuàng)建該類的實(shí)例不是我們的目的,另一方面是為了方便系統(tǒng)托盤的創(chuàng)建。
    構(gòu)造方法有3個(gè)參數(shù):
    第1個(gè)參數(shù)是一個(gè)Component,這就是您所要顯示或隱藏的主窗體。當(dāng)然,您把這個(gè)參數(shù)寫成Component的子類也無(wú)妨,這里是為了增加類的通用性。
    第2個(gè)參數(shù)是一個(gè)String,它是一個(gè)image文件的名稱,將來(lái)用這個(gè)文件創(chuàng)建托盤圖標(biāo)TrayIcon。
    第3個(gè)參數(shù)也是一個(gè)String,它是工具提示字符串,當(dāng)您把鼠標(biāo)放到托盤圖標(biāo)上的時(shí)候,托盤圖標(biāo)將彈出這個(gè)字符串的內(nèi)容。
    創(chuàng)建系統(tǒng)托盤的具體代碼在方法private void init()中。
    創(chuàng)建系統(tǒng)托盤的任務(wù)分為兩個(gè)步驟:
    首先創(chuàng)建托盤圖標(biāo)(TrayIcon),其次把托盤圖標(biāo)添加到系統(tǒng)托盤(SystemTray)中。
    Java.awt.TrayIcon提供3種構(gòu)造方法創(chuàng)建TrayIcon實(shí)例,這里采用第三種構(gòu)造方法:
                    trayIcon = new TrayIcon(image, tooltip,  popupMenu);
    其中,image對(duì)象由TrayFactory類構(gòu)造方法的第二個(gè)參數(shù)trayImageName創(chuàng)建:
    Image image  = Toolkit.getDefaultToolkit().getImage(trayImageName);
    tooltip就是TrayFactory類構(gòu)造方法的第三個(gè)參數(shù)
    由于不能朝前引用,PopupMenu對(duì)象popupMenu必須在創(chuàng)建trayIcon對(duì)象之前創(chuàng)建,并給popup菜單項(xiàng)添加動(dòng)作監(jiān)聽(tīng)器來(lái)處理菜單項(xiàng)的動(dòng)作(點(diǎn)擊)事件,由于處理動(dòng)作事件比較簡(jiǎn)單,這里不做具體分析,只對(duì)TrayIcon的鼠標(biāo)事件做出說(shuō)明。
    我們希望在托盤圖標(biāo)上按下鼠標(biāo)左鍵時(shí)顯示主窗體,所以必須處理托盤圖標(biāo)的鼠標(biāo)按下事件。我們用TrayIconMouseListener私有內(nèi)部類(private inner class)來(lái)處理鼠標(biāo)按下事件。不論按下鼠標(biāo)左鍵還是右鍵,都會(huì)產(chǎn)生鼠標(biāo)事件,都會(huì)引起mousePressed方法的調(diào)用,所以在這個(gè)方法中只處理左鍵而忽略右鍵,把右鍵留給popup菜單:
                            if (me.getButton() == MouseEvent.BUTTON1) {
                                    comp.setVisible(true);
                            }
    這時(shí),就可以給init()方法中創(chuàng)建的TrayIcon對(duì)象trayIcon添加鼠標(biāo)監(jiān)聽(tīng)器了:
    trayIcon.addMouseListener(new TrayIconMouseListener());
    利用TrayFactory類對(duì)主應(yīng)用創(chuàng)建系統(tǒng)托盤時(shí),只需在主應(yīng)用中調(diào)用該類的工廠方法即可:
    TrayFactory.createTray(comp, trayImageName, tooltip);
    注意這一句,一定要放在適當(dāng)?shù)奈恢茫褐鲬?yīng)用從開(kāi)始啟動(dòng)到啟動(dòng)完畢,必須有機(jī)會(huì)執(zhí)行這一句。所以建議把這一句放在主應(yīng)用的構(gòu)造方法中,或者干脆放在顯示主窗體的前一個(gè)語(yǔ)句的位置:

    //其他語(yǔ)句
                   JFrame mainFrame = new JFrame("測(cè)試主窗體");
                    mainFrame.getContentPane().add(otherVisibleObj, BorderLayout.CENTER);
                    mainFrame.pack();
                    TrayFactory.createTray(mainFrame, "images/icon.png", "這是工具提示");        
                    mainFrame.setVisible(true);
    下面給出一個(gè)完整的例子。
    主應(yīng)用(MainApp.java)源代碼如下:

    import java.awt.*;
    import javax.swing.*;

    public class MainApp {
            private static void createAndShowGUI() {
                    JFrame mainFrame = new JFrame("測(cè)試主窗體");
                    JLabel jLabel = new JLabel("這是一個(gè)標(biāo)簽", SwingConstants.CENTER);
                    jLabel.setPreferredSize(new Dimension(400, 300));
        mainFrame.getContentPane().add(jLabel, BorderLayout.CENTER);
        
                    mainFrame.pack();
                    TrayFactory.createTray(mainFrame, "images/icon.png", "你好,Java!\nHello,Java!");
                    mainFrame.setVisible(true);
            }
        
            public static void main(String[] args) {
                    String lf = UIManager.getSystemLookAndFeelClassName();
                    try {
                            UIManager.setLookAndFeel(lf);
                    } 
                    catch(Exception e) {
                    }
                    
                    javax.swing.SwingUtilities.invokeLater(new Runnable() {
                                    public void run() {
                                            createAndShowGUI();
                                    }
        });
               
    }

    為簡(jiǎn)單起見(jiàn),可以把TrayFactory.java和MainApp.java放在同一目錄下,把icon.png文件放在當(dāng)前目錄的images目錄下。

    ===
    from
    http://blog.sina.com.cn/s/blog_a5f093b401018ss1.html

    posted @ 2013-01-13 09:27 DolveVita 閱讀(267) | 評(píng)論 (0)編輯 收藏

    <2013年1月>
    303112345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    導(dǎo)航

    統(tǒng)計(jì)

    • 隨筆 - 2
    • 文章 - 3
    • 評(píng)論 - 0
    • 引用 - 0

    常用鏈接

    留言簿

    隨筆檔案

    文章分類

    文章檔案

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 免费观看四虎精品成人| 免费H网站在线观看的| 亚洲日韩中文字幕| 国产资源免费观看| 久久久国产精品福利免费| 亚洲人成网网址在线看| 亚洲成人国产精品| 亚洲一级免费视频| 一级毛片高清免费播放| 精品国产_亚洲人成在线| 亚洲婷婷五月综合狠狠爱| 亚洲一区在线免费观看| 一级毛片高清免费播放| 日韩亚洲国产高清免费视频| 免费中文字幕在线| 青青青国产在线观看免费网站| 免费的黄色网页在线免费观看| 亚洲国产精品综合久久久| 亚洲人午夜射精精品日韩| 四虎精品视频在线永久免费观看| 成人国产网站v片免费观看| 亚洲精品国产福利在线观看| 亚洲精品偷拍视频免费观看| 一二三四影视在线看片免费| 久久久精品午夜免费不卡| 深夜特黄a级毛片免费播放| 亚洲另类古典武侠| 亚洲国产精品lv| 激情综合色五月丁香六月亚洲| 国产精品无码素人福利免费| 亚洲一级免费毛片| 一区二区免费视频| 成人无码视频97免费| 激情小说亚洲图片| 日韩亚洲国产高清免费视频| 亚洲精品电影在线| 亚洲国产综合精品中文第一区| 国产成人精品亚洲精品| 国产jizzjizz视频全部免费| 野花高清在线观看免费3中文| 99视频免费观看|