日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Java笔试题

發布時間:2023/12/29 综合教程 35 生活家
生活随笔 收集整理的這篇文章主要介紹了 Java笔试题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

精選30道Java筆試題解答

都是一些非常非常基礎的題,是我最近參加各大IT公司筆試后靠記憶記下來的,經過整理獻給與我一樣參加各大IT校園招聘的同學們,純考Java基礎功底,老手們就不用進來了,免得笑話我們這些未出校門的孩紙們,但是IT公司就喜歡考這些基礎的東西,所以為了能進大公司就~~~當復習期末考吧。花了不少時間整理,在整理過程中也學到了很多東西,請大家認真對待每一題~~~

下面都是我自己的答案非官方,僅供參考,如果有疑問或錯誤請一定要提出來,大家一起進步啦~~~

1. 下面哪些是Thread類的方法()

A start() B run() C exit() D getPriority()

答案:ABD

解析:看Java API docs吧:http://docs.oracle.com/javase/7/docs/api/,exit()是System類的方法,如System.exit(0)。

2. 下面關于java.lang.Exception類的說法正確的是()

A 繼承自Throwable B Serialable CD 不記得,反正不正確

答案:A

解析:Java異常的基類為java.lang.Throwable,java.lang.Error和java.lang.Exception繼承 Throwable,RuntimeException和其它的Exception等繼承Exception,具體的RuntimeException繼承RuntimeException。

擴展:錯誤和異常的區別(Error vs Exception)

1)java.lang.Error: Throwable的子類,用于標記嚴重錯誤。合理的應用程序不應該去try/catch這種錯誤。絕大多數的錯誤都是非正常的,就根本不該出現的。
java.lang.Exception: Throwable的子類,用于指示一種合理的程序想去catch的條件。即它僅僅是一種程序運行條件,而非嚴重錯誤,并且鼓勵用戶程序去catch它。

2) Error和RuntimeException 及其子類都是未檢查的異常(unchecked exceptions),而所有其他的Exception類都是檢查了的異常(checked exceptions).
checked exceptions:通常是從一個可以恢復的程序中拋出來的,并且最好能夠從這種異常中使用程序恢復。比如FileNotFoundException, ParseException等。檢查了的異常發生在編譯階段,必須要使用try…catch(或者throws)否則編譯不通過。
unchecked exceptions:通常是如果一切正常的話本不該發生的異常,但是的確發生了。發生在運行期,具有不確定性,主要是由于程序的邏輯問題所引起的。比如ArrayIndexOutOfBoundException, ClassCastException等。從語言本身的角度講,程序不該去catch這類異常,雖然能夠從諸如RuntimeException這樣的異常中catch并恢復,但是并不鼓勵終端程序員這么做,因為完全沒要必要。因為這類錯誤本身就是bug,應該被修復,出現此類錯誤時程序就應該立即停止執行。 因此,面對Errors和unchecked exceptions應該讓程序自動終止執行,程序員不該做諸如try/catch這樣的事情,而是應該查明原因,修改代碼邏輯。

RuntimeException:RuntimeException體系包括錯誤的類型轉換、數組越界訪問和試圖訪問空指針等等。

處理RuntimeException的原則是:如果出現 RuntimeException,那么一定是程序員的錯誤。例如,可以通過檢查數組下標和數組邊界來避免數組越界訪問異常。其他(IOException等等)checked異常一般是外部錯誤,例如試圖從文件尾后讀取數據等,這并不是程序本身的錯誤,而是在應用環境中出現的外部錯誤。

3. 下面程序的運行結果是()

String str1 = "hello";
String str2 = "he" + new String("llo");
System.err.println(str1 == str2);

答案:false

解析:因為str2中的llo是新申請的內存塊,而==判斷的是對象的地址而非值,所以不一樣。如果是String str2 = str1,那么就是true了。

4.下列說法正確的有()

A. class中的constructor不可省略

B. constructor必須與class同名,但方法不能與class同名

C. constructor在一個對象被new時執行

D.一個class只能定義一個constructor

答案:C

解析:這里可能會有誤區,其實普通的類方法是可以和類名同名的,和構造方法唯一的區分就是,構造方法沒有返回值。

5. 具體選項不記得,但用到的知識如下:

String []a = new String[10];

則:a[0]~a[9] = null

a.length = 10

如果是int []a = new int[10];

則:a[0]~a[9] = 0

a.length = 10

6. 下面程序的運行結果:()

    public static void main(String args[]) {

        Thread t = new Thread() {

            public void run() {
                pong();
            }
        };

        t.run();
        System.out.print("ping");

    }

    static void pong() {

        System.out.print("pong");

    }

A pingpong B pongping C pingpong和pongping都有可能 D 都不輸出

答案:B

解析:這里考的是Thread類中start()和run()方法的區別了。start()用來啟動一個線程,當調用start方法后,系統才會開啟一個新的線程,進而調用run()方法來執行任務,而單獨的調用run()就跟調用普通方法是一樣的,已經失去線程的特性了。因此在啟動一個線程的時候一定要使用start()而不是run()。

7. 下列屬于關系型數據庫的是()

A. Oracle B MySql C IMS D MongoDB

答案:AB

解答:IMS(Information Management System)數據庫是IBM公司開發的兩種數據庫類型之一;

一種是關系數據庫,典型代表產品:DB2;

另一種則是層次數據庫,代表產品:IMS層次數據庫。

非關系型數據庫有MongoDB、memcachedb、Redis等。

8. GC線程是否為守護線程?()

答案:是

解析:線程分為守護線程和非守護線程(即用戶線程)。

只要當前JVM實例中尚存在任何一個非守護線程沒有結束,守護線程就全部工作;只有當最后一個非守護線程結束時,守護線程隨著JVM一同結束工作。
守護線程最典型的應用就是 GC (垃圾回收器)

9. volatile關鍵字是否能保證線程安全?()

答案:不能

解析:volatile關鍵字用在多線程同步中,可保證讀取的可見性,JVM只是保證從主內存加載到線程工作內存的值是最新的讀取值,而非cache中。但多個線程對

volatile的寫操作,無法保證線程安全。例如假如線程1,線程2 在進行read,load 操作中,發現主內存中count的值都是5,那么都會加載這個最新的值,在線程1堆count進行修改之后,會write到主內存中,主內存中的count變量就會變為6;線程2由于已經進行read,load操作,在進行運算之后,也會更新主內存count的變量值為6;導致兩個線程及時用volatile關鍵字修改之后,還是會存在并發的情況。

10. 下列說法正確的是()

A LinkedList繼承自List

B AbstractSet繼承自Set

C HashSet繼承自AbstractSet

D WeakMap繼承自HashMap

答案:AC

解析:下面是一張下載的Java中的集合類型的繼承關系圖,一目了然。

11. 存在使i + 1 < i的數嗎()

答案:存在

解析:如果i為int型,那么當i為int能表示的最大整數時,i+1就溢出變成負數了,此時不就<i了嗎。

擴展:存在使i > j || i <= j不成立的數嗎()

答案:存在

解析:比如Double.NaN或Float.NaN,感謝@BuilderQiu網友指出。

12. 0.6332的數據類型是()

A float B double C Float D Double

答案:B

解析:默認為double型,如果為float型需要加上f顯示說明,即0.6332f

13. 下面哪個流類屬于面向字符的輸入流( )

ABufferedWriter BFileInputStream CObjectInputStream D InputStreamReader

答案:D

解析:Java的IO操作中有面向字節(Byte)和面向字符(Character)兩種方式。
面向字節的操作為以8位為單位對二進制的數據進行操作,對數據不進行轉換,這些類都是InputStream和OutputStream的子類。
面向字符的操作為以字符為單位對數據進行操作,在讀的時候將二進制數據轉為字符,在寫的時候將字符轉為二進制數據,這些類都是Reader和Writer的子類。

總結:以InputStream(輸入)/OutputStream(輸出)為后綴的是字節流;

以Reader(輸入)/Writer(輸出)為后綴的是字符流。

擴展:Java流類圖結構,一目了然,解決大部分選擇題:

14. Java接口的修飾符可以為()

A private B protected C final D abstract

答案:CD

解析:接口很重要,為了說明情況,這里稍微啰嗦點:

(1)接口用于描述系統對外提供的所有服務,因此接口中的成員常量和方法都必須是公開(public)類型的,確保外部使用者能訪問它們;

(2)接口僅僅描述系統能做什么,但不指明如何去做,所以接口中的方法都是抽象(abstract)方法;

(3)接口不涉及和任何具體實例相關的細節,因此接口沒有構造方法,不能被實例化,沒有實例變量,只有靜態(static)變量;

(4)接口的中的變量是所有實現類共有的,既然共有,肯定是不變的東西,因為變化的東西也不能夠算共有。所以變量是不可變(final)類型,也就是常量了。

(5)接口中不可以定義變量?如果接口可以定義變量,但是接口中的方法又都是抽象的,在接口中無法通過行為來修改屬性。有的人會說了,沒有關系,可以通過 實現接口的對象的行為來修改接口中的屬性。這當然沒有問題,但是考慮這樣的情況。如果接口 A 中有一個public 訪問權限的靜態變量 a。按照 Java 的語義,我們可以不通過實現接口的對象來訪問變量 a,通過 A.a = xxx; 就可以改變接口中的變量 a 的值了。正如抽象類中是可以這樣做的,那么實現接口 A 的所有對象也都會自動擁有這一改變后的 a 的值了,也就是說一個地方改變了 a,所有這些對象中 a 的值也都跟著變了。這和抽象類有什么區別呢,怎么體現接口更高的抽象級別呢,怎么體現接口提供的統一的協議呢,那還要接口這種抽象來做什么呢?所以接口中 不能出現變量,如果有變量,就和接口提供的統一的抽象這種思想是抵觸的。所以接口中的屬性必然是常量,只能讀不能改,這樣才能為實現接口的對象提供一個統 一的屬性。

通俗的講,你認為是要變化的東西,就放在你自己的實現中,不能放在接口中去,接口只是對一類事物的屬性和行為更高層次的抽象。對修改關閉,對擴展(不同的實現 implements)開放,接口是對開閉原則的一種體現。

所以:

接口的方法默認是public abstract;

接口中不可以定義變量即只能定義常量(加上final修飾就會變成常量)。所以接口的屬性默認是public static final 常量,且必須賦初值。

注意:final和abstract不能同時出現。

15. 不通過構造函數也能創建對象嗎()

A 是 B 否

答案:A

解析:Java創建對象的幾種方式(重要):

(1) 用new語句創建對象,這是最常見的創建對象的方法。
(2) 運用反射手段,調用java.lang.Class或者java.lang.reflect.Constructor類的newInstance()實例方法。
(3) 調用對象的clone()方法。
(4) 運用反序列化手段,調用java.io.ObjectInputStream對象的 readObject()方法。

(1)和(2)都會明確的顯式的調用構造函數 ;(3)是在內存上對已有對象的影印,所以不會調用構造函數 ;(4)是從文件中還原類的對象,也不會調用構造函數。

16. ArrayList list = new ArrayList(20);中的list擴充幾次()

A 0 B 1 C 2 D 3

答案:A

解析:這里有點迷惑人,大家都知道默認ArrayList的長度是10個,所以如果你要往list里添加20個元素肯定要擴充一次(擴充為原來的1.5倍),但是這里顯示指明了需要多少空間,所以就一次性為你分配這么多空間,也就是不需要擴充了。

17. 下面哪些是對稱加密算法()

A DES B AES C DSA D RSA

