免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Java必備基礎(chǔ)知識(shí)點(diǎn)(超全)

Java基礎(chǔ)

1、 簡述Java的基本歷史

java起源于SUN公司的一個(gè)GREEN的項(xiàng)目,其原先目的是:為家用消費(fèi)電子產(chǎn)品發(fā)送一個(gè)信息的分布式代碼系統(tǒng),通過發(fā)送信息控制電視機(jī)、冰箱等

2、 簡單寫出Java特點(diǎn),寫出5個(gè)以上,越多越好

簡單的、面向?qū)ο蟮?、分布式的、安全的、穩(wěn)定的、與平臺(tái)無關(guān)的、可解釋的、多線的、動(dòng)態(tài)的語言。

3、 什么是Java?

JAVA:一種編程語言

          一種開發(fā)環(huán)境

          一種應(yīng)用環(huán)境

          一種部署環(huán)境

4、 請(qǐng)寫出Java的版本分類,以及每種版本的應(yīng)用方向

三種版本:

   JME:是面向內(nèi)存有限的移動(dòng)終端. 為消費(fèi)性產(chǎn)品設(shè)計(jì)的;

   JSE: 是SUN公司針對(duì)桌面開發(fā)和低端商務(wù)計(jì)算方案開發(fā)的版本。為筆記本電腦、PC機(jī)設(shè)計(jì)的;

   JEE: 是一種利用JAVA 2平臺(tái)來簡化企業(yè)解決方案的開發(fā)、部署和管理相關(guān)的復(fù)雜問題的體系結(jié)構(gòu)。 為企業(yè)級(jí)的、服務(wù)器端的高端應(yīng)用而設(shè)計(jì)的;

5、 描述Java技術(shù)的主要特性

java虛擬機(jī)

   垃圾回收

   代碼安全性

如果你想學(xué)習(xí)Java可以來這個(gè)群,首先是二二零,中間是一四二,最后是九零六,里面有大量的學(xué)習(xí)資料可以下載。

6、 描述 Java虛擬機(jī)的功能

(1)通過 ClassLoader 尋找和裝載 class 文件

(2)解釋字節(jié)碼成為指令并執(zhí)行,提供 class 文件的運(yùn)行環(huán)境

(3)進(jìn)行運(yùn)行期間垃圾回收

(4)提供與硬件交互的平臺(tái)

7、 簡述Java代碼安全性

(1)編譯時(shí)的錯(cuò)誤檢驗(yàn)

(2)類裝載檢查,把本機(jī)上的類和網(wǎng)絡(luò)資源類相分離,在調(diào)入類的時(shí)候進(jìn)行檢查,因而可以限制任何“特洛伊木馬”的應(yīng)用

(3)字節(jié)碼校驗(yàn)

(4)沙箱機(jī)制,限定訪問權(quán)限

8、 描述Java垃圾回收機(jī)制