答案:AB

解析:常用的對稱加密算法有:DES、3DES、RC2、RC4、AES

常用的非對稱加密算法有:RSA、DSA、ECC

使用單向散列函數的加密算法:MD5、SHA

18.新建一個流對象,下面哪個選項的代碼是錯誤的?()

A)new BufferedWriter(new FileWriter("a.txt"));

B)new BufferedReader(new FileInputStream("a.dat"));

C)new GZIPOutputStream(new FileOutputStream("a.zip"));

D)new ObjectInputStream(new FileInputStream("a.dat"));

答案:B

解析:請記得13題的那個圖嗎?Reader只能用FileReader進行實例化。

19. 下面程序能正常運行嗎()

public class NULL {

    public static void haha(){
        System.out.println("haha");
    }
    public static void main(String[] args) {
        ((NULL)null).haha();
    }

}

答案:能正常運行

解析:輸出為haha,因為null值可以強制轉換為任何java類類型,(String)null也是合法的。但null強制轉換后是無效對象,其返回值還是為null,而static方法的調用是和類名綁定的,不借助對象進行訪問所以能正確輸出。反過來,沒有static修飾就只能用對象進行訪問,使用null調用對象肯定會報空指針錯了。這里和C++很類似。這里感謝@Florian網友解答。

20. 下面程序的運行結果是什么()

class HelloA {

    public HelloA() {
        System.out.println("HelloA");
    }
    
    { System.out.println("I'm A class"); }
    
    static { System.out.println("static A"); }

}

public class HelloB extends HelloA {
    public HelloB() {
        System.out.println("HelloB");
    }
    
    { System.out.println("I'm B class"); }
    
    static { System.out.println("static B"); }
    
    public static void main(String[] args) { 
     new HelloB(); 
   }

}

答案:

static A
static B
I'm A class
HelloA
I'm B class
HelloB

解析:說實話我覺得這題很好,考查靜態語句塊、構造語句塊(就是只有大括號的那塊)以及構造函數的執行順序。

對象的初始化順序:(1)類加載之后,按從上到下(從父類到子類)執行被static修飾的語句;(2)當static語句執行完之后,再執行main方法;(3)如果有語句new了自身的對象,將從上到下執行構造代碼塊、構造器(兩者可以說綁定在一起)。

下面稍微修改下上面的代碼,以便更清晰的說明情況:

View Code

此時輸出結果為:

static A
static B
-------main start-------
I'm A class
HelloA
I'm B class
HelloB
I'm A class
HelloA
I'm B class
HelloB
-------main end-------

21.getCustomerInfo()方法如下,try中可以捕獲三種類型的異常,如果在該方法運行中產生了一個IOException,將會輸出什么結果()

    public void getCustomerInfo() {

        try {

            // do something that may cause an Exception

        } catch (java.io.FileNotFoundException ex) {

            System.out.print("FileNotFoundException!");

        } catch (java.io.IOException ex) {

            System.out.print("IOException!");

        } catch (java.lang.Exception ex) {

            System.out.print("Exception!");

        }

    }

AIOException!

BIOException!Exception!

CFileNotFoundException!IOException!

DFileNotFoundException!IOException!Exception!

答案:A

解析:考察多個catch語句塊的執行順序。當用多個catch語句時,catch語句塊在次序上有先后之分。從最前面的catch語句塊依次先后進行異常類型匹配,這樣如果父異常在子異常類之前,那么首先匹配的將是父異常類,子異常類將不會獲得匹配的機會,也即子異常類型所在的catch語句塊將是不可到達的語句。所以,一般將父類異常類即Exception老大放在catch語句塊的最后一個。

22. 下面代碼的運行結果為:()

import java.io.*;
import java.util.*;

public class foo{

    public static void main (String[] args){

        String s;

        System.out.println("s=" + s);

    }

}

A代碼得到編譯,并輸出“s=”

B代碼得到編譯,并輸出“s=null”

C由于String s沒有初始化,代碼不能編譯通過

D代碼得到編譯,但捕獲到NullPointException異常

答案:C

解析:開始以為會輸出null什么的,運行后才發現Java中所有定義的基本類型或對象都必須初始化才能輸出值。

23. System.out.println("5" + 2);的輸出結果應該是()。

A52 B7 C2 D5

答案:A

解析:沒啥好說的,Java會自動將2轉換為字符串。

24.指出下列程序運行的結果()

public class Example {

    String str = new String("good");

    char[] ch = { 'a', 'b', 'c' };

    public static void main(String args[]) {

        Example ex = new Example();

        ex.change(ex.str, ex.ch);

        System.out.print(ex.str + " and ");

        System.out.print(ex.ch);

    }

    public void change(String str, char ch[]) {

        str = "test ok";

        ch[0] = 'g';

    }
}

A、good and abc

B、good and gbc

C、test ok and abc

D、test ok and gbc

答案:B

解析:大家可能以為Java中String和數組都是對象所以肯定是對象引用,然后就會選D,其實這是個很大的誤區:因為在java里沒有引用傳遞,只有值傳遞

這個值指的是實參的地址的拷貝,得到這個拷貝地址后,你可以通過它修改這個地址的內容(引用不變),因為此時這個內容的地址和原地址是同一地址,

但是你不能改變這個地址本身使其重新引用其它的對象,也就是值傳遞,可能說的不是很清楚,下面給出一個完整的能說明情況的例子吧:

View Code

程序有些啰嗦,但能反映問題,該程序運行結果為:

對象交換前:p1 = Alexia female
對象交換前:p2 = Edward male

對象交換后:p1 = Alexia female
對象交換后:p2 = Edward male

對象數組交換前:arraya[0] = Alexia female, arraya[1] = Edward male
對象數組交換前:arrayb[0] = jmwang female, arrayb[1] = hwu male

對象數組交換后:arraya[0] = Alexia female, arraya[1] = Edward male
對象數組交換后:arrayb[0] = jmwang female, arrayb[1] = hwu male

基本類型數組交換前:a[0] = 0, a[1] = 1
基本類型數組交換前:b[0] = 1, b[1] = 2

基本類型數組交換后:a[0] = 0, a[1] = 1
基本類型數組交換后:b[0] = 1, b[1] = 2

對象數組內容交換并改變后:arraya[1] = wjl male
對象數組內容交換并改變后:arrayb[1] = Edward male

基本類型數組內容交換并改變后:a[1] = 5
基本類型數組內容交換并改變后:b[1] = 1

說明:不管是對象、基本類型還是對象數組、基本類型數組,在函數中都不能改變其實際地址但能改變其中的內容。


25.要從文件"file.dat"中讀出第10個字節到變量c中,下列哪個方法適合?()

AFileInputStream in=new FileInputStream("file.dat"); in.skip(9); int c=in.read();

BFileInputStream in=new FileInputStream("file.dat"); in.skip(10); int c=in.read();

CFileInputStream in=new FileInputStream("file.dat"); int c=in.read();

DRandomAccessFile in=new RandomAccessFile("file.dat"); in.skip(9); int c=in.readByte();

答案:A?D?

解析:long skip(long n)作用是跳過n個字節不讀,主要用在包裝流中的,因為一般流(如FileInputStream)只能順序一個一個的讀不能跳躍讀,但是包裝流可以用skip方法跳躍讀取。那么什么是包裝流呢?各種字節節點流類,它們都只具有讀寫字節內容的方法,以FileInputStream與FileOutputStream為例,它們只能在文件中讀取或者向文件中寫入字節,在實際應用中我們往往需要在文件中讀取或者寫入各種類型的數據,就必須先將其他類型的數據轉換成字節數組后寫入文件,或者從文件中讀取到的字節數組轉換成其他數據類型,想想都很麻煩!!因此想通過FileOutputStream將一個浮點小數寫入到文件中或將一個整數寫入到文件時是非常困難的。這時就需要包裝類DataInputStream/DataOutputStream,它提供了往各種輸入輸出流對象中讀入或寫入各種類型的數據的方法。

DataInputStream/DataOutputStream并沒有對應到任何具體的流設備,一定要給它傳遞一個對應具體流設備的輸入或輸出流對象,完成類似DataInputStream/DataOutputStream功能的類就是一個包裝類,也叫過濾流類或處理流類。它對InputOutStream/OutputStream流類進行了包裝,使編程人員使用起來更方便。其中DataInputStream包裝類的構造函數語法:public DataInputStream(InputStream in)。包裝類也可以包裝另外一個包裝類。

首先BC肯定 是錯的,那A正確嗎?按上面的解析應該也不對,但我試了下,發現A也是正確的,與網上解析的資料有些出入,下面是我的code:

View Code

那么D呢,RandomAccessFile是IO包的類,但是其自成一派,從Object直接繼承而來。可以對文件進行讀取和寫入。支持文件的隨機訪問,即可以隨機讀取文件中的某個位置內容,這么說RandomAccessFile肯定可以達到題目的要求,但是選項有些錯誤,比如RandomAccessFile的初始化是兩個參數而非一個參數,采用的跳躍讀取方法是skipBytes()而非skip(),即正確的寫法是:

RandomAccessFile in = new RandomAccessFile("file.dat", "r");
in.skipBytes(9);
int c = in.readByte();

這樣也能讀到第十個字節,也就是A和D都能讀到第十個字節,那么到底該選哪個呢?A和D有啥不同嗎?求大神解答~~~

26.下列哪種異常是檢查型異常,需要在編寫程序時聲明()

ANullPointerException BClassCastException CFileNotFoundException D IndexOutOfBoundsException

答案:C

解析:看第2題的解析。

27. 下面的方法,當輸入為2的時候返回值是多少?()

    public static int getValue(int i) {
        int result = 0;
        switch (i) {
        case 1:
            result = result + i;
        case 2:
            result = result + i * 2;
        case 3:
            result = result + i * 3;
        }
        return result;
    }

A0 B2 C4 D10

答案:D

解析:注意這里case后面沒有加break,所以從case 2開始一直往下運行。

28.選項中哪一行代碼可以替換題目中//add code here而不產生編譯錯誤?()

public abstract class MyClass {
public int constInt = 5; //add code here public void method() { } }

Apublic abstract void method(int a);

B constInt = constInt + 5;

Cpublic int method();

Dpublic abstract void anotherMethod() {}

答案:A

解析:考察抽象類的使用。

抽象類遵循的原則:

(1)abstract關鍵字只能修飾類和方法,不能修飾字段。
(2)抽象類不能被實例化(無法使用new關鍵字創建對象實例),只能被繼承。
(3)抽象類可以包含屬性,方法,構造方法,初始化塊,內部類,枚舉類,和普通類一樣,普通方法一定要實現,變量可以初始化或不初始化但不能初始化后在抽象類中重新賦值或操作該變量(只能在子類中改變該變量)。
(4)抽象類中的抽象方法(加了abstract關鍵字的方法)不能實現。
(5)含有抽象方法的類必須定義成抽象類。

擴展:抽象類和接口的區別,做個總結吧:

(1)接口是公開的,里面不能有私有的方法或變量,是用于讓別人使用的,而抽象類是可以有私有方法或私有變量的。

(2)abstract class 在 Java 語言中表示的是一種繼承關系,一個類只能使用一次繼承關系。但是,一個類卻可以實現多個interface,實現多重繼承。接口還有標識(里面沒有任何方法,如Remote接口)和數據共享(里面的變量全是常量)的作用。

(3)在abstract class 中可以有自己的數據成員,也可以有非abstarct的成員方法,而在interface中,只能夠有靜態的不能被修改的數據成員(也就是必須是 static final的,不過在 interface中一般不定義數據成員),所有的成員方法默認都是 public abstract 類型的。

(4)abstract class和interface所反映出的設計理念不同。其實abstract class表示的是"is-a"關系,interface表示的是"has-a"關系。

(5)實現接口的一定要實現接口里定義的所有方法,而實現抽象類可以有選擇地重寫需要用到的方法,一般的應用里,最頂級的是接口,然后是抽象類實現接口,最后才到具體類實現。抽象類中可以有非抽象方法。接口中則不能有實現方法。

(6)接口中定義的變量默認是public static final 型,且必須給其初值,所以實現類中不能重新定義,也不能改變其值。抽象類中的變量默認是 friendly 型,其值可以在子類中重新定義,也可以在子類中重新賦值。

29. 閱讀Shape和Circle兩個類的定義。在序列化一個Circle的對象circle到文件時,下面哪個字段會被保存到文件中?( )

class Shape {

       public String name;

}

class Circle extends Shape implements Serializable{

       private float radius;

       transient int color;

       public static String type = "Circle";

}

Aname

Bradius

Ccolor

Dtype

答案:B

解析:這里有詳細的解釋:http://www.cnblogs.com/lanxuezaipiao/p/3369962.html

30.下面是People和Child類的定義和構造方法,每個構造方法都輸出編號。在執行new Child("mike")的時候都有哪些構造方法被順序調用?請選擇輸出結果( )

class People {
    String name;

    public People() {
        System.out.print(1);
    }

    public People(String name) {
        System.out.print(2);
        this.name = name;
    }
}

class Child extends People {
    People father;

    public Child(String name) {
        System.out.print(3);
        this.name = name;
        father = new People(name + ":F");
    }

    public Child() {
        System.out.print(4);
    }
    
}

A312 B 32 C 432 D 132

答案:D

解析:考察的又是父類與子類的構造函數調用次序。在Java中,子類的構造過程中必須調用其父類的構造函數,是因為有繼承關系存在時,子類要把父類的內容繼承下來。但如果父類有多個構造函數時,該如何選擇調用呢?

第一個規則:子類的構造過程中,必須調用其父類的構造方法。一個類,如果我們不寫構造方法,那么編譯器會幫我們加上一個默認的構造方法(就是沒有參數的構造方法),但是如果你自己寫了構造方法,那么編譯器就不會給你添加了,所以有時候當你new一個子類對象的時候,肯定調用了子類的構造方法,但是如果在子類構造方法中我們并沒有顯示的調用基類的構造方法,如:super();這樣就會調用父類沒有參數的構造方法。

第二個規則:如果子類的構造方法中既沒有顯示的調用基類構造方法,而基類中又沒有無參的構造方法,則編譯出錯,所以,通常我們需要顯示的:super(參數列表),來調用父類有參數的構造函數,此時無參的構造函數就不會被調用。

總之,一句話:子類沒有顯示調用父類構造函數,不管子類構造函數是否帶參數都默認調用父類無參的構造函數,若父類沒有則編譯出錯。

最后,給大家出個思考題:下面程序的運行結果是什么?

public class Dervied extends Base {

    private String name = "dervied";

    public Dervied() {
        tellName();
        printName();
    }
    
    public void tellName() {
        System.out.println("Dervied tell name: " + name);
    }
    
    public void printName() {
        System.out.println("Dervied print name: " + name);
    }

    public static void main(String[] args){
        
        new Dervied();    
    }
}

class Base {
    
    private String name = "base";

    public Base() {
        tellName();
        printName();
    }
    
    public void tellName() {
        System.out.println("Base tell name: " + name);
    }
    
    public void printName() {
        System.out.println("Base print name: " + name);
    }
}



以下是自己總結的一些Java常見的基礎知識題,答案僅供參考,如有異議請指出。一直保持更新狀態。

1.什么是Java虛擬機?為什么Java被稱作是“平臺無關的編程語言”?
Java虛擬機是一個可以執行Java字節碼的虛擬機進程。Java源文件被編譯成能被Java虛擬機執行的字節碼文件。

2.“static”關鍵字是什么意思?Java中是否可以覆蓋(override)一個private或者是static的方法?
“static”關鍵字表明一個成員變量或者是成員方法可以在沒有所屬的類的實例變量的情況下被訪問。
Java中static方法不能被覆蓋,因為方法覆蓋是基于運行時動態綁定的,而static方法是編譯時靜態綁定的。static方法跟類的任何實例都不相關,所以概念上不適用。

3.是否可以在static環境中訪問非static變量?
static變量在Java中是屬于類的,它在所有的實例中的值是一樣的。當類被Java虛擬機載入的時候,會對static變量進行初始化。如果你的代碼嘗試不用實例來訪問非static的變量,編譯器會報錯,因為這些變量還沒有被創建出來,還沒有跟任何實例關聯上。

4.Java支持的數據類型有哪些?什么是自動拆裝箱?
Java語言支持的8中基本數據類型是:
? byte
? short
? int
? long
? float
? double
? boolean
? char
自動裝箱是Java編譯器在基本數據類型和對應的對象包裝類型之間做的一個轉化。比如:把int轉化成Integer,double轉化成double,等等。反之就是自動拆箱。

5.Overload和Override的區別。Overloaded的方法是否可以改變返回值的類型?
方法的重寫Overriding和重載Overloading是Java多態性的不同表現。重寫Overriding是父類與子類之間多態性的一種表現,重載O verloading是一個類中多態性的一種表現。如果在子類中定義某方法與其父類有相同的名稱和參數,我們說該方法被重寫(Overriding)。子類的對象使用這個方法時,將調用子類中的定義,對它而言,父類中的定義如同被”屏蔽”了。如果在一個類中定義了多個同名的方法,它們或有不同的參數個數或有不同的參數類型,則稱為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類型。

6.Java支持多繼承么?
不支持,Java不支持多繼承。每個類都只能繼承一個類,但是可以實現多個接口。

7.接口和抽象類的區別是什么?
Java提供和支持創建抽象類和接口。它們的實現有共同點,不同點在于:
? 接口中所有的方法隱含的都是抽象的。而抽象類則可以同時包含抽象和非抽象的方法。
? 類可以實現很多個接口,但是只能繼承一個抽象類
? 類如果要實現一個接口,它必須要實現接口聲明的所有方法。但是,類可以不實現抽象類聲明的所有方法,當然,在這種情況下,類也必須得聲明成是抽象的。
? 抽象類可以在不提供接口方法實現的情況下實現接口。
? Java接口中聲明的變量默認都是final的。抽象類可以包含非final的變量。
?Java接口中的成員函數默認是public的。抽象類的成員函數可以是private,protected或者是public。
? 接口是絕對抽象的,不可以被實例化。抽象類也不可以被實例化,但是,如果它包含main方法的話是可以被調用的。
也可以參考JDK8中抽象類和接口的區別

8.什么是值傳遞和引用傳遞?
對象被值傳遞,意味著傳遞了對象的一個副本。因此,就算是改變了對象副本,也不會影響源對象的值。
對象被引用傳遞,意味著傳遞的并不是實際的對象,而是對象的引用。因此,外部對引用對象所做的改變會反映到所有的對象上。

9.創建線程有幾種不同的方式?你喜歡哪一種?為什么?
有三種方式可以用來創建線程:
? 繼承Thread類
? 實現Runnable接口
? 應用程序可以使用Executor框架來創建線程池
實現Runnable接口這種方式更受歡迎,因為這不需要繼承Thread類。在應用設計中已經繼承了別的對象的情況下,這需要多繼承(而Java不支持多繼承),只能實現接口。同時,線程池也是非常高效的,很容易實現和使用。

10.同步方法和同步代碼塊的區別是什么?
在Java語言中,每一個對象有一把鎖。線程可以使用synchronized關鍵字來獲取對象上的鎖。synchronized關鍵字可應用在方法級別(粗粒度鎖:這里的鎖對象可以是This)或者是代碼塊級別(細粒度鎖:這里的鎖對象就是任意對象)。

11.什么是死鎖(deadlock)?
兩個進程都在等待對方執行完畢才能繼續往下執行的時候就發生了死鎖。結果就是兩個進程都陷入了無限的等待中。
代碼表示:

代碼描述:

public class DieLockDemo {
public static void main(String[] args) {
DieLock dl1 = new DieLock(true);
DieLock dl2 = new DieLock(false);

dl1.start();
dl2.start();
}
}
*...理想狀態下dl1線程為true從if執行先打出"if objA"然后再接著打出"if objB"之后釋放A、B的鎖對象,之后dl2線程執行else語句打出"else objB","else objA"。
非理想狀態下dl1先打出"if objA",之后線程dl2執行打出"else objB",然后1、2線程的鎖對象A和B都處于被鎖的狀態,兩個線程爭奪鎖對象發生死鎖現象。..*
public class DieLock extends Thread {
private boolean flag;
public DieLock(boolean flag) {
this.flag = flag;
}
@Override
public void run() {
if (flag) {
synchronized (MyLock.objA) {
System.out.println("if objA");
synchronized (MyLock.objB) {
System.out.println("if objB");
}
}
} else {
synchronized (MyLock.objB) {
System.out.println("else objB");
synchronized (MyLock.objA) {
System.out.println("else objA");
}
}
}
}
}

12.如何確保N個線程可以訪問N個資源同時又不導致死鎖?
使用多線程的時候,一種非常簡單的避免死鎖的方式就是:指定獲取鎖的順序,并強制線程按照指定的順序獲取鎖。因此,如果所有的線程都是以同樣的順序加鎖和釋放鎖,就不會出現死鎖了。

13.Java集合類框架的基本接口有哪些?
Java集合類提供了一套設計良好的支持對一組對象進行操作的接口和類。Java集合類里面最基本的接口有:
? Collection:代表一組對象,每一個對象都是它的子元素。
? Set:不包含重復元素的Collection。
? List:有順序的collection,并且可以包含重復元素。
? Map:可以把鍵(key)映射到值(value)的對象,鍵不能重復。

14.什么是迭代器(Iterator)?
Iterator接口提供了很多對集合元素進行迭代的方法。每一個集合類都包含了可以返回迭代器實例的迭代方法。迭代器可以在迭代的過程中刪除底層集合的元素。

15.Iterator和ListIterator的區別是什么?
下面列出了他們的區別:
? Iterator可用來遍歷Set和List集合,但是ListIterator只能用來遍歷List。
? Iterator對集合只能是前向遍歷,ListIterator既可以前向也可以后向。
? ListIterator實現了Iterator接口,并包含其他的功能,比如:增加元素,替換元素,獲取前一個和后一個元素的索引,等等。

16.Java中的HashMap的工作原理是什么?
Java中的HashMap是以鍵值對(key-value)的形式存儲元素的。HashMap需要一個hash函數,它使用hashCode()和equals()方法來向集合/從集合添加和檢索元素。當調用put()方法的時候,HashMap會計算key的hash值,然后把鍵值對存儲在集合中合適的索引上。如果key已經存在了,value會被更新成新值。HashMap的一些重要的特性是它的容量(capacity),負載因子(load factor)和擴容極限(threshold resizing)。

17.HashMap和Hashtable有什么區別?
? HashMap和Hashtable都實現了Map接口,因此很多特性非常相似。但是,他們有以下不同點:
?HashMap允許鍵和值是null,而Hashtable不允許鍵或者值是null。
?Hashtable是同步的,而HashMap不是。因此,HashMap更適合于單線程環境,而Hashtable適合于多線程環境。
? HashMap提供了可供應用迭代的鍵的集合,因此,HashMap是快速失敗的。另一方面,Hashtable提供了對鍵的列舉(Enumeration)。
o 一般認為Hashtable是一個遺留的類。

18.數組(Array)和列表(ArrayList)有什么區別?什么時候應該使用Array而不是ArrayList?
下面列出了Array和ArrayList的不同點:
?Array可以包含基本類型和對象類型,ArrayList只能包含對象類型。
?Array大小是固定的,ArrayList的大小是動態變化的。
? ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。
? 對于基本類型數據,集合使用自動裝箱來減少編碼工作量。但是,當處理固定大小的基本數據類型的時候,這種方式相對比較慢。

19.ArrayList和LinkedList有什么區別?
ArrayList和LinkedList都實現了List接口,他們有以下的不同點:
? ArrayList是基于索引的數據接口,它的底層是數組。它可以以O(1)時間復雜度對元素進行隨機訪問。與此對應,LinkedList是以元素鏈表的形式存儲它的數據,每一個元素都和它的前一個和后一個元素鏈接在一起,在這種情況下,查找某個元素的時間復雜度是O(n)。
? 相對于ArrayList,LinkedList的插入,添加,刪除操作速度更快,因為當元素被添加到集合任意位置的時候,不需要像數組那樣重新計算大小或者是更新索引。
? LinkedList比ArrayList更占內存,因為LinkedList為每一個節點存儲了兩個引用,一個指向前一個元素,一個指向下一個元素。
也可以參考ArrayList vs. LinkedList。

20.如何權衡是使用無序的數組還是有序的數組?
有序數組最大的好處在于查找的時間復雜度是O(log n),而無序數組是O(n)。有序數組的缺點是插入操作的時間復雜度是O(n),因為值大的元素需要往后移動來給新元素騰位置。相反,無序數組的插入時間復雜度是常量O(1)。

21.HashSet和TreeSet有什么區別?
HashSet是由一個hash表來實現的,因此,它的元素是無序的。add(),remove(),contains()方法的時間復雜度是O(1)。
另一方面,TreeSet是由一個樹形的結構來實現的,它里面的元素是有序的。因此,add(),remove(),contains()方法的時間復雜度是O(logn)。

22.Java中垃圾回收有什么目的?什么時候進行垃圾回收?
垃圾回收的目的是識別并且丟棄應用不再使用的對象來釋放和重用資源。

23.如果對象的引用被置為null,垃圾收集器是否會立即釋放對象占用的內存?
不會,在下一個垃圾回收周期中,這個對象將是可被回收的。

24、String是最基本的數據類型嗎?
基本數據類型包括byte、int、char、long、float、double、boolean和short。
java.lang.String類是final類型的,因此不可以繼承這個類、不能修改這個類。為了提高效率節省空間,我們應該用StringBuffer類

25、int 和 Integer 有什么區別
Java 提供兩種不同的類型:引用類型和原始類型(或內置類型)。Int是java的原始數據類型,Integer是java為int提供的封裝類。Java為每個原始類型提供了封裝類。

26、String 和StringBuffer的區別
JAVA平臺提供了兩個類:String和StringBuffer,它們可以儲存和操作字符串,即包含多個字符的字符數據。這個String類提供了數值不可改變的字符串。而這個StringBuffer類提供的字符串進行修改。

27、說出ArrayList,Vector, LinkedList的存儲性能和特性
ArrayList 和Vector都是使用數組方式存儲數據,此數組元素數大于實際存儲的數據以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數組元素移動等內存操作,所以索引數據快而插入數據慢,Vector由于使用了synchronized方法(線程安全),通常性能上較ArrayList差,而 Linke dList使用雙向鏈表實現存儲,按序號索引數據需要進行前向或后向遍歷,但是插入數據時只需要記錄本項的前后項即可,所以插入速度較快。

List的子類特點
        ArrayList:
            底層數據結構是數組,查詢快,增刪慢
            線程不安全,效率高
        Vector:
            底層數據結構是數組,查詢快,增刪慢
            線程安全,效率低
        LinkedList:
            底層數據結構是鏈表,查詢慢,增刪快
            線程不安全,效率高

28、Collection 和 Collections的區別
Collection是集合類的上級接口,繼承與他的接口主要有Set 和List.
Collections是針對集合類的一個幫助類,他提供一系列靜態方法實現對各種集合的搜索、排序、線程安全化等操作。
集合的繼承體系:

29、&和&&的區別。
&是位運算符,表示按位與運算,&&是邏輯運算符,表示邏輯與(and)。

30、final, finally, finalize的區別。
final
用于聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。
finally是異常處理語句結構的一部分,表示總是執行。
finalize是Object類的一個方法,在垃圾收集器執行的時候會調用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關閉文件等。

31、sleep() 和 wait() 有什么區別?
sleep是線程類(Thread)的方法,導致此線程暫停執行指定時間,給執行機會給其他線程,但是監控狀態依然保持,到時后會自動恢復。調用sleep不會釋放對象鎖。
wait是Object類的方法,對此對象調用wait方法導致本線程放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對象發出notify方法(或not ifyAll)后本線程才進入對象鎖定池準備獲得對象鎖進入運行狀態。

32、error和exception有什么區別?
error
表示恢復不是不可能但很困難的情況下的一種嚴重問題。比如說內存溢出。不可能指望程序能處理這樣的情況。
exception
表示一種設計或實現問題。也就是說,它表示如果程序運行正常,從不會發生的情況。

33、同步和異步有何異同,在什么情況下分別使用他們?舉例說明。
如果數據將在線程間共享。例如正在寫的數據以后可能被另一個線程讀到,或者正在讀的數據可能已經被另一個線程寫過了,那么這些數據就是共享數據,必須進行同步存取。
當應用程序在對象上調用了一個需要花費很長時間來執行的方法,并且不希望讓程序等待方法的返回時,就應該使用異步編程,在很多情況下采用異步途徑往往更有效率。

34、GC是什么? 為什么要有GC?
GC是垃圾收集的意思(Gabage Collection),內存處理是編程人員容易出現問題的地方,忘記或者錯誤的內存回收會導致程序或系統的不穩定甚至崩潰,Java提供的GC功能可以自動監測對象是否超過作用域從而達到自動回收內存的目的,Java語言沒有提供釋放已分配內存的顯示操作方法。

35、short s1 = 1; s1 = s1 + 1;有什么錯? short s1 = 1; s1 +=
1;有什么錯?
short s1 = 1; s1 = s1 + 1;
(s1+1運算結果是int型,需要強制轉換類型)
short s1 = 1; s1 += 1;(可以正確編譯,+=內置運算符運算時可自動變換數據類型)

36、Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)==12
Math.round(-11.5)==-11
round方法返回與參數最接近的長整數,參數加1/2后求其floor.