Java 編程語言解除了程序員釋放內(nèi)存的責(zé)任。它可提供一種系統(tǒng)級(jí)線程以跟蹤每一次內(nèi)存的分配情況。在 Java 虛擬機(jī)的空閑周期,垃圾收集線程檢查并釋放那些可被釋放的內(nèi)存。垃圾收集在 Java 技術(shù)程序的生命周期中自動(dòng)進(jìn)行,它解除了釋放內(nèi)存的要求,這樣能夠有效避免內(nèi)存漏洞和內(nèi)存泄露(內(nèi)存泄露就是程序運(yùn)行期間,所占用的內(nèi)存一直往上漲, 很容易造成系統(tǒng)資源耗盡而降低性能或崩潰 。

垃圾回收有以下特點(diǎn):

(1)垃圾回收是一個(gè)自動(dòng)的系統(tǒng)行為,程序員不能控制垃圾回收的功能和行為。

(2)有一些跟垃圾回收相關(guān)的方法,比如:System.gc( ) ,調(diào)用這些方法,僅僅是在通知垃圾回收程序,至于垃圾回收程序運(yùn)不運(yùn)行,什么時(shí)候運(yùn)行,都是無法控制的。

(3)程序員可以通過設(shè)置對(duì)象為 null,來標(biāo)示某個(gè)對(duì)象不再被需要了, 這只是表示這個(gè)對(duì)象可以被回收了,并不是馬上被回收。

9、 簡述Java代碼的運(yùn)行過程

   (1)編寫代碼

(2)編譯

(3)類裝載   通過類裝載器裝載CLASS文件

(4)校驗(yàn)代碼   由字節(jié)碼校驗(yàn)

(5)解釋   由解釋器將字節(jié)碼轉(zhuǎn)換成機(jī)器碼

(6)運(yùn)行

10、 簡述如何搭建Java開發(fā)環(huán)境

首先下載安裝JDK 然后配置環(huán)境 

    (1)配置PATH,  操作系統(tǒng)運(yùn)行環(huán)境的路徑

(2)配置CLASSPATH  JAVA運(yùn)行應(yīng)用程序時(shí)所需要的類包的路徑

    (3)配置JAVA_HOME   供需要運(yùn)行JAVA的程序使用

11、 簡述classpath,path,JAVA_HOME的意義和配置方法

path          操作系統(tǒng)運(yùn)行環(huán)境的路徑

classpath      JAVA運(yùn)行應(yīng)用程序時(shí)所需要的類包的路徑

JAVA_HOME  供需要運(yùn)行JAVA的程序使用

12、 請(qǐng)描述:一個(gè)完整的Java文件的代碼分幾個(gè)部分,每部分都起什么作用,大致的寫法

package 當(dāng)前類所在位置 

   import  當(dāng)前類運(yùn)行時(shí)所需要的包或類

   public class 類名 {

        屬性定義;

        方法定義:

        構(gòu)造方法定義;

        public static void main(String args []) 例外{   程序入口

          語句;

        }

}

   //注釋 

13、 Java代碼的注釋有幾種?分別舉例說明

(1)  //  單行注解

   (2)  /*     */ 塊注釋

   (3)  /* *

         *  文檔注釋

           */

14、 什么是Java代碼的語句,什么是Java代碼的塊,舉例說明

語句 是一行以分號(hào)終止的代碼,例:int a;

塊 是以{ }為邊界的一些語句的集合 例:public void tt( ){}

15、 什么是標(biāo)示符?

標(biāo)識(shí)符:是賦予變量、類、方法的名稱。

//標(biāo)識(shí)符是標(biāo)識(shí)變量、類或方法的有效字符序列

16、 標(biāo)示符定義的規(guī)則?

(1) 首字母只能以字母、下劃線、$開頭,其后可以跟字母‘下劃線、$和數(shù)字配置CLASSPATH 

(2) 表示符不能是關(guān)鍵字

(3) 標(biāo)識(shí)符區(qū)分大小寫

17、 什么是關(guān)鍵字?

關(guān)鍵字就是編程語言與機(jī)器語言的編碼約定

18、 true、false、null、sizeof、goto、const那些是Java關(guān)鍵字

true 、false 、null    為JAVA的關(guān)鍵字

19、 Java的基本數(shù)據(jù)類型有幾種?分別是?

short int long  boolean float double char byte

/*布爾類型(boolean)

字符型(char)

數(shù)值類型

定點(diǎn)類型 字節(jié)型(byte)

短整型(short)

整型(int)

長整型(long)

浮點(diǎn)類型    單精度(float)

雙精度(double)

20、 請(qǐng)寫出每種基本類型的默認(rèn)值?取值范圍?分別給出一個(gè)定義的例子

默認(rèn)值            取值范圍             示例

   字節(jié)型 :  0                -2^7----2^7-1          byte b=10;

   字符型 :  ' \u0000'            0----2^16-1    char c=’c’ ;

   short  :    0                 -2^15----2^15-1        short s=10;

   int    :    0                 -2^31----2^31-1        int i=10;

   long   :    0                -2^63----2^63-1          long o=10L;

   float  :     0.0f               -2^31----2^31-1        float f=10.0F

   double :    0.0d              -2^63----2^63-1         double d=10.0;

   boolean:    false              true\false              boolean flag=true;

21、 在基本類型中,如果不明確指定,整數(shù)型的默認(rèn)是什么類型?帶小數(shù)的默認(rèn)是什么類型?

整數(shù)類型 默認(rèn)為  int

帶小數(shù)的默認(rèn)為   double

boolean的默認(rèn)值   false

22、 如何定義float類型和long型

float f = 1.2f

    long  l = 1.2L

23、 什么是變量?

變量是用來引用一塊內(nèi)存區(qū)域或一個(gè)值,用標(biāo)識(shí)符來表示,可以通過操作變量來操作變量所對(duì)應(yīng)的內(nèi)存區(qū)域或值塊的值。

24、 變量的定義規(guī)則?

(1) 以字母、$、下劃線開頭,其后可以跟字母、下劃線、$和數(shù)字;

(2) 首字母小寫,中間單詞用大寫字母隔開;

(3) 名稱具有一定含義;

//4.可以先聲明再賦值也可以聲明的同時(shí)進(jìn)行賦值

//5.沒有賦值的變量是不可以使用的

25、 請(qǐng)寫出Java編碼約定中對(duì)下列部分的要求:類、屬性、方法、包、文件名、變量、常量、控制結(jié)構(gòu)、語句行、注釋

類:    一個(gè)類文件中類名要和文件名相同,類名一定要以大寫字母開頭,單詞之間用大寫字母分隔

    屬性:  屬性名首字母小寫,中間用大寫字母隔開。

    方法:  方法名首字母小寫,中間用大寫字母隔開。

    包:    引用包必須寫在類文件的開頭,有且只能有一個(gè)包,全部用小寫字母。

    控制結(jié)構(gòu):當(dāng)語句是控制結(jié)構(gòu)的一部分時(shí),即使是單個(gè)語句,也應(yīng)使用大括號(hào)將語句封閉。

    語句行:每行只寫一個(gè)語句,并使用四個(gè)縮進(jìn)的空格,使代碼更易讀,注意用分號(hào)結(jié)束。

注釋:  用注釋來說明那些不明顯代碼的段落。

常量: 常量名一般用大寫字母,單詞之間用下劃線分隔,一旦賦值不允許修改。

26、 什么是Javadoc?

按照一定格式生成程序的文檔的工具。

27、 什么是引用類型?

用戶定義類型, 它可引用類和數(shù)組。

除去基本數(shù)據(jù)類型的其他類型都是引用數(shù)據(jù)類型。

28、 什么是按值傳遞?什么是按引用傳遞?

按值傳遞:就是將該值的副本傳過去(基本數(shù)據(jù)類型+String類型的傳遞,就是按值傳遞)

按引用傳遞:就是將值的內(nèi)存地址傳過去(除基本數(shù)據(jù)類型+String以外類型的傳遞,就是引用傳遞)

 如果你想學(xué)習(xí)Java可以來這個(gè)群,首先是二二零,中間是一四二,最后是九零六,里面有大量的學(xué)習(xí)資料可以下載。

29、 如何創(chuàng)建一個(gè)新對(duì)象?如何使用對(duì)象中的屬性和方法?

使用new 關(guān)鍵字來創(chuàng)建一個(gè)新的對(duì)象;

    通過對(duì)象的實(shí)例用“.”(點(diǎn))來調(diào)用對(duì)象中的屬性和方法;

    靜態(tài)的方法和屬性,也可以直接用類名“.”(點(diǎn))來調(diào)用;

30、 簡述new關(guān)鍵字所做的工作

new 創(chuàng)建一個(gè)對(duì)象,并為對(duì)象分配一塊內(nèi)存。

31、 簡述”=” 和”= =”的功能和區(qū)別

'=' 賦值,

'= ='當(dāng)比較基本數(shù)據(jù)類型的時(shí)候,判斷前后兩個(gè)值是否相等;

當(dāng)比較引用數(shù)據(jù)類型的時(shí)候,判斷= =前后兩個(gè)值的內(nèi)存地址是否相等;   

區(qū)別:

    = :為賦值表達(dá)式

    = = :為邏輯表達(dá)式

32、 什么是實(shí)例變量?什么是局部變量?什么是類變量?什么是final變量?

實(shí)例變量:  類中定義的變量,即類成員變量,如果沒有初始化,會(huì)有默認(rèn)值;

   局部變量:  在方法中定義的變量,必須初始化;

   類變量:    用static修飾的屬性;

   final變量:  用final 修飾的變量, 

33、 簡述上述各種變量的定義規(guī)則和使用規(guī)則?

實(shí)例變量: 不需要static關(guān)鍵字來聲明,需要類的實(shí)例(對(duì)象)調(diào)用(用“.”);

類變量: 用static修飾,可以用類名調(diào)用,也可以用類的實(shí)例調(diào)用;

   局部變量: 在方法內(nèi)任意定義變量即為局部變量;

   final變量: 一旦賦值,不可以再修改的變量;

final屬性只允許賦值一次,且只能通過構(gòu)造方法賦值,定義后也就是一個(gè)常量;

final修飾的變量,只允許賦值一次

34、 a++和++a的區(qū)別?

a++ : 先使用,后加1

 ++a : 先加1,后使用

35、 請(qǐng)描述instanceof、:、&、&&各自的功能

instanceof :用來判斷某個(gè)實(shí)例變量是否屬于某種類的類型。

      : 三目運(yùn)算符:   

      表達(dá)式1?表達(dá)式2:表達(dá)式3

      如果表達(dá)式1為true,執(zhí)行表達(dá)式2,否則執(zhí)行表達(dá)式3

     &: 位運(yùn)算:按位與  |    

  &&: 邏輯運(yùn)算:邏輯與

36、 請(qǐng)描述>>、、>>>的功能

10>>4  :算術(shù)或符號(hào)右移位運(yùn)算符

    <>:算術(shù)或符號(hào)左移位運(yùn)算符

    >>> :邏輯或無符號(hào)右移位運(yùn)算符

37、 請(qǐng)描述什么是強(qiáng)制類型轉(zhuǎn)換?什么是自動(dòng)類型轉(zhuǎn)換?什么是向上造型?并分別舉例說明

強(qiáng)制類型轉(zhuǎn)換:在一個(gè)類型前面加( ),來強(qiáng)制轉(zhuǎn)換

long l = 9L;

int i = (int)l;

    自動(dòng)類型轉(zhuǎn)換:

       int i = 5;

        String str = ''+i;

    向上造型:把范圍小的造型為范圍大的類型:

    int i = 2;

        long l = i;

38、 請(qǐng)寫出完整的if條件控制語句的結(jié)構(gòu)

if(布爾表達(dá)式){

        語句

    }else{

語句

}

39、 請(qǐng)寫出完整的switch語句的結(jié)構(gòu)

switch(字符){

      case 字符: 語句

              break;

      case 字符: 語句

              break;

      default:語句

 }

40、 請(qǐng)寫出完整的for語句的結(jié)構(gòu)

for(初始語句;條件語句;步長){

   }

41、 請(qǐng)寫出完整的while語句的結(jié)構(gòu)

while(boolean語句){

}

42、 請(qǐng)寫出完整的do while語句的結(jié)構(gòu)

do{

    }while(boolean語句);

43、 請(qǐng)描述break 和 continue的功能和用法

break:終止(跳出)最近的循環(huán)

continue:跳出本次循環(huán),執(zhí)行下一次循環(huán)

44、 定義一個(gè)一維的int數(shù)組,先創(chuàng)建它,并初始化它,給它賦值,然后輸出其中的一個(gè)值

public class Arr{

     public static void main(String args[]){

    int a[] = new int[5];

    a={1,2,3,4,5};//錯(cuò)誤 , 只能在初始化時(shí)這樣做

        a[0]=1;

        a[1]=2;

    System.out.println(a[0]);

     }

    }

45、 定義一個(gè)一維的A類型數(shù)組,直接定義并賦值,然后輸出其中的一個(gè)值

public class A{ public static int i; public static void main(String args[]){ A aa = new A( ); A bb = new A( ); A a[] = {aa,bb}; a[0].i=2; System.out.println(a[0]); }}

46、 把上面的數(shù)組改成2維的數(shù)組

public class A{ public static int i; public static void main(String args[]){ A a[ ][ ] = new A[5][5]; a[0][0].i=2; System.out.println(a[0][0]); } }

47、 舉例說明數(shù)組拷貝方法的使用:arraycopy方法

public class A{ public static void main(String args[]){ int a[] = new int[5]; int b[] = new int[5]; System.arraycopy(a[5],0,b[5],0,a.length) System.out.println(b[0][0]); }}

48、 什么是構(gòu)造和析構(gòu)方法?功能是?

構(gòu)造方法:每個(gè)類至少有一個(gè)構(gòu)造方法,類初始化時(shí)調(diào)用的方法

     1.方法名和類名相同 

     2.無返回值類型

   格式:訪問權(quán)限 類名(參數(shù)列表) {};

     1.自己定義構(gòu)造后,就沒有默認(rèn)的構(gòu)造方法

     2.無構(gòu)造方法時(shí),默認(rèn)為空參的構(gòu)造方法(無參數(shù),方法體為空)

    析構(gòu)方法:finalize

             類銷毀時(shí),自動(dòng)調(diào)用方法

             當(dāng)對(duì)象在內(nèi)存中被刪除時(shí),自動(dòng)調(diào)用該方法

             在此方法中可以寫回收對(duì)象內(nèi)部的動(dòng)態(tài)空間的代碼

49、 簡述Java的訪問修飾符類型?分別有什么功能?

public 公開的,任何一個(gè)類都有可以訪問 

protected 同包同類,只可被它的子類訪問

   default 只能被同一個(gè)包中類訪問   

private 私有的,只能在本類中被訪問 

 如果你想學(xué)習(xí)Java可以來這個(gè)群,首先是二二零,中間是一四二,最后是九零六,里面有大量的學(xué)習(xí)資料可以下載。

50、 分別說明:在類上、在屬性上、在方法上能使用哪些訪問修飾符

在類上:public default  final

   在方法上: 訪問權(quán)限:public protected private default

              方法修飾符:static 

                          final

              返回類型:void

   在屬性上:public protected private default

             static 

             final

51、 簡述什么是包?包的功能

包:對(duì)所定義的多個(gè)JAVA類進(jìn)行分組,將多個(gè)功能相關(guān)的類定義到一個(gè)包(文件)中。

   功能:1.易于查找和使用適當(dāng)?shù)念?/p>

         2.包不止包含類和接口,還可以包含其它包,形成層次的包空間

         3.有助于避免命名沖突

52、 請(qǐng)寫出5個(gè)以上的JDK中的包,以及他們的基本功能

java.awt:  包含構(gòu)成抽象窗口工具集的多個(gè)類,用來構(gòu)建和管理應(yīng)用程序的圖形用戶界面

    java.lang:  提供java編成語言的程序設(shè)計(jì)的基礎(chǔ)類

    java.io:   包含提供多種輸出輸入功能的類,

    java.NET:  包含執(zhí)行與網(wǎng)絡(luò)有關(guān)的類,如URL,SCOKET,SEVERSOCKET,

    java.applet: 包含java小應(yīng)用程序的類

java.util:  包含一些實(shí)用性的類

53、 什么是包裝類?Java中都有哪些包裝類

在JDK中針對(duì)各種基本類型分別定義相應(yīng)的引用類型 --------------稱為封裝類

Boolean  Byte  Short  Integer  Long  Float  Double  Character

54、 OOP(面向?qū)ο螅┱Z言的三大特征是?

封裝性,繼承性,多態(tài)性

55、 分別表述類的三大特性及其他們的功能

封裝:隱藏類的實(shí)現(xiàn)細(xì)節(jié)、迫使用戶去使用一個(gè)接口去訪問數(shù)據(jù)、使代碼更好維護(hù)

繼承:子類可以直接繼承使用父類的方法,程序員只需要做的是定義額外特征或規(guī)定將適用的變化

多態(tài)性:同一個(gè)行為具有多個(gè)不同表現(xiàn)形式或形態(tài)的能力

56、 如何實(shí)現(xiàn)繼承?繼承的規(guī)則?

public class A extends B{

   }

(1) 單繼承性

(2) 構(gòu)造方法不能繼承

(3) super引用父類,調(diào)用父類的屬性,方法

(4) 當(dāng)子類中出現(xiàn)與父類的方法名,返回類型,參數(shù)列表相同的方法時(shí)要覆蓋此方法

57、 簡述this和super的功能和用法

this :

(1) 能訪問除構(gòu)造方法以外所有的屬性、方法,通過this. 來調(diào)用方法和屬性

(2) 不可以在靜態(tài)方法中使用,

(3) 在調(diào)用其它構(gòu)造方法時(shí),必須放在該構(gòu)造方法的第一行

(4) 在構(gòu)造方法中使用this(參數(shù)列表),相當(dāng)于調(diào)用本類的其它構(gòu)造方法,它必須作為構(gòu)造方法的第一句

   super :訪問父類

(1) super. 點(diǎn)取父類中被子類隱藏的方法和屬性,

(2) 通過 super(參數(shù)列表) 來調(diào)用父類的屬性和方法,在調(diào)用父類的構(gòu)造方法時(shí)必須放在子類構(gòu)造方法里的第一行;

58、 如何確定在多態(tài)的調(diào)用中,究竟是調(diào)用的那個(gè)方法?

new的是哪一個(gè)類就是調(diào)用的哪個(gè)類的方法。

59、 請(qǐng)描述方法定義的完整的語法結(jié)構(gòu)

權(quán)限修飾符 修飾符 返回類型 方法名(參數(shù)) 例外{

        方法體;

}

60、 什么是重載?

在一個(gè)類中出現(xiàn)方法名相同,但參數(shù)列表不同時(shí),這種情況就是重載。

61、 簡述重載的規(guī)則

(1) 方法名稱必須相同;

(2) 參數(shù)列表必須不同(個(gè)數(shù)不同,或類型不同,或參數(shù)排列順序不同);

(3) 與返回類型無關(guān);

62、 什么是方法的覆蓋?什么情況下出現(xiàn)?

方法覆蓋:

    子類可以修改從父類繼承過來的行為,也就是說子類可以創(chuàng)建一個(gè)與父類方法有不同功能的方法,但具有相同的:名稱、返回類型名和參數(shù)列表。

    在父子類的情況下出現(xiàn)時(shí)。

63、 方法覆蓋的規(guī)則?

(1) 方法名要和父類中被覆蓋的方法名相同,返回類型相同,參數(shù)列表相同。

(2) 訪問權(quán)限要大于等于被覆蓋方法的權(quán)限。

(3) 例外列表要小于等于被覆蓋方法的例外列表。

64、 static修飾符的功能是?可以用在什么地方?怎么訪問?

static  修飾符功能:

(1) 共用一塊內(nèi)存區(qū)域,也就是用static修飾的變量或成員方法對(duì)所有類的實(shí)例都是相同的

(2) 靜態(tài)成員方法和靜態(tài)變量的優(yōu)點(diǎn)在于他們能在沒有創(chuàng)建類的任何一個(gè)實(shí)例的情況下被引用。

(3) 可以用在方法或?qū)傩陨?/p>

    訪問方式:

(1)  直接使用類名調(diào)用

(2)  new 一個(gè)實(shí)例,用實(shí)例調(diào)用

65、 static的基本規(guī)則

(1) 類中的靜態(tài)方法只可以調(diào)用靜態(tài)的屬性和方法,不允許調(diào)用非靜態(tài)的屬性和方法。

(2) 靜態(tài)變量為類變量,可以用類名直接調(diào)用靜態(tài)的屬性和方法。

(3) 靜態(tài)方法中不允許出現(xiàn)this和super

(4) 構(gòu)造方法不允許聲明static

(5) 非靜態(tài)變量為實(shí)例變量,通過實(shí)例調(diào)用

(6) 靜態(tài)方法不能被非靜態(tài)方法覆蓋

66、 final修飾符的功能是?可以用在什么地方?

功能:final標(biāo)記所有通用的功能,不能隨意更改

可以用在類、屬性和方法上

67、 final的基本規(guī)則

(1) final修飾的類不能被繼承

(2) final修飾的成員變量只允許賦值一次,且只能通過構(gòu)造方法里賦值。

(3) final修飾的局部變量即為常量,只能賦值一次。

(4) final修飾的方法不允許被子類覆蓋。

68、 什么是抽象方法,什么是抽象類

用abstract修飾的方法,只有方法的聲明,而沒有方法的實(shí)現(xiàn),就叫抽象方法。

用abstract修飾的類,就叫抽象類。

69、 抽象類的規(guī)則

(1) 抽象類內(nèi)部可以沒有抽象方法

(2) 必須用abstract修飾

(3) 不能夠直接使用抽象類,必須通過子類繼承并且實(shí)現(xiàn)

(4) 抽象方法不允許被private修飾

70、 什么情況下使用抽象類

(1) 當(dāng)一個(gè)類的一個(gè)或多個(gè)方法是抽象方法時(shí);

(2) 當(dāng)類是一個(gè)抽象類的子類,并且不能為任何抽象方法提供任何實(shí)現(xiàn)細(xì)節(jié)或方法體時(shí);

(3) 當(dāng)一個(gè)類實(shí)現(xiàn)一個(gè)接口,并且不能為任何抽象方法提供實(shí)現(xiàn)細(xì)節(jié)或方法體時(shí);

71、 equals方法和”= =”的功能和區(qū)別

功能:判斷對(duì)象是否相等

    區(qū)別:

     equals方法比較的是對(duì)象的值

     = =:比較的是對(duì)象值的內(nèi)存地址,對(duì)基本數(shù)據(jù)類型來說= =比較的是數(shù)值

72、 toString方法的功能和基本寫法

返回一個(gè)String類型

    public String toString(){

return “”;

}

73、 String的方法的功能和基本使用方法,請(qǐng)描述5個(gè)以上

substring(參數(shù)1,參數(shù)2);  功能:取字符串中參數(shù)1到參數(shù)2的的所有字符;  'String'.subString(0,1);

   replace(參數(shù)1,參數(shù)2);  功能:用參數(shù)1中的值替換字符串中所有參數(shù)2的值  'String'.replace(ing,tt);

   equals( );     功能:判斷兩個(gè)字符串是否相等  'String'.equals('tt');

trim( );      功能:去掉字符串兩邊的空格  'String'.trim();

   indexof( );    功能:查找字符串中參數(shù)所在位置,并返回字符串第一個(gè)出該參數(shù)的下標(biāo)  

'String'.indexOf('ing');

split( );      功能:根據(jù)參數(shù)分割該字符串   'String'.split('-');

74、 為什么使用StringBuffer類?有什么功能和優(yōu)點(diǎn)?

–只創(chuàng)建一個(gè)對(duì)象

 –StringBuffer 對(duì)象的內(nèi)容是可以被修改的

 –除了字符的長度之外,還有容量的概念

 –通過動(dòng)態(tài)改變?nèi)萘康拇笮?,加速字符管?/p>

75、 舉例說明如何使用StringBuffer

StringBuffer sb = new StringBuffer();

sb.append('aaa');

76、 如何使用Java讀寫系統(tǒng)屬性?

讀:

Properties props = System.getProperties();Enumeration prop_names = props.propertyNames();while (prop_names.hasMoreElements()) {String prop_name = (String) prop_names.nextElement();String property = props.getProperty(prop_name);System.out.println('Property '' + prop_name + '' is ''+ property + ''');}

寫:

System.setProperties(props);

77、 簡述properties文件的結(jié)構(gòu)和基本用法

結(jié)構(gòu):擴(kuò)展名為properties的文件,內(nèi)容為key、value的映射,例如“a=2”

    用法:

public class Test {public static void main(String args[]) {try {String name = 'test.properties';InputStream in = new BufferedInputStream(new FileInputStream(name));Properties p = new Properties();p.load(in);System.out.println('a的值==' + p.getProperty('a'));} catch (Exception err) {err.printStackTrace();}}}

78、 什么是接口?接口的定義規(guī)則?

接口是抽象方法和常量值的定義的集合。從本質(zhì)上講,接口是一種特殊的抽象類,這種抽象類中只包含常量和方法的定義,而沒有變量和方法的實(shí)現(xiàn)。

public interface Tt {

     public void outPut( );

     public int tt( );

   }

79、 接口的作用?為什么使用接口?

多重繼承

    封裝、隔離

    功能,實(shí)現(xiàn)的分離

多態(tài)

    便于后期維護(hù)

    接口是可插入性的保證。

80、 什么是多重接口

就是一個(gè)類實(shí)現(xiàn)多個(gè)接口

81、 描述接口的基本思想?

封裝 隔離

接口及相關(guān)機(jī)制的最基本作用在于:通過接口可以實(shí)現(xiàn)不相關(guān)類的相同行為,

而不需考慮這些類之間的層次關(guān)系。

根據(jù)接口可以了解對(duì)象的交互界面,而不需了解對(duì)象所屬的類。

面向?qū)ο蟪绦蛟O(shè)計(jì)講究“提高內(nèi)聚,降低耦合”。

 如果你想學(xué)習(xí)Java可以來這個(gè)群,首先是二二零,中間是一四二,最后是九零六,里面有大量的學(xué)習(xí)資料可以下載。

82、 如何在代碼中使用接口?

public class MyCast implements Tt{

     public void outPut( ){}

    public int tt( ){

     return 0;

}

}

83、 舉例說明如何把接口當(dāng)作類型使用

public interface  Animal(){

      public void tt( );   

}

    public class Dog implements Animal{

      public void tt ( ){}

}

Animal ani = new Dog();

84、 如何選擇接口和抽象類?為什么?

優(yōu)先選用接口,盡量少用抽象類

在下列情況下選擇抽象類:需要定義子類的行為,又要為子類提供共性的功能。

85、 什么是異常,異常的分類?

程序中導(dǎo)致程序中斷的一些情況叫做異常,一般程序員可以處理。

異常分為運(yùn)行時(shí)異常和非運(yùn)行時(shí)異常(一般異常)

運(yùn)行時(shí)異常是指因設(shè)計(jì)或?qū)崿F(xiàn)方式不當(dāng)導(dǎo)致的問題。也可以說,是程序員的原因?qū)е碌?,本來可以避免發(fā)生的情況。例如:BufferOverflowException, ClassCastException,IndexOutOfBoundsException,ArithmeticException。出現(xiàn)這些異常的代碼不需要try塊包圍。

非運(yùn)行時(shí)異常是指除運(yùn)行時(shí)異常以外所有的異常,出現(xiàn)這些異常的代碼必須用try塊包圍。例如:FileNotFoundException,EOFException,

86、 簡述處理異常的兩種方式?

拋出(throws)和catch語句處理

87、 簡述try塊的功能和規(guī)則

try塊內(nèi)部一般寫一些編程人員認(rèn)為可能會(huì)出現(xiàn)異常的代碼,使程序運(yùn)行時(shí)不會(huì)因?yàn)槌霈F(xiàn)異常而中斷。

88、 簡述catch塊的功能和規(guī)則

功能:可以截獲所聲明的異常,并在語句塊內(nèi)對(duì)其進(jìn)行處理

規(guī)則:catch(Exeption e){

  e.printStackTrace( );

     }

89、 簡述finally塊的功能和規(guī)則

finally塊一般寫一些不論是否發(fā)生異常都必須執(zhí)行一次的代碼

例如關(guān)閉與數(shù)據(jù)庫的連接等

90、 簡述throw和throws的功能和使用方法

throw 指編程人員主動(dòng)拋出一個(gè)異常 

throw new NullPointerExeption( );

throws指程序遇到異常情況自動(dòng)的被動(dòng)拋出一個(gè)異常

public void test( ) throws Exeption{}

91、 異常的分類?

錯(cuò)誤(Error):    JVM 系統(tǒng)內(nèi)部錯(cuò)誤、資源耗盡等嚴(yán)重情況,程序員不可控制

例外(Exception):其它因編程錯(cuò)誤或偶然的外在因素導(dǎo)致的一般性問題,程序可以控制

92、 什么是預(yù)定義異常

java程序中預(yù)先定義好的異常叫做預(yù)定義異常

93、 簡述自定義異常的規(guī)則

寫一個(gè)類繼承Exception

   用戶自定義異常通常屬Exception范疇,依據(jù)慣例,應(yīng)以Exception結(jié)尾,應(yīng)該由人工創(chuàng)建并拋出。

94、 什么是斷言?

用來證明和測試程序的假設(shè)。

95、 如何使用斷言?舉例說明

一種是assert布爾表達(dá)式>>;另一種是assert布爾表達(dá)式>>:細(xì)節(jié)描述>>。

assert  a= =10 : '這里a等于10';

集合框架

1、 什么是集合?什么是元素?

可以包含其他對(duì)象的簡單對(duì)象就叫集合

集合框架中所包含的對(duì)象就叫做元素

2、 描述出Java集合框架中集合的接口關(guān)系

Collection----Set和List

Set----HashSet和SortedSet

List----ArrayList和LinkedList

Map----HashMap、SortedMap和TreeMap

3、 代碼示例:Collection接口的使用,包括如何定義、初始化、賦值、取值、修改值除值

Collection col = new ArrayList();

String oldValue = 'abcd';

String newValue = '1234';

//增加

col.add(oldValue);

Iterator it = col.iterator();

while(it.hasNext()){

//取值

String str = (String)it.next();

if(str.equals(oldValue)){

//刪除

col.remove(oldValue);

//修改

col.add(newValue);

}

}

4、 代碼示例:List接口的使用,包括如何定義、初始化、賦值、取值、修改值、刪值

List col = new ArrayList();String oldValue = 'abcd';String newValue = '1234';col.add(oldValue);Iterator it = col.iterator();while(it.hasNext()){String str = (String)it.next();if(str.equals(oldValue)){col.remove(oldValue);col.add(newValue);}}

5、 代碼示例:Set接口的使用,包括如何定義、初始化、賦值、取值、修改值、刪值

Set col = new HashSet();String oldValue = 'abcd';String newValue = '1234';col.add(oldValue);Iterator it = col.iterator();while(it.hasNext( )){String str = (String)it.next();if(str.equals(oldValue)){col.remove(oldValue);col.add(newValue);}}

6、 代碼示例:Map接口的使用,包括如何定義、初始化、賦值、取值、修改值、刪

Map map = new HashMap();String oldValue = 'abcd';String newValue = '1234';//增加map.put('1',oldValue);Set set = map.keySet( );Iterator it = set.iterator( );while(it.hasNext( )){String key = (String)it.next( ); //取值String value = map.get(key);}//修改map.put('1',newValue);//刪除map.remove('1');}

7、 描述List接口、Set接口和Map接口的特點(diǎn)

List接口中的對(duì)象按一定順序排列,允許重復(fù)

Set接口中的對(duì)象沒有順序,但是不允許重復(fù)

Map接口中的對(duì)象是key、value的映射關(guān)系,key不允許重復(fù)

8、 如何給集合排序?

實(shí)現(xiàn)comparable接口

IO

1、 什么是流?可畫圖說明

流是要傳輸?shù)臄?shù)據(jù)在源和目的地之間運(yùn)行的軌跡。

2、 描述I/O流的基本接口和類的結(jié)構(gòu)

3、 代碼示例:使用URL流,讀取網(wǎng)頁代碼

import java.io.*;import java.net.URL;import java.net.URLConnection;public class ReadURL { public static void main(String[] args) throws Exception { URL url = new URL('http://bbs.tarena.com.cn'); //建立封裝統(tǒng)一資源定位符的類 URLConnection uc = url.openConnection(); //打開連接 InputStreamReader isr = new InputStreamReader(uc.getInputStream()); BufferedReader br = new BufferedReader(isr);//傳輸數(shù)據(jù) while(true){ String temp = br.readLine(); if(temp==null){ break; } System.out.println(temp); } br.close(); }}

4、 什么是Unicode?

是一種字符的編碼方式,占16位字節(jié),Java 技術(shù)使用 Unicode 來表示字符串和字符。

5、 代碼示例:如何使用Reader和Writer來進(jìn)行輸入輸出

//Writer寫入操作

FileOutputStream fos=new FileOutputStream('a.txt');

OutputStreamWriter osw=new OutputStreamWriter(fos);

BufferedWriter bw=new BufferedWriter(osw);

bw.write('歡迎來到j(luò)ava快車');

bw.close();

//Reader讀取操作

FileInputStream fis=new FileInputStream('a.txt');

InputStreamReader isr=new InputStreamReader(fis);

BufferedReader br=new BufferedReader(isr);

String str=br.readLine();

System.out.println(str);

6、 什么叫保持?什么是可序列化?如何實(shí)現(xiàn)可序列化?

將一個(gè)對(duì)象存放在某種類型的永久存儲(chǔ)器上(比如硬盤,光盤,軟盤等),稱為保持。

標(biāo)識(shí)一個(gè)類可以被持久化,叫序列化,也叫串行化或持久化。表示這個(gè)類中的數(shù)據(jù)可以按流式輸出。

實(shí)現(xiàn)可序列化的方法:實(shí)現(xiàn)java.io.Serializable接口。

 如果你想學(xué)習(xí)Java可以來這個(gè)群,首先是二二零,中間是一四二,最后是九零六,里面有大量的學(xué)習(xí)資料可以下載。

7、 代碼示例:如何讀寫對(duì)象流

//讀

try {

String str = '123';

FileOutputStream f = new FileOutputStream('test.txt');

ObjectOutputStream s = new ObjectOutputStream(f);

s.writeObject(str);

f.close( );

}catch(Exception e) {

e.printStackTrace( );

}

//寫

try {

FileInputStream f = new FileInputStream('test.txt');

ObjectInputStream s = new ObjectInputStream(f);

str =(String)s.readObject( );

f.close( );

}catch(Exception e){

e.printStackTrace( );

}

8、 簡述File類的基本功能

處理文件和獲取文件信息;文件或文件夾的管理。

概括一句話就是:除了讀寫文件內(nèi)容其他的都可以做。

9、 代碼示例:如何使用隨機(jī)文件讀寫類來讀寫文件內(nèi)容

RW表示文件時(shí)可讀寫的

讀:

try{

     RandomAccessFile f = new RandomAccessFile('test.txt', 'rw');

     long len = 0L;

     long allLen = f.length();

     int i = 0;

     while (len <>

       String s = f.readLine();

       if (i > 0) {

           col.add(s);

       }

       i++;

       //游標(biāo)

       len = f.getFilePointer();

     }

   }catch(Exception err){

     err.printStackTrace();

   }

  寫:

   try{

     RandomAccessFile f = new RandomAccessFile('test.txt', 'rw');

     StringBuffer buffer = new StringBuffer('\n');

     Iterator it = col.iterator();

     while (it.hasNext()) {

       buffer.append(it.next() + '\n');

     }

     f.writeUTF(buffer.toString());

   }catch(Exception err){

      err.printStackTrace();

   }

10、 代碼示例:如何使用流的基本接口來讀寫文件內(nèi)容

try{

DataInputStream in =

new DataInputStream(

new BufferedInputStream(

new FileInputStream('Test.java')

)

);

String currentLine=null;

while ((currentLine = in.readLine()) != null){

System.out.println(currentLine);

}

}catch (IOException e){

System.err.println('Error: ' + e);

}

多線程

1、 什么是線程? 

輕量級(jí)的進(jìn)程

2、 線程的三個(gè)部分是?

處理機(jī)

代碼

數(shù)據(jù)

3、 為什么使用多線程

使UI響應(yīng)更快

利用多處理器系統(tǒng)

簡化建模

4、 代碼示例:Java中實(shí)現(xiàn)多線程的兩種方式,包括如何定義多線程,如何使用多線程

實(shí)現(xiàn)Runnable接口

class Thread1 implements Runnable{

public void run( ){

//run里一般寫一個(gè)while(true)循環(huán)

System.out.println('Runnable');

}

}

public class Test{

public static void main(String[] a){

Thread1 r = new Thread1();

Thread t1 = new Thread(r);

Thread t2 = new Thread(r);

t1.start();

t2.start();

}

}

繼承Thread

class Thread2 extends Thread{

public void run(){

System.out.println('extends');

}

}

public class Test{

public static void main(String[] a){

Thread t = new Thread2();

t.start();

}

}

5、 如何實(shí)現(xiàn)線程的調(diào)度?如何暫停一個(gè)線程的運(yùn)行

調(diào)度用wait和notify,

----

sleep()

6、 什么是線程的優(yōu)先級(jí)

判斷哪個(gè)線程先執(zhí)行的級(jí)別

7、 簡述sleep方法和wait方法的功能和區(qū)別

sleep是讓線程休眠一段時(shí)間

wait是讓線程掛起

8、 什么是守候線程

隱藏在后臺(tái)持續(xù)運(yùn)行的線程

9、 什么是臨界資源

指多個(gè)線程共享的資源

10、 什么是互斥鎖,Java中如何實(shí)現(xiàn)

用來保證在任一時(shí)刻只能有一個(gè)線程來訪問臨界資源的那個(gè)標(biāo)記

在Java中使用

用在對(duì)象前面限制一段代碼的執(zhí)行

   用在方法聲明中,表示整個(gè)方法為同步方法。

11、 什么是死鎖?如何避免?

如果程序中有多個(gè)線程競爭多個(gè)資源,就可能會(huì)產(chǎn)生死鎖。當(dāng)一個(gè)線程等待由另一個(gè)線程持有的鎖,而后者正在等待已被第一個(gè)線程持有的鎖時(shí),就會(huì)發(fā)生死鎖。

要避免死鎖,應(yīng)該確保在獲取多個(gè)鎖時(shí),在所有的線程中都以相同的順序獲取鎖。盡量少用臨界資源。

12、 簡述wait和notify,notifyAll的使用

被鎖定的對(duì)象可以調(diào)用wait( )方法,這將導(dǎo)致當(dāng)前線程被阻塞并放棄該對(duì)象的互斥鎖,即解除了wait( )方法的當(dāng)前對(duì)象的鎖定狀態(tài),其他的線程就有機(jī)會(huì)訪問該對(duì)象。

notify使等待隊(duì)列上的一個(gè)線程離開阻塞狀態(tài)

notifyAll使等待隊(duì)列上的所有線程離開阻塞狀態(tài)

Socket編程

13、 什么是url?基本的格式是? 

統(tǒng)一資源定位器

Http://www.163.com:port

14、 簡述IP,Port,TCP的基本功能

IP代表網(wǎng)絡(luò)位置

Port代表端口號(hào)

TCP可保證不同廠家生產(chǎn)的計(jì)算機(jī)能在共同網(wǎng)絡(luò)環(huán)境下運(yùn)行,解決異構(gòu)網(wǎng)通信問題,是目前網(wǎng)絡(luò)通信的基本協(xié)議

15、 簡述Java網(wǎng)絡(luò)模型的基本功能

描述服務(wù)端和客戶端的連接過程

16、 簡述Java網(wǎng)絡(luò)編程究竟做些什么?如何做?

1.建立連接

2.準(zhǔn)備輸出的數(shù)據(jù),流式輸出

3.流式輸入,編程業(yè)務(wù)需要的格式

4.關(guān)閉連接

服務(wù)器分配一個(gè)端口號(hào)。如果客戶請(qǐng)求一個(gè)連接,服務(wù)器使用accept( )方法打開socket連接。

客戶在host的port端口建立連接。

服務(wù)器和客戶使用InputStream和OutputStream進(jìn)行通信。

17、 代碼示例:基于Socket編程

try {

ServerSocket s = new ServerSocket(8888);

while (true) {

Socket s1 = s.accept();

OutputStream os = s1.getOutputStream();

DataOutputStream dos = new DataOutputStream(os);

dos.writeUTF('Hello,' +s1.getInetAddress() + 'port#' + s1.getPort() + '\nbye!');

dos.close();

s1.close();

}

}catch (IOException e) {

System.out.println('程序運(yùn)行出錯(cuò):' + e);

}

18、  TCP和UDP區(qū)別

TCP(傳輸控制協(xié)議)和UDP(用戶數(shù)據(jù)報(bào)協(xié)議)是傳輸層協(xié)議 

TCP是面向連接的可靠數(shù)據(jù)傳輸協(xié)議,能保證傳輸內(nèi)容的完整和準(zhǔn)確;數(shù)據(jù)傳輸?shù)妮o助開銷大,效率低

UDP: 是無連接的,不可靠地傳輸協(xié)議,不能保證傳輸內(nèi)容的完整和準(zhǔn)確,對(duì)信息的適時(shí)要求比較高

設(shè)計(jì)模式

1、 什么是設(shè)計(jì)模式?

就是經(jīng)過實(shí)踐驗(yàn)證的用來解決特定環(huán)境下特定問題的解決方案。

2、 設(shè)計(jì)模式用來干什么?

尋找合適的對(duì)象

決定對(duì)象的粒度

指定對(duì)象的接口

描述對(duì)象的實(shí)現(xiàn)

運(yùn)用復(fù)用機(jī)制

重復(fù)使用經(jīng)過實(shí)踐驗(yàn)證的正確的,用來解決某一類問題的解決方案來達(dá)到減少工作量、提高正確率等目的

3、 什么是對(duì)象粒度

對(duì)象中方法的大小就是粒度

4、 基本的Java編程設(shè)計(jì)應(yīng)遵循的規(guī)則?

面向接口編程,優(yōu)先使用對(duì)象組合

5、 設(shè)計(jì)模式的應(yīng)用范圍

所能解決的特定的一類問題中

6、 簡述什么是單例模式,以及解決的問題,應(yīng)用的環(huán)境,解決的方案,應(yīng)用時(shí)應(yīng)注意什么?

解決的問題:在任何時(shí)間內(nèi)只有一個(gè)類實(shí)例存在的模式。

應(yīng)用環(huán)境:需要有一個(gè)從中進(jìn)行全局訪問和維護(hù)某種類型數(shù)據(jù)的區(qū)域的環(huán)境下使用單例模式。

解決方案:保證一個(gè)類只有一個(gè)類實(shí)例存在。

本質(zhì):控制實(shí)例的數(shù)量。

注意:要合理的使用單例,避免單例成為瓶頸。

7、   代碼示例:單例模式的兩種實(shí)現(xiàn)方法,并說明優(yōu)缺點(diǎn)

public class Test{

private static Test test = new Test();

    public Test(){

}

    public static Test getInstance(){

    return test;

}

}

public class Test{

    private static Test test = null;

private Test(){

}

public static Test getInstance(){

if(test==null){

test = new Test();

}

return test;

}

}

第一種方式:裝載類的時(shí)候就創(chuàng)建類的實(shí)例,用空間換時(shí)間。

第二種方式:延遲裝載,不需每次都創(chuàng)建一個(gè)類實(shí)例,而只是在第一次使用時(shí)創(chuàng)建,有效的利用資源,用時(shí)間換資源。

8、 簡述什么是工廠模式,以及他解決的問題,應(yīng)用的環(huán)境,解決的方案,模式的本質(zhì)

利用工廠來解決接口選擇的問題的模式。

應(yīng)用環(huán)境:當(dāng)一個(gè)類無法預(yù)料要?jiǎng)?chuàng)建哪種類的對(duì)象或是一個(gè)類需要由子類來指定,創(chuàng)建的對(duì)象時(shí),就需要用到工廠模式。

解決方案:定義一個(gè)創(chuàng)建對(duì)象的類,在類的方法中決定具體實(shí)例化哪一個(gè)類。

本質(zhì):就是根據(jù)不同的情況來選擇不同的實(shí)現(xiàn)類,重在選擇。

9、 代碼示例:工廠模式的實(shí)現(xiàn)方法

單獨(dú)是使用工廠:

public class Factory{

    public static Sample creator(int which){

    if (which==1){

    return new SampleA();

}else if (which==2)

     return new SampleB();

    }

}

 }

工廠+單例:

public class MyFactory{

    public static MyFactory f = null;

        public MyFactory(){

        }

        public static MyFactory getInstance(){

           if(f==null){

              f=new MyFactory();

           }

        }

        public DBDAO getDAO(){

            return new DBDAOImpl();

        }  

    }

10、 簡述什么是值對(duì)象模式,以及他解決的問題,應(yīng)用的環(huán)境,解決的方案,模式的本質(zhì)

用來把一組數(shù)據(jù)封裝成一個(gè)對(duì)象的模式

解決問題:在遠(yuǎn)程方法的調(diào)用次數(shù)增加的時(shí)候,相關(guān)的應(yīng)用程序性能將會(huì)有很大的下降

解決方案:使用值對(duì)象的時(shí)候,可以通過僅僅一次方法調(diào)用來取得整個(gè)對(duì)象,而不是使用多次方法調(diào)用以得到對(duì)象中每個(gè)域的數(shù)值

本質(zhì):封裝數(shù)據(jù)。

11、 代碼示例:值對(duì)象模式的實(shí)現(xiàn)方法

步驟:

public class UserModel{

     private String userId;

    private String userName;

public void setUserId(String id){

     this.userId = id;

    }

    public String getUserId(){

    return userId;

    }

    public void setUserName(String name){

   this.userName = name;

}

public String getUserName(){

     return userName;

    }

 }

12、 簡述什么是DAO模式,以及他解決的問題,應(yīng)用的環(huán)境,解決的方案,模式的本質(zhì)

數(shù)據(jù)訪問對(duì)象

解決問題:根據(jù)數(shù)據(jù)源不同,數(shù)據(jù)訪問也不同。根據(jù)存儲(chǔ)的類型(關(guān)系數(shù)據(jù)庫、面向?qū)ο髷?shù)據(jù)庫、純文件等)和供應(yīng)商實(shí)現(xiàn)不同,持久性存儲(chǔ)(如數(shù)據(jù)庫)的訪問差別也很大。如何對(duì)存儲(chǔ)層以外的模塊屏蔽這些復(fù)雜性,以提供統(tǒng)一的調(diào)用存儲(chǔ)實(shí)現(xiàn)。程序的分布式問題

解決方案:將數(shù)據(jù)訪問邏輯抽象為特殊的資源,也就是說將系統(tǒng)資源的接口從其底層訪問機(jī)制中隔離出來;通過將數(shù)據(jù)訪問的調(diào)用打包,數(shù)據(jù)訪問對(duì)象可以促進(jìn)對(duì)于不同數(shù)據(jù)庫類型和模式的數(shù)據(jù)訪問。

   本質(zhì):分層,是系統(tǒng)組件和數(shù)據(jù)源中間的適配器。(一層屏蔽一種變化)

13、 代碼示例:DAO模式的實(shí)現(xiàn)方法

14、 什么是框架?框架的優(yōu)點(diǎn)? 

框架是能夠完成一定功能的半成品

    1.優(yōu)點(diǎn):完成一定的功能、提供一個(gè)精良的應(yīng)用程序架構(gòu)

  ?。?框架都是以接口的形式出現(xiàn)

    3.應(yīng)該了解框架完成的功能、框架的API接口、框架的功能是怎么實(shí)現(xiàn)的

15、 什么是開放-封閉法則(OCP)

可擴(kuò)展但是不可以更改已有的模塊

    對(duì)擴(kuò)展是開放的,對(duì)修改是封閉

16、 什么是替換法則(LSP)

使用指向基類(超類)的引用的函數(shù),必須能夠在不知道具體派生類(子類)對(duì)象類型的情況下使用。

17、 如何綜合使用我們學(xué)過的設(shè)計(jì)模式來構(gòu)建合理的應(yīng)用程序結(jié)構(gòu)

是采用接口進(jìn)行隔離,然后同時(shí)暴露值對(duì)象和工廠類,如果是需要數(shù)據(jù)存儲(chǔ)的功能,又會(huì)通過DAO 模式去與數(shù)據(jù)存儲(chǔ)層交互。

18、 構(gòu)建常用的合理的Java應(yīng)用包結(jié)構(gòu)

Ui(表現(xiàn)層)

business--factory,ebi,ebo

dao--factory,dao,impl

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
精選30道Java筆試題解答
Java初級(jí)工程師面試題精選1
接口和抽象類的區(qū)別和作用
Java封神之路:Java面試備戰(zhàn)(五)
?瘋狂Java面試題
Java面試題全集(1.2)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服