37、String s = new String(“xyz”);創建了幾個String Object?
兩個,一個是在堆中創建的s一個是在字符串常量池中創建的“xyz”。

38、接口是否可繼承接口?
抽象類是否可實現(implements)接口?
抽象類是否可繼承實體類(concrete class)?
接口可以繼承接口。抽象類可以實現(implements)接口,抽象類是否可繼承實體類,但前提是實體類必須有明確的構造函數。

39、List, Set, Map是否繼承自Collection接口?
List,Set是,Map不是

40、abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized?
都不能

41、是否可以繼承String類?
String類是final類故不可以繼承。

42、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch(expr1)中,expr1是一個整數表達式。因此傳遞給switch 和 case 語句的參數應該是 int、 short、 char 或者byte。long,string 都不能作用于swtich。

43、try {}里有一個return語句,那么緊跟在這個try后的finally {}里的code會不會被執行,什么時候被執行,在return前還是后?
會執行,在return前執行(finally中程序一定會被執行,return結束后程序結束,所以肯定在之前執行)。

44、兩個對象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對?
不對,有相同的hash code。(hashcode內部也是根據對象的 來做處理的)

45、當一個線程進入一個對象的一個synchronized方法后,其它線程是否可進入此對象的其它方法?
不能,一個對象的一個synchronized方法只能由一個線程訪問。(同步代碼塊時對象鎖可以是任何對象,同步方法時對象鎖只能是this對象所以無法訪問其他方法)

46、編程題: 寫一個Singleton出來。
Singleton模式主要作用是保證在Java應用程序中,一個類Class只有一個實例存在。
一般Singleton模式通常有幾種種形式:
第一種形式:
定義一個類,它的構造函數為private的,它有一個static的private的該類變量,在類初始化時實例話,通過一個public的getInsta nce方法獲取對它的引用,繼而調用其中的方法。
public class Singleton {
private Singleton(){}

//在自己內部定義自己一個實例,是不是很奇怪?
//注意這是private 只供內部調用
private static Singleton instance = new Singleton();

//這里提供了一個供外部訪問本class的靜態方法,可以直接訪問
public static Singleton getInstance() {
return instance;
}

}
第二種形式:
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
//這個方法比上面有所改進,不用每次都進行生成對象,只是第一次

//使用時生成實例,提高了效率!
if (instance==null)
instance=new Singleton();
return instance; }

}
其他形式:
定義一個類,它的構造函數為private的,所有方法為static的。
一般認為第一種形式要更加安全些

47、Java的接口和C++的虛類的相同和不同處。
由于Java不支持多繼承,而有可能某個類或對象要使用分別在幾個類或對象里面的方法或屬性,現有的單繼承機制就不能滿足要求。與繼承相比,接口有更高的靈活性,因為接口中沒有任何實現代碼。當一個類實現了接口以后,該類要實現接口里面所有的方法和屬性,并且接口里面的屬性在默認狀態下面都是public static,所有方法默認情況下是public.一個類可以實現多個接口。

48、Java中的異常處理機制的簡單原理和應用。
當JAVA 程序違反了JAVA的語義規則時,JAVA虛擬機就會將發生的錯誤表示為一個異常。違反語義規則包括2種情況。一種是JAVA類庫內置的語義檢查。例如數組下標越界,會引發IndexOutOfBoundsException;訪問null的對象時會引發NullPointerException。另一種情況就是JAVA允許程序員擴展這種語義檢查,程序員可以創建自己的異常,并自由選擇在何時用throw關鍵字引發異常。所有的異常都是java.lang.Thowable的子類。

49、垃圾回收的優點和原理。并考慮2種回收機制。
Java語言中一個顯著的特點就是引入了垃圾回收機制,使c++程序員最頭疼的內存管理的問題迎刃而解,它使得Java程序員在編寫程序的時候不再需要考慮內存管理。由于有個垃圾回收機制,Java中的對象不再有”作用域”的概念,只有對象的引用才有”作用域”。垃圾回收可以有效的防止內存泄露,有效的使用可以使用的內存。垃圾回收器通常是作為一個單獨的低級別的線程運行,不可預知的情況下對內存堆中已經死亡的或者長時間沒有使用的對象進行清楚和回收,程序員不能實時的調用垃圾回收器對某個對象或所有對象進行垃圾回收。回收機制有分代復制垃圾回收和標記垃圾回收,增量垃圾回收。

50、char型變量中能不能存貯一個中文漢字?為什么?
能夠定義成為一個中文的,因為java中以unicode編碼,一個char占2個字節,所以放一個中文是沒問題的

51、多線程有幾種實現方法,都是什么?同步有幾種實現方法,都是什么?
多線程有兩種實現方法,分別是繼承Thread類與實現Runnable接口
同步的實現方面有兩種,分別是同步代碼塊和同步方法

52、線程的基本概念、線程的基本狀態以及狀態之間的關系
線程指在程序執行過程中,能夠執行程序代碼的一個執行單位,每個程序至少都有一個線程,也就是程序本身。
Java中的線程有五種狀態分別是:新建、就緒、運行、阻塞、結束。

53、簡述synchronized和java.util.concurrent.locks.Lock的異同?
主要相同點:Lock能完成synchronized所實現的所有功能
主要不同點:Lock有比synchronized更精確的線程語義和更好的性能。
Lock是一個類,synchronized是一個關鍵字
synchronized會自動釋放鎖,而Lock一定要求程序員手工釋放,并且必須在finally從句中釋放。

54、JAVA語言如何進行異常處理,關鍵字:throws,throw,try,catch,finally分別代表什么意義?在try塊中可以拋出異常嗎?
Java 通過面向對象的方法進行異常處理,把各種不同的異常進行分類,并提供了良好的接口。在Java中,每個異常都是一個對象,它是Throwable 類或其它子類的實例。當一個方法出現異常后便拋出一個異常對象,該對象中包含有異常信息,調用這個對象的方法可以捕獲到這個異常并進行處理。Java的異常處理是通過5 個關鍵詞來實現的:try、catch、throw、throws和finally。一般情況下是用try來執行一段程序,如果出現異常,系統會拋出(throws)一個異常,這時候你可以通過它的類型來捕捉(catch)它,或最后(finally)由缺省處理器來處理。
用try來指定一塊預防所有”異常”的程序。緊跟在try程序后面,應包含一個catch子句來指定你想要捕捉的”異常”的類型。
throw語句用來明確地拋出一個”異常”。
throws用來標明一個成員函數可能拋出的各種”異常”。
Finally為確保一段代碼不管發生什么”異常”都被執行一段代碼。
可以在一個成員函數調用的外面寫一個try語句,在這個成員函數內部寫另一個try語句保護其他代碼。每當遇到一個try語句,”異常”的框架就放到堆棧上面,直到所有的try語句都完成。如果下一級的try語句沒有對某種”異常”進行處理,堆棧就會展開,直到遇到有處理這種”異常”的try語句。

55、一個”.java“源文件中是否可以包括多個類(不是內部類)?有什么限制?
可以。必須只有一個類名與文件名相同。

56、java中有幾種類型的流?JDK為每種類型的流提供了一些抽象類以供繼承,請說出他們分別是哪些類?
字節流,字符流。字節流繼承于InputStream OutputStream,字符流繼承于InputStreamReader OutputStreamWriter。在java.io包中還有許多其他的流,主要是為了提高性能和使用方便。

57、java中會存在內存泄漏嗎,請簡單描述。
會。如:int i,i2; return (i-i2); //when i為足夠大的正數,i2為足夠大的負數。結果會造成溢位,導致錯誤。

58、java中實現多態的機制是什么?
方法的重寫Overriding和重載Overloading是Java多態性的不同表現。重寫Overriding是父類與子類之間多態性的一種表現,重載Overloading是一個類中多態性的一種表現。

59、垃圾回收器的基本原理是什么?垃圾回收器可以馬上回收內存嗎?有什么辦法主動通知虛擬機進行垃圾回收?
對于GC來說,當程序員創建對象時,GC就開始監控這個對象的地址、大小以及使用情況。通常,GC采用有向圖的方式記錄和管理堆(heap)中的所有對象。通過這種方式確定哪些對象是”可達的”,哪些對象是”不可達的”。當GC確定一些對象為”不可達”時,GC就有責任回收這些內存空間。可以。程序員可以手動執行System.gc(),通知GC運行,但是Java語言規范并不保證GC一定會執行。

60、什么是java序列化,如何實現java序列化?
序列化就是一種用來處理對象流的機制,所謂對象流也就是將對象的內容進行流化。可以對流化后的對象進行讀寫操作,也可將流化后的對象傳輸于網絡之間。序列化是為了解決在對對象流進行讀寫操作時所引發的問題。
序列化的實現:將需要被序列化的類實現Serializable接口,該接口沒有需要實現的方法,implements Serializable只是為了標注該對象是可被序列化的,然后使用一個輸出流(如:FileOutputStream)來構造一個ObjectOutputStream(對象流)對象,接著,使用ObjectOutputStream對象的writeObject(Object obj)方法就可以將參數為obj的對象寫出(即保存其狀態),要恢復的話則用輸入流。

61、是否可以從一個static方法內部發出對非static方法的調用?
不可以,如果其中包含對象的method();不能保證對象初始化.

62、List、Map、Set三個接口,存取元素時,各有什么特點?
List 以特定次序來持有元素,可有重復元素。
Set 無法擁有重復元素,內部排序。
Map 保存key-value值,value可多值。

63、使用final關鍵字修飾一個變量時,是引用不能變,還是引用的對象不能變?
使用final關鍵字修飾一個變量時,是指引用變量不能變,引用變量所指向的對象中的內容還是可以改變的。例如,對于如下語句:
final StringBuffer a=new StringBuffer(“immutable”);
執行如下語句將報告編譯期錯誤:
a=new StringBuffer(“”);
但是,執行如下語句則可以通過編譯:
a.append(” broken!”);

有人在定義方法的參數時,可能想采用如下形式來阻止方法內部修改傳進來的參數對象:
public void method(final StringBuffer param)
{
}
實際上,這是辦不到的,在該方法內部仍然可以增加如下代碼來修改參數對象:
param.append(“a”);

65、請說出作用域public,private,protected,以及不寫時的區別
這四個作用域的可見范圍如下表所示。
說明:如果在修飾的元素上面沒有寫任何訪問修飾符,則表示friendly。

作用域 當前類 同一package 子孫類 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×

備注:只要記住了有4種訪問權限,4個訪問范圍,然后將全選和范圍在水平和垂直方向上分別按排從小到大或從大到小的順序排列,就很容易畫出上面的圖了。

66、線程如何同步和通訊。
線程同步
什么是線程同步?
當使用多個線程來訪問同一個數據時,非常容易出現線程安全問題(比如多個線程都在操作同一數據導致數據不一致),所以我們用同步機制來解決這些問題。

實現同步機制有兩個方法:
1。同步代碼塊:
synchronized(同一個數據){} 同一個數據:就是N條線程同時訪問一個數據。

2。同步方法:
public synchronized 數據返回類型 方法名(){}
就是使用 synchronized 來修飾某個方法,則該方法稱為同步方法。對于同步方法而言,無需顯示指定同步監視器,同步方法的同步監視器是 this 也就是該對象的本身(這里指的對象本身有點含糊,其實就是調用該同步方法的對象)通過使用同步方法,可非常方便的將某類變成線程安全的類
線程通訊:

為什么要使用線程通訊?

當使用synchronized 來修飾某個共享資源時(分同步代碼塊和同步方法兩種情況),當某個線程獲得共享資源的鎖后就可以執行相應的代碼段,直到該線程運行完該代碼段后才釋放對該 共享資源的鎖,讓其他線程有機會執行對該共享資源的修改。當某個線程占有某個共享資源的鎖時,如果另外一個線程也想獲得這把鎖運行就需要使用wait() 和notify()/notifyAll()方法來進行線程通訊了。

其他答案:
同學回答說synchronized方法或代碼塊!面試官似乎不太滿意!
只有多個synchronized代碼塊使用的是同一個監視器對象,這些synchronized代碼塊之間才具有線程互斥的效果,假如a代碼塊用obj1作為監視器對象,假如b代碼塊用obj2作為監視器對象,那么,兩個并發的線程可以同時分別進入這兩個代碼塊中。 …這里還可以分析一下同步的原理。
對于同步方法的分析,所用的同步監視器對象是this
接著對于靜態同步方法的分析,所用的同步監視器對象是該類的Class對象
接著對如何實現代碼塊與方法的同步進行分析。
67、String s = “Hello”;s = s + ” world!”;這兩行代碼執行后,原始的String對象中的內容到底變了沒有?

沒有。因為String被設計成不可變(immutable)類,所以它的所有對象都是不可變對象。在這段代碼中,s原先指向一個String對象,內容是 “Hello”,然后我們對s進行了+操作,那么s所指向的那個對象是否發生了改變呢?答案是沒有。這時,s不指向原來那個對象了,而指向了另一個 String對象,內容為”Hello world!”,原來那個對象還存在于內存之中,只是s這個引用變量不再指向它了。

68、String 和StringBuffer的區別
JAVA平臺提供了兩個類:String和StringBuffer,它們可以儲存和操作字符串,即包含多個字符的字符數據。String類表示內容不可改變的字符串。而StringBuffer類表示內容可以被修改的字符串。當你知道字符數據要改變的時候你就可以使用StringBuffer。典型地,你可以使用StringBuffers來動態構造字符數據。另外,String實現了equals方法,new String(“abc”).equals(new String(“abc”)的結果為true,而StringBuffer沒有實現equals方法,所以,new StringBuffer(“abc”).equals(new StringBuffer(“abc”)的結果為false。

69、StringBuffer與StringBuilder的區別
StringBuffer和StringBuilder類都表示內容可以被修改的字符串,StringBuilder是線程不安全的,運行效率高,如果一個字符串變量是在方法里面定義,這種情況只可能有一個線程訪問它,不存在不安全的因素了,則用StringBuilder。如果要在類里面定義成員變量,并且這個類的實例對象會在多線程環境下使用,那么最好用StringBuffer。

70、數組有沒有length()這個方法? String有沒有length()這個方法?
數組沒有length()這個方法,有length的屬性。String有有length()這個方法。

71、下面的程序代碼輸出的結果是多少?

public class  smallT
{
    public static void  main(String args[])
    {
        smallT t  = new  smallT();
        int  b  =  t.get();
        System.out.println(b);
    }

    public int  get()
    {
        try
        {
            return 1 ;
        }
        finally
        {
            return 2 ;
        }
    }
}

返回的結果是2。

72、設計4個線程,其中兩個線程每次對j增加1,另外兩個線程對j每次減少1。寫出程序。

以下程序使用內部類實現線程,對j增減的時候沒有考慮順序問題。 
public class ThreadTest1 
{ 
private int j; 
public static void main(String args[]){ 
   ThreadTest1 tt=new ThreadTest1(); 
   Inc inc=tt.new Inc(); 
   Dec dec=tt.new Dec(); 
   for(int i=0;i<2;i++){ 
       Thread t=new Thread(inc); 
       t.start(); 
           t=new Thread(dec); 
       t.start(); 
       } 
   } 
private synchronized void inc(){ 
   j++; 
   System.out.println(Thread.currentThread().getName()+"-inc:"+j); 
   } 
private synchronized void dec(){ 
   j--; 
   System.out.println(Thread.currentThread().getName()+"-dec:"+j); 
   } 
class Inc implements Runnable{ 
   public void run(){ 
       for(int i=0;i<100;i++){ 
       inc(); 
       } 
   } 
} 
class Dec implements Runnable{ 
   public void run(){ 
       for(int i=0;i<100;i++){ 
       dec(); 
       } 

73、heap和stack有什么區別。
java的內存分為兩類,一類是棧內存,一類是堆內存。棧內存是指程序進入一個方法時,會為這個方法單獨分配一塊私屬存儲空間,用于存儲這個方法內部的局部變量,當這個方法結束時,分配給這個方法的棧會釋放,這個棧中的變量也將隨之釋放。
堆是與棧作用不同的內存,一般用于存放不放在當前方法棧中的那些數據,例如,使用new創建的對象都放在堆里,所以,它不會隨方法的結束而消失。方法中的局部變量使用final修飾后,放在堆中,而不是棧中。
74、寫一單實例類要求精簡、清晰。

懶漢模式:
public class SingletonDemo {
    private static SingletonDemo instance;
    private SingletonDemo(){

    }
    public static SingletonDemo getInstance(){
        if(instance==null){
            instance=new SingletonDemo();
        }
        return instance;
    }
}
#如上,通過提供一個靜態的對象instance,利用private權限的構造方法和getInstance()方法來給予訪問者一個單例。

75、一列數的規則如下: 1、1、2、3、5、8、13、21、34…… 求第30位數是多少, 用遞歸算法實現

public class Test {  

    public static void main(String[] args) {  
        System.out.println("結果是:"+Test.foo(30));  
    }  

    /** 
     * 遞歸算法實現 
     */  
    public static int foo(int i){  
        if(i<=0)  
            return 0;  
        else if(i>0 && i<=2)  
            return 1;  
        return foo(i-1) + foo(i-2);  
    }  
}  

76、

/*
    面試題:final修飾局部變量的問題
        基本類型:基本類型的值不能發生改變。
        引用類型:引用類型的地址值不能發生改變,但是,該對象的堆內存的值是可以改變的。
        結果:100
             10
   --------------
             10
             100
   --------------
             10
             100
*/
class Student {
    int age = 10;
}

class FinalTest {
    public static void main(String[] args) {
        //局部變量是基本數據類型
        int x = 10;
        x = 100;
        System.out.println(x);
        final int y = 10;
        //無法為最終變量y分配值
        //y = 100;
        System.out.println(y);
        System.out.println("--------------");

        //局部變量是引用數據類型
        Student s = new Student();
        System.out.println(s.age);
        s.age = 100;
        System.out.println(s.age);
        System.out.println("--------------");

        final Student ss = new Student();
        System.out.println(ss.age);
        ss.age = 100;
        System.out.println(ss.age);

        //重新分配內存空間
        //無法為最終變量ss分配值
        ss = new Student();
    }
}

77、多態中成員訪問的特點

/*
    多態:同一個對象(事物),在不同時刻體現出來的不同狀態。
    舉例:
        貓是貓,貓是動物。
        水(液體,固體,氣態)。

    多態的前提:
        A:要有繼承關系。
        B:要有方法重寫。
            其實沒有也是可以的,但是如果沒有這個就沒有意義。
                動物 d = new 貓();//讀的時候從右往左讀(也可以這樣理解貓是new出來的對象,
                而左邊是一個類。所以就相當于判斷一個對象是不是這個類的實例)貓是貓,貓是動物。
                d.show();
                動物 d = new 狗();
                d.show();
        C:要有父類引用指向子類對象。
            父 f =  new 子();

    用代碼體現一下多態。

    多態中的成員訪問特點:
        A:成員變量
            編譯看左邊,運行看左邊。
        B:構造方法
            創建子類對象的時候,訪問父類的構造方法,對父類的數據進行初始化。
        C:成員方法
            編譯看左邊,運行看右邊。
        D:靜態方法
            編譯看左邊,運行看左邊。
            (靜態和類相關,算不上重寫,所以,訪問還是左邊的)

        由于成員方法存在方法重寫,所以它運行看右邊。
*/
class Fu {
    public int num = 100;

    public void show() {
        System.out.println("show Fu");
    }

    public static void function() {
        System.out.println("function Fu");
    }
}

class Zi extends Fu {
    public int num = 1000;
    public int num2 = 200;

    public void show() {
        System.out.println("show Zi");
    }

    public void method() {
        System.out.println("method zi");
    }

    public static void function() {
        System.out.println("function Zi");
    }
}

class DuoTaiDemo {
    public static void main(String[] args) {
        //要有父類引用指向子類對象。
        //父 f =  new 子();
        Fu f = new Zi();
        System.out.println(f.num);
        //找不到符號
        //System.out.println(f.num2);

        f.show();
        //找不到符號
        //f.method();
        f.function();
    }
}






總結

以上是生活随笔為你收集整理的Java笔试题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

久久成人精品电影 | 亚洲精品午夜视频 | 六月婷婷久香在线视频 | 国产福利91精品一区 | 精品一区二区电影 | 深夜精品福利 | 久草在线手机观看 | 97视频在线观看播放 | 色综合久久中文字幕综合网 | 日韩精品一区二区三区三炮视频 | 亚洲理论在线观看电影 | 久久精品一区二区国产 | 国产最新在线视频 | 免费av影视 | 国产精品一区免费在线观看 | 嫩嫩影院理论片 | 色综合久久88色综合天天6 | 中文字幕日韩有码 | 久草com| 日韩va在线观看 | 亚洲乱码中文字幕综合 | 亚洲激情六月 | 日韩免费不卡av | 97视频免费观看2区 亚洲视屏 | 国产成人亚洲在线观看 | 久久国产精品99国产 | 丁香花在线视频观看免费 | 色资源中文字幕 | 久久久久免费 | 日本中文不卡 | 久久欧美综合 | 色视频网站在线观看一=区 a视频免费在线观看 | www.久久色| www操操操| 日韩中文字幕a | 人人澡人人舔 | 久久成人亚洲欧美电影 | 一区二区激情视频 | 国产一区免费 | 亚洲精品资源在线 | 在线视频 国产 日韩 | 超碰公开在线观看 | 日韩激情中文字幕 | 欧美一级大片在线观看 | www.在线观看视频 | 在线影视 一区 二区 三区 | 亚洲国产高清在线观看视频 | 日韩最新在线视频 | 日韩一级电影在线观看 | 免费日韩电影 | 亚洲精品视频在线观看免费视频 | 国产日韩中文字幕 | 国产区在线 | 国产高清视频在线播放一区 | 最新国产精品久久精品 | 亚洲欧美国产日韩在线观看 | 在线国产能看的 | 国产精品久久久久久久久久久久午夜 | 西西大胆啪啪 | 在线看片视频 | 亚洲成人av影片 | 国产亚洲成av人片在线观看桃 | 免费观看十分钟 | 国产精品999久久久 久产久精国产品 | 最近在线中文字幕 | 国产精品毛片久久久久久 | 国产精品热 | 最近中文字幕免费 | 国产精品视频在线观看 | 国产精品中文字幕在线观看 | 九色琪琪久久综合网天天 | 国产精品123 | 亚洲天天做 | 久久成人综合 | 日本在线成人 | 天天天干天天天操 | 高清av免费一区中文字幕 | avwww在线| 99久久精品国产一区二区成人 | 最近2019好看的中文字幕免费 | 五月天久久激情 | 国产精品二区在线观看 | 亚洲精品在线观 | 久久免费国产 | 九九久久影院 | 美女视频黄免费网站 | 日本中文在线观看 | 久久成人视屏 | 8x成人免费视频 | 中文有码在线视频 | 91av在线精品 | 久草在线免费看视频 | 天天爱天天操天天射 | 青草视频免费观看 | 国产又黄又猛又粗 | 91精品国自产在线 | 911香蕉视频 | 国产成人久久av977小说 | 国产精品永久在线观看 | 91精品国产欧美一区二区成人 | 亚洲一级久久 | 一区二区三区国产欧美 | 国产色女人 | 五月婷在线观看 | 国产精品美女 | 在线观看蜜桃视频 | 久久尤物电影视频在线观看 | 亚洲第二色 | 中文字幕国内精品 | 国产特级毛片 | 四虎5151久久欧美毛片 | 国内小视频在线观看 | 婷婷国产一区二区三区 | 97精品超碰一区二区三区 | 99热在| 欧美美女视频在线观看 | 久久国产精品免费一区 | 国产精品欧美在线 | 亚洲一区二区精品3399 | 久草免费看 | 香蕉影院在线 | 欧美日韩亚洲第一 | 久久久久久蜜桃一区二区 | 亚洲美女在线国产 | 美女啪啪图片 | 在线观看国产亚洲 | 欧洲激情在线 | 一级片黄色片网站 | 天堂av中文字幕 | 国产一区二区三区在线免费观看 | 国产不卡一区二区视频 | 久久99影院 | 国产精品 久久 | 激情视频在线高清看 | 99爱精品视频 | 99在线热播精品免费 | 中文字幕国产精品 | 草免费视频 | 成人动漫一区二区三区 | 7777精品伊人久久久大香线蕉 | 在线观看91av | 99精品国产福利在线观看免费 | 欧美日韩一区二区三区不卡 | 日韩激情免费视频 | 国产在线国产 | 亚洲精品视频一二三 | 亚洲综合成人婷婷小说 | 久久久私人影院 | 久久久久女人精品毛片 | 国产免费久久 | 国产精品女人久久久 | 麻豆av一区二区三区在线观看 | 国产91精品一区二区绿帽 | 久草在线综合网 | 久久久久久久看片 | 97视频在线免费播放 | 国产韩国日本高清视频 | 久久九九视频 | 日韩和的一区二在线 | 天天射天天 | 免费在线黄网 | 欧美日韩一区二区视频在线观看 | 天天搞天天 | 日韩网站免费观看 | 日日夜夜精品网站 | 在线观看黄色免费视频 | 91av九色| 99999精品| 久久综合狠狠综合久久激情 | 亚洲精品黄网站 | 欧美日韩性 | 亚洲,播放 | 97超碰在线免费观看 | 91免费高清观看 | 黄色免费在线视频 | 久久精品国产一区 | 玖玖视频 | 黄色成人av在线 | 欧美一级黄色视屏 | 天天艹天天 | 亚洲精品高清视频在线观看 | 日韩区欧美久久久无人区 | 国产黄网站在线观看 | 97热久久免费频精品99 | 激情欧美日韩一区二区 | 免费观看一级成人毛片 | 亚洲欧洲视频 | 国产福利专区 | 久久久受www免费人成 | 成人黄色小说视频 | 激情亚洲综合在线 | 国际精品网 | 久久精品老司机 | 人人草天天草 | 国产精品对白一区二区三区 | 亚洲国产成人久久综合 | 伊人久久一区 | 亚洲综合一区二区精品导航 | 久久免费精品一区二区三区 | 国产手机在线播放 | 国产精品你懂的在线观看 | 中文字幕一区二区三区在线观看 | av中文字幕免费在线观看 | 一区二区精品久久 | 婷婷色六月天 | 丁香在线观看完整电影视频 | 999日韩| 婷婷色视频 | 免费 在线 中文 日本 | 婷婷伊人综合 | 久久久亚洲影院 | 精品国产福利在线 | 亚洲最大免费成人网 | 一区在线免费观看 | 天天色天天上天天操 | 在线视频日韩一区 | 欧美成人精品欧美一级乱黄 | 蜜臀av性久久久久av蜜臀妖精 | 国产精品久久久久久久久久直播 | 国产精品 久久 | 97超碰人人模人人人爽人人爱 | 丁香激情综合 | 久久中文网 | 最新影院 | 韩国av免费看 | 国产精品久久久久久久久久久杏吧 | 成人黄色大片 | 午夜国产福利在线 | 欧美精品久久久久久久免费 | 亚洲精品456在线播放第一页 | 在线播放一区二区三区 | 亚州精品在线视频 | 亚洲精品国久久99热 | 欧美va天堂va视频va在线 | 三上悠亚一区二区在线观看 | www.亚洲精品 | 亚洲欧洲日韩在线观看 | 麻豆一精品传二传媒短视频 | 91精品999| 91大神dom调教在线观看 | 久热只有精品 | 欧美极品xxx| 日韩中文字幕国产精品 | 国产精品观看视频 | 午夜视频播放 | 久草在线最新免费 | 99c视频高清免费观看 | 中文字幕观看在线 | 婷婷视频在线播放 | 成人免费色 | 五月色综合 | 国产亚洲永久域名 | 就操操久久 | 亚洲成人av一区 | 成人在线视频一区 | 国产裸体永久免费视频网站 | 国产黄在线播放 | 天天操天天操天天操天天操天天操 | 欧美国产亚洲精品久久久8v | 国产 欧美 日产久久 | 久久成熟| 特级黄色片免费看 | 中文字幕 国产 一区 | 高清av免费看 | 99视频网站 | 黄色日本免费 | 亚洲午夜av久久乱码 | 国产美女精品人人做人人爽 | 日韩成人精品一区二区三区 | japanese黑人亚洲人4k | 成人黄色中文字幕 | 夜夜操夜夜干 | 成人四虎影院 | 亚洲91精品在线观看 | 超碰国产在线 | 久精品视频 | ww亚洲ww亚在线观看 | 免费久久99精品国产婷婷六月 | 国产精品成人av在线 | 亚洲国产高清在线观看视频 | 欧美在线视频一区二区三区 | 一区精品在线 | 亚洲久在线 | 亚洲视屏| 中文字幕亚洲在线观看 | 婷婷色综合 | 国产成人精品一区二三区 | 久草久草视频 | 色婷婷色 | 激情网站五月天 | 91在线区| 在线免费观看国产精品 | 激情影院在线 | 亚洲伦理一区二区 | 天堂网一区二区三区 | 国产中文字幕在线观看 | 夜夜夜精品 | 麻豆视频免费看 | 色综合婷婷| 夜夜澡人模人人添人人看 | 欧美视频二区 | 手机在线观看国产精品 | 国产91aaa| 国产精品福利无圣光在线一区 | 国产婷婷在线观看 | 中文字幕乱偷在线 | 在线观av | 国产精品一区二区在线观看 | 黄色福利| 国产黄色在线网站 | 久久精品这里都是精品 | 日日操操操 | 2017狠狠干| 日韩三级久久 | 99色视频 | 五月婷婷网站 | 日本激情动作片免费看 | 色婷婷激情五月 | 久久久麻豆精品一区二区 | 丁香综合网 | 国产成人精品一区二区三区 | 97色在线观看 | 成人免费在线视频 | 99热精品在线观看 | 日韩精品免费一区二区在线观看 | 亚洲区二区 | 香蕉视频导航 | 欧美在线观看小视频 | 伊人久久精品久久亚洲一区 | 国内精品视频久久 | 黄色片软件网站 | 精品字幕在线 | 日韩在线小视频 | 久久久国产精品成人免费 | 中文字幕亚洲在线观看 | 成年人av在线播放 | 亚洲精品看片 | 欧美成a人片在线观看久 | 国产精品麻豆视频 | 精品黄色视 | 天天射网站 | 狠狠躁天天躁 | 久久精品视频在线观看免费 | 久久精品播放 | 久久精品久久精品 | 亚洲伦理一区二区 | 日韩av免费一区二区 | 91精品视频免费 | 麻豆传媒视频在线免费观看 | 久久久免费视频播放 | 97理论电影 | 亚洲视频每日更新 | 91av小视频 | 午夜精品久久久久99热app | 日韩精品久久久免费观看夜色 | 91福利区一区二区三区 | 最新日韩视频在线观看 | aaa亚洲精品一二三区 | av专区在线| 日日夜夜人人天天 | 丁香激情综合 | 亚洲国产黄色片 | 999久久国精品免费观看网站 | 国产高清 不卡 | 9ⅰ精品久久久久久久久中文字幕 | 97手机电影网 | 五月综合色婷婷 | 正在播放日韩 | 久热av在线| 国产精品久久久久久久久久免费看 | 97色在线观看 | 久久99久久99精品免观看粉嫩 | 麻豆94tv免费版 | 国产成人99av超碰超爽 | 99riav1国产精品视频 | 中文字幕在线日 | 亚洲永久精品一区 | 国产小视频免费观看 | 黄色免费网站 | 在线观看视频一区二区三区 | 中文字幕国产精品 | 麻豆免费在线播放 | 色婷婷国产精品一区在线观看 | 四虎影视精品成人 | 免费视频网 | 激情在线网站 | 成人免费在线观看入口 | 97久久精品午夜一区二区 | 日韩av一区二区三区四区 | 91成人网在线播放 | 日韩精品在线视频 | 国产成人精品av久久 | 天天操天天玩 | 91麻豆精品国产自产 | 国产高清在线精品 | 欧美大片mv免费 | 亚洲精品人人 | 欧美色黄| 久久国产美女视频 | 中文在线a在线 | 一区二区三区在线影院 | 欧美另类xxxxx | 中文字幕在线网址 | 午夜婷婷在线观看 | 在线中文字幕一区二区 | 99在线视频免费观看 | 香蕉免费 | 奇米777777| 一区精品在线 | 91视频一8mav| 欧美日韩一区二区在线 | 欧美性极品xxxx娇小 | 91成人破解版 | 亚洲视频观看 | 国产精品99久久久久 | 久久国产精品久久精品 | 国产精品一区在线播放 | 国产精品成人久久 | 黄色网址a | 久久精品一二区 | 在线免费av电影 | 91视频国产免费 | 在线视频免费观看 | 日韩在线观看的 | 天天操天天添天天吹 | 国产一区二区免费在线观看 | 午夜久久久久久久久久久 | 97人人艹| 俺要去色综合狠狠 | 天天操天天摸天天干 | 久久国产精品系列 | 又色又爽又黄 | 久久综合五月婷婷 | 麻豆精品传媒视频 | 午夜av在线免费 | 99欧美| 日日爱网站 | 午夜在线免费观看 | 亚洲精品综合欧美二区变态 | 亚洲欧美va | 日韩美在线观看 | 97成人精品区在线播放 | 91.麻豆视频 | 激情av在线资源 | 手机在线永久免费观看av片 | 中文字幕在线久一本久 | 久久国产色 | 丁香高清视频在线看看 | 国产成人在线免费观看 | 国产福利a | 国产高清视频在线 | 天天射天天干天天操 | 国产麻豆精品传媒av国产下载 | 一区二区三区在线电影 | 婷婷丁香社区 | 成人欧美一区二区三区黑人麻豆 | av黄在线播放| 亚洲精品视频二区 | 97狠狠操| 国产a级免费| www色综合 | 中文字幕国内精品 | 91精品国产99久久久久 | 丝袜美腿在线视频 | 国产成人精品午夜在线播放 | 久久免费电影网 | 欧美另类sm图片 | 久久久久久久久久免费 | 国产精品videossex国产高清 | 久草视频免费在线观看 | 欧美 日韩精品 | 久久久国产精品电影 | 99高清视频有精品视频 | 在线电影a | 99视频在线精品免费观看2 | 亚洲一级片免费观看 | 国产男女免费完整视频 | 久久精品91久久久久久再现 | 免费三级在线 | 黄色片视频在线观看 | 高清av免费一区中文字幕 | 精品久久1 | 伊甸园永久入口www 99热 精品在线 | 久久久免费观看视频 | 国产免费一区二区三区最新 | 毛片一区二区 | 在线观看免费av网 | 欧美一级视频在线观看 | 国产黄色在线 | 色婷婷综合久久久 | 精品日本视频 | 亚洲人成人天堂h久久 | 蜜臀一区二区三区精品免费视频 | 国产97在线视频 | 成人久久综合 | 欧美日韩国产一区二区三区在线观看 | 成人aaa毛片 | 在线观影网站 | 久久国产精品系列 | 韩日av一区二区 | 日本久久精品视频 | 日韩精品视频久久 | 又爽又黄又无遮挡网站动态图 | 免费三级影片 | av片中文字幕 | 91看片在线观看 | 成人97视频一区二区 | 日本aaa在线观看 | 欧美成人黄 | 久久亚洲私人国产精品 | 91探花视频 | 视频在线国产 | 日韩精品中文字幕在线观看 | 狠狠色狠狠色合久久伊人 | 免费国产一区二区视频 | 精品伦理一区二区三区 | 蜜臀精品久久久久久蜜臀 | 91片网 | 精品久久久久久久久久久久久 | 久久婷婷亚洲 | 99精品免费久久久久久久久日本 | 在线看欧美 | 亚洲精品视频免费看 | 日本久久中文 | 开心激情久久 | 日韩四虎 | 免费成人av在线看 | 国产麻豆精品免费视频 | 成人中文字幕av | 日韩精品欧美视频 | 国产高清在线不卡 | 91在线网站| 91大片网站| 久久国产精品99久久久久久丝袜 | www黄| 日日爱影视| 免费亚洲婷婷 | 亚洲国产精品va在线看黑人 | 开心婷婷色 | 色婷婷av一区二 | 一区久久久 | 国产精品一区二区美女视频免费看 | 天天做天天爱天天爽综合网 | 久久伦理| 天天综合天天综合 | 97色视频在线 | 欧美a级在线播放 | 色停停五月天 | 免费观看高清 | 久久天天躁狠狠躁夜夜不卡公司 | 欧美日韩精品二区第二页 | 最新国产精品视频 | 精品乱码一区二区三四区 | 日韩特黄一级欧美毛片特黄 | 欧美一级日韩三级 | 国产黄色片一级三级 | av高清不卡 | 午夜久草| 91人人澡人人爽人人精品 | free. 性欧美.com | 成人久久影院 | av在线播放免费 | 亚洲日本在线一区 | 亚洲黄色网络 | 午夜视频在线观看一区二区三区 | 国产一区二区视频在线 | 国产在线看一区 | 超碰97公开 | 黄色片视频在线观看 | 国内精品久久久久影院优 | 亚洲综合激情网 | 黄色一级免费 | 六月丁香六月婷婷 | 国产精品国产自产拍高清av | 国产在线 一区二区三区 | 欧美精品在线视频观看 | 免费国产黄线在线观看视频 | 久久激情小视频 | 怡红院av久久久久久久 | 日韩艹 | 天堂va在线观看 | 久久99亚洲精品久久 | 国产韩国精品一区二区三区 | 中文字幕在线影视资源 | 久久精品亚洲精品国产欧美 | 狠狠色丁香婷婷综合久小说久 | 国语麻豆 | 日本久久久久久久久久 | 在线导航av | 欧美一区二区在线 | 欧美不卡视频在线 | 久久99视频免费观看 | 美女免费黄网站 | 精品国产一区二区三区av性色 | 91av99 | 2019天天干夜夜操 | 国产日韩欧美在线播放 | 久久狠狠婷婷 | 久久精品福利 | 日韩亚洲精品电影 | 亚洲天天综合网 | 成人午夜剧场在线观看 | 伊人中文网 | 国产生活一级片 | 日本精品视频网站 | 日韩性片 | 六月丁香婷婷网 | 夜夜干夜夜 | 亚洲欧洲国产视频 | 亚洲综合在线发布 | 黄色小说视频网站 | 国产高清视频在线观看 | 国产精品99久久久久的智能播放 | 国产精品大片在线观看 | 六月激情 | 日韩二区在线播放 | 夜夜夜夜夜夜操 | 精品国产aⅴ一区二区三区 在线直播av | 黄av免费 | 中文字幕免费国产精品 | 91在线视频观看免费 | 国产精品免费观看国产网曝瓜 | 免费av高清 | 伊人网综合在线观看 | 亚洲精品玖玖玖av在线看 | 五月婷婷色| 久久久久免费精品国产 | 国产成人精品久 | 国产成人专区 | 人人澡人人草 | av电影在线不卡 | 免费看亚洲毛片 | 国产香蕉97碰碰碰视频在线观看 | 日韩一区二区三区免费电影 | 久久久久女教师免费一区 | 麻豆国产视频下载 | 91在线产啪 | 亚洲激情精品 | japanesefreesex中国少妇 | 伊人天堂网 | 成人h在线观看 | 91精品国产99久久久久久久 | www.av小说| 亚洲一级影院 | 91久久精品一区二区三区 | 亚洲精品午夜一区人人爽 | 久久国产精品99久久人人澡 | 99精品视频免费观看视频 | 男女视频久久久 | 97人人模人人爽人人喊网 | 丁香五香天综合情 | 天天天色综合a | 精品一区二区视频 | 久久综合婷婷综合 | 2023国产精品自产拍在线观看 | 国产97av| 国产系列在线观看 | 草久在线播放 | 国产91在线 | 美洲 | 九色91在线视频 | 国产69精品久久久久久 | 麻豆成人精品 | 亚洲精品 在线视频 | 在线看一级片 | 波多野结衣在线中文字幕 | 久久国产高清视频 | 三上悠亚在线免费 | 亚洲国产电影在线观看 | 美女久久久久久久久久 | 毛片视频电影 | 99精品视频在线观看免费 | 高潮久久久久久 | 日韩大片在线免费观看 | 99精品一区 | 国产精品一区二区在线观看 | 成年人免费观看在线视频 | 黄色一级影院 | 日本中文字幕一二区观 | 三三级黄色片之日韩 | 亚洲男男gaygayxxxgv | 国产成人黄色网址 | 中文字幕第一页av | 91精彩视频在线观看 | 成人97人人超碰人人99 | 亚洲一区二区三区毛片 | 久久免费av电影 | 日韩精品一卡 | 一区二区av | 激情 一区二区 | 国产成人免费精品 | 婷婷丁香激情五月 | 久久久免费少妇 | 久久综合九色99 | 国产精品视频你懂的 | 一级黄色在线视频 | 伊人久在线 | 一二区精品 | 日韩精品中文字幕在线 | 日韩欧美网址 | 中文字幕免费成人 | 国产精品综合在线观看 | 激情视频国产 | 日韩黄色一区 | 国产成人a亚洲精品 | 九九色网 | 亚洲精品成人av在线 | 国产一区二区免费看 | 黄av在线 | 成人黄色免费在线观看 | 午夜免费福利视频 | 日韩精品久久久免费观看夜色 | 色偷偷88888欧美精品久久 | 婷婷资源站 | 亚洲精品久久在线 | 久久国产精品99久久久久久进口 | 国产中年夫妇高潮精品视频 | 在线观看av免费 | 久久精品中文 | 91麻豆精品国产午夜天堂 | 韩国在线视频一区 | 激情伊人五月天久久综合 | 日韩天堂在线观看 | 久草视频免费观 | 欧美少妇18p | 免费黄a大片 | 激情视频网页 | 人人干干人人 | 中文字幕在线免费看线人 | 亚洲 欧洲 国产 日本 综合 | 日韩一区二区三区不卡 | 亚洲一区二区麻豆 | 国产精品久久久久久久久久久久 | 欧美网站黄色 | 亚洲区色| 精品国产91亚洲一区二区三区www | 国产尤物在线视频 | 精品视频免费播放 | 精品在线一区二区 | 狠狠做深爱婷婷综合一区 | 中文字幕一区二区三区精华液 | 成人影视片 | 人人澡人人模 | 精品一区免费 | 国产精品福利午夜在线观看 | 亚洲精品久久在线 | 伊人精品影院 | 国产精品资源在线观看 | 久久精品网站免费观看 | 日韩a在线观看 | 免费久久久久久久 | 91最新地址永久入口 | 四月婷婷在线观看 | 一区二区三区电影 | www.福利视频| 狠狠的操狠狠的干 | 99久在线精品99re8热视频 | 中文字幕精品视频 | 黄污网站在线观看 | 免费a视频在线 | 亚洲天堂精品 | 精品国自产在线观看 | 国产日韩视频在线播放 | 九九九热视频 | 亚州国产精品视频 | 97色噜噜| 欧洲亚洲精品 | 婷婷亚洲综合 | 人人爽人人干 | 国产视频二| 久草视频在线资源站 | 精品久久91 | 久久人操| 日韩三级在线观看 | 久久九九影视 | 国产亚洲精品久久久久久移动网络 | 97av免费视频 | 国产精品视频资源 | 最新色视频 | 欧美在线一级片 | 国产精品av免费在线观看 | 日日麻批40分钟视频免费观看 | 久久综合亚洲鲁鲁五月久久 | 在线播放91 | 久久久久视 | 国产精品18久久久久久久网站 | 日韩欧美在线播放 | 国产在线a视频 | 中文字幕欧美激情 | 欧美了一区在线观看 | 五月婷婷激情五月 | 国产精品视频全国免费观看 | 在线视频 成人 | 久久久久国产精品视频 | 国产美女网站在线观看 | 深爱激情亚洲 | 日韩成人黄色av | 欧美成年黄网站色视频 | 在线播放日韩av | 国产麻豆剧传媒免费观看 | 欧美午夜精品久久久久久孕妇 | 在线av资源 | 日韩av视屏在线观看 | 久艹视频免费观看 | 免费黄色a网站 | 六月丁香六月婷婷 | 99亚洲精品视频 | 精品欧美一区二区在线观看 | 国产99一区视频免费 | 99视频在线观看免费 | 久久狠狠干| 99在线热播精品免费99热 | av线上看 | 热精品| 91麻豆文化传媒在线观看 | 丁香久久综合 | 亚洲精品tv久久久久久久久久 | 日日干美女 | 国产一级免费播放 | www久久久久 | a级片在线播放 | 色综合久 | 国产精品久久久久久久久久久免费看 | 日韩欧美国产精品 | 操操日日 | 日日夜夜操av | 91精品久久久久久久久久入口 | 五月婷婷一级片 | 色六月婷婷 | v片在线看 | 欧美日韩xxxxx | 91av视频在线免费观看 | 91视视频在线直接观看在线看网页在线看 | 成人在线观看日韩 | 日日操日日插 | 夜夜视频 | 久久久91精品国产一区二区三区 | 97免费在线观看视频 | 91禁看片 | 在线免费黄色 | 精品久久久久久久久久久久久久久久 | 最近中文字幕完整视频高清1 | 久久久久电影网站 | 国产成人在线一区 | 久久欧洲视频 | 国产精品无av码在线观看 | 日本动漫做毛片一区二区 | 久久国产精品二国产精品中国洋人 | 成人精品电影 | 国产首页 | av在线直接看 | 狠狠色丁香婷婷综合橹88 | 亚洲精品在线播放视频 | 开心激情网五月天 | 久久免费视频6 | 亚洲最新精品 | 欧美在线一级片 | 国产啊v在线观看 | 欧美精品首页 | 国产成a人亚洲精v品在线观看 | 五月天综合激情 | 亚洲一区av | 亚洲一区二区三区精品在线观看 | 日韩免费一二三区 | 99精品国产aⅴ| 五月婷婷狠狠 | 精品久久久久国产 | 黄色片网站免费 | 顶级欧美色妇4khd | 亚洲女人天堂成人av在线 | 波多野结衣精品视频 | 操久久免费视频 | 久久久午夜剧场 | 亚洲精品视频免费在线观看 | 日韩,精品电影 | 日韩动漫免费观看高清完整版在线观看 | 在线观看免费黄色 | 看片的网址 | 亚洲成av人片在线观看香蕉 | 午夜精品电影一区二区在线 | 婷婷综合久久 | 成片免费观看视频999 | a级国产乱理伦片在线观看 亚洲3级 | 日日日日干 | 欧美精品国产综合久久 | 国产精品亚洲a | 激情视频免费在线 | 日韩网站免费观看 | 毛片一二区 | 精品国产99| 最新国产一区二区三区 | 国产永久网站 | 超碰在线9 | 日韩欧美在线播放 | 福利视频入口 | 久久久国内精品 | 四虎在线免费视频 | 视频成人永久免费视频 | 在线观看a视频 | 国产精品一区二区三区在线看 | 国产精品二区在线观看 | 欧美色噜噜| 99精品视频播放 | 国产不卡视频在线 | 久久久久久久久久久久久影院 | 久操97 | 亚洲六月丁香色婷婷综合久久 | 免费视频黄色 | 成人国产电影在线观看 | 毛片无卡免费无播放器 | 狠狠干夜夜操 | 久99久久 | 一级国产视频 | 日韩有码欧美 | 五月综合色 | 国产在线不卡一区 | 亚洲电影黄色 | 狠狠久久综合 | 日韩成人免费在线观看 | 操夜夜操 | 国产精品久久久免费看 | 男女视频久久久 | 国产精品毛片网 | 久久婷婷色综合 | 又紧又大又爽精品一区二区 | 精品高清美女精品国产区 | 国产黄色片网站 | 久久视频网 | 国产精品九色 | 亚洲国产天堂av | 国产亚洲视频系列 | 久久福利影视 | 三级黄免费看 | 美女视频黄网站 | 日韩在线免费电影 | 国产精品9区 | 婷婷亚洲五月色综合 | 午夜精品视频一区二区三区在线看 | 中文字幕在线看视频国产 | 精品国产乱码久久久久久久 | 国产精品h在线观看 | 国产精品每日更新 | 在线影视 一区 二区 三区 | 国产亚洲精品久久久久久久久久久久 | 日韩免费一区二区三区 | 丝袜美腿在线视频 | 色www. | 在线91播放| 最近日本韩国中文字幕 | 国产一二三四在线观看视频 | 丁香五月缴情综合网 | 在线观看中文字幕一区二区 | 国产一级片久久 | 午夜黄色| 96亚洲精品久久 | 一区 二区电影免费在线观看 | 91大神精品视频在线观看 | 天天干天天在线 | 午夜在线免费观看视频 | 国产精品网红直播 | 亚洲婷婷丁香 | 日日夜夜天天干 | 国产福利91精品 | 精品一区 在线 | 亚洲综合欧美精品电影 | 中文字幕在线久一本久 | 日本三级吹潮在线 | 日韩在线国产 | 在线免费观看视频一区二区三区 | 在线视频 成人 | 最新av网址在线 | 天天综合精品 | 亚洲精品久久久久999中文字幕 | 精品亚洲国产视频 | 伊人久操| 欧美日韩视频在线观看一区二区 | 手机在线欧美 | 亚洲 欧美 变态 国产 另类 | 狠狠色噜噜狠狠狠狠2021天天 | 色播五月激情综合网 | 欧美日韩一二三四区 | 99免费在线播放99久久免费 | 久久五月天色综合 | 欧美亚洲国产一卡 | 91亚洲国产成人久久精品网站 | 免费网站在线观看成人 | 香蕉蜜桃视频 | 久久综合久久综合九色 | 欧美日韩国产综合网 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 亚洲精品视频一 | 亚洲激情影院 | 成人精品视频久久久久 | 夜色资源站wwwcom | 中文永久免费观看 | 中文字幕大全 | 天天操福利视频 | 欧美污在线观看 | 久久久精品日本 |