隔壁班的帥哥給我的
1.1簡述JAVA的語言特點
a語法簡單,功能強大
b分布式與安全性
c與平台無關
d多線程
1.2什么是Java虛擬機?它包括哪幾個部分?
解: Java 虛擬機 (JVM ) 規范中給出了它的定義: JVM是在一台真正的機器上用軟件方式實現的一台假想機。Java 虛擬機是運行 Java 程序必不可少的機制,它是編譯后的Java 程序和硬件 系統之間的接口.程序員可以把 JVM 看作一個虛擬的處理 器。編譯 后的 Java 程序指令並不直接在硬件系統的CPU上執行,而是由 JVM 執行。它不僅解釋執行編譯后的Java 指令,而且還進行安全檢查。它是 Java 程序能在多平台間進行無縫移植的可靠保證 ,同時也是 Java程序的安全檢驗引擎。
JVM的具體實現包括指令集(等價於 CPU的指令集)、寄存器組、類文件格式、棧、垃圾收集堆 、內存區。
1.12列出java.lang.math類的常用方法
絕對值,三角函數,開根,對數,隨機數,冪,最值
2.3請敘述標識符的定義規則
( 1 ) 標識符是以字母、下畫線( _)或美元符( $ )開頭 ,由字母、數字、下畫線( _ )或美 元
符號($)組成的字符串。
( 2 )標識符區分大小寫。
( 3 )標識符的長度沒有限制。
( 4 )注釋不能插在一個標識符或關鍵字之中。
( 5 )Java有許多關鍵字,它們都 有各自的特殊意義和用法,不得用它們作為標識符標 識符內 可以包 含關鍵字 ,但不 能 與 關 鍵 字 完 全 一 樣 。 如 t hi s O ne是一個合法的標識符. 但 t h is 是 關 鍵 字,不能當作標識符。
2.4Java中有哪些數據類型?他們分別用什么符號表示?
a布爾類型 Boolean
b字符類型 char
C整型 byte、short、int、long
d浮點型 float、double
2.5什么是對象?基本數據類型和對象有何不同?
解:對象有兩個層次的含義:現實生活中對象指的是客觀世界的實體;在程序中對象就是一組變屈和相關方法的集合,其中變員表明對象的狀態,方法表明對象所具有的行為。
對象是類的一個 實例。類可以看作 是一個模板—— 正在描述的對象的 模型。每當 創建一個類的實例時.得到的就是一個對象。
不同:
基本數據類型是如數或是字符這樣的基本值。對象是更復雜的項,通常包含了定義對象的基本數據類型。它們所對應的內存分配的時機、使用的方式都是不同的。
2.6Java中的類型轉換是什么?如何進行安全的類型轉換?
將不同類型的數據轉換為同一類型的數據就被稱為類型轉換。
轉換時位數少的類型轉換為位數多的類型這樣就能進行安全的類型轉換。
2.11設計並實現一個Course類,它代表學校的一門課程。按照實際情況,將這門課程的相關信息組織成它的屬性,並定義必要的相應方法。
核心代碼:
system.out.println(“the basic info of this course as fllowed;”)
system.out.println(“courseID:”+this.getID());
system.out.println(“courseName:”+this.getName());
system.out.println(“courseType:”+this.getType());
system.out.println(“classHour:”+this.getClassHou());
system.out.println(“credit:”+this.getCredit());
system.out.println(“-----------------------------------------------);
2.13設計並實現一個Vehicle類及其子類,它們代表主要交通工具,定義必要的屬性信息及訪問方法。
核心代碼:
System.out .println ("\n--- - - - - - - -- - - - -- --- --- - - -- - ");
System.out.println("the vehicle info as followed:") ; System.out.print("brand="+this.brand+"\t");
System.out.print("color="+this.color+"\t") ; System.out.print ("price="+ this.price+" \t " ) ;
System. out .print.("number="+ this. number+ " \ t " ) ;
3.4設n為自然數,n!稱為n的階乘,規定0!=1.
n!=1X2X···Xn
試編制程序計算2!,4!,6!,8!和10!
public static int Factorial (int n)
if (n==O) return l ;
returnn* Factorial (n-1) ;
public void print()
System. out .println (initVal+" != " +r e s u l t ) ;
public void setinitVal (intn)
initVal=n;
private int result, initVal;
3.5使用Java.lang.Math類,生成100個0倒99的隨機整數,找出它們的最大值和最小值,並統計大於50的整數個數。
3.7編寫程序打印下面圖案。
3.8編寫程序打印下面圖案.
3.9打印九九乘法表
3.12溫度單位轉換
4.2請簡述數組創建的過程。如何創建一個對象數組?
定義加初始化的過程就是數組創建的過程。
先在棧中開辟空間,初始化普通數組的引用;在堆中開辟空間初始化對象的引用及開辟空間初始化對象數據對象的屬性和成員方法,最后引用指向對象的數據。
4.9定義一個一維數組,其中存儲隨機生成的1000個1~100的整數,統計每個整數出現的次數。
5.4什么叫做方法重載?什么叫做方法重寫?它們之間的區別是什么?
方法重載:同一個類中,可以定義同名的多個方法。它們的不同之處在於參數列表不同 ,這其中包括參數的個數不同或是對應的參數類型不完全相同。這就是方法的重載。
方法重寫:如果父類中原有的方法不能滿足子類的要求,可以在子類中對父類的方法重新編寫代碼。這稱為方法重寫。
1從對方法重載和方法重寫的分析可以看出,它們之間的區別主要有:
2方法重載時參 數列表必須是不同的,使系統能區別出到底調用哪個方法,而方法重寫時參數列表可以是相同的。
方法重載時 ,方法的 返回類 型可能不同 ,也可能相 同;而方法重寫時,子類中方法的返3回類型 和父類中同名方法的返 回類型完全一樣。
方法重載多出現在同一個類中,方法重寫必須是在父子類中。
5.6關鍵字this和關鍵字super在成員方法中的特殊作用是什么?
5.8什么叫做靜態方法和靜態變量,它們同普通的成員方法和成員變量有什么區別?
靜態變量:是基本數據類型,在類的外部不必創建該類的實例可以直接使用。(偷懶簡寫)
靜態方法:方法在內存中只有一份,無論該類有多少個實例,都共用一個方法。
不同:靜態變量和靜態方法都可以直接使用而普通成員方法變量不行。
5.8什么是抽象類?什么是抽象方法?他們有什么特點和用處?
抽象類:定義了方法但沒有定義具體實現的類
抽象方法:這種方法只有方法的聲明,而沒有方法的實現。這些方法在抽象類的子類中實現
5.11什么是接口?接口的作用是什么?它與抽象類有何區別?
接口是抽象類功能的另一種實現方法。可將其想象為一個“純”的抽象類。
作用:接口的作用是為了保證多重繼承,它可以定義多個類的共同屈性。而且,J av a通過允許一個類實現多個接口從 而 實現了比多 重繼承更加強大的能力,並具有更加清晰的結構。
6.1什么是異常?解釋“拋出”、“捕獲”的含義。
異常: J av a 把程序運行中可能遇到的錯誤分為兩類 ,一類是非致命性的,通過某種修正后程序還能繼續執行。這類錯誤稱作異常。
拋出:針對 J a va 程序中引發的可識別錯誤,產生與該錯誤相對應的異常類對象的這一過程稱為拋出。
捕獲:專門處理異常的過程稱為捕獲 。
6.2Java是如何處理異常的?
當發生異常時,程序中斷執行,並輸出一條信息。J ava 中,使用 t r y 語句括住可能 拋出異常的代碼段,用ca t ch語句指明要捕獲的異常及相應的處理代碼。
6.3catch及try語句作用是什么?語法格式如何?
對於可能拋出異常的代碼段,要使用 t r y 語句括住,用ca t ch 語句指明要捕獲的異常及相應的處理代碼。
6.5Java中常見的異常
算數異常、空指針異常、數組元素個數為負異常、數組下標越界異常、安全異常
7.1什么是泛型?為什么要使用泛型?
在設計類和接口時 , 說明相關的數據類型。J a va 語言允許在類或接口的定義中,用- 個 占 位符 替 代 實際 的類 類 型。 這 個 技 術 稱 為 泛 型 。
使用泛型的目的::
a類型安全 b消除強制類型轉換 c潛在的性能收益
11.2什么叫做流?輸入輸出流分別對應哪兩個抽象類?
流也稱數據 流,是指 在計算 機的輸 入輸出之間流動的數據的序列。這是一組有順序的有起點和終點的字節集合。
輸入流用抽象類 lnputStream 來實現,輸出流用抽象類OutputStream 來實現。
11.3 InputStream有哪些直接子類?其功能是什么?
11.4 OutputStream有哪些直接子類?其功能是什么?
12.1什么叫做線程?什么叫做多線程?Java的多線程有何特點?
線程:是進程執行過程中產生的多條 執行線索,是比進程更小的執行單位,它在形式上同進程十分相似一—都是用一個順序執行的語句序列來完成特定的功能。
多線程:目前大多數操作系統支持多任務 ,每一個任務就是一個進程。一個進程在其執行過程中,可以產生多個線程,即多線程。
Java多線程的特點:
12.2什么叫做線程的生命周期?線程的一個生命周期包括哪些狀態?各狀態之間是如何進行轉換的?
從線程的創建直到線程退出運行稱為線程的生命周期。
線程的一個生命周期包括以下一些狀態:新建、就緒、運行、阻塞和死亡。
狀態轉換圖:
12.3有幾種創建線程的方法?分別是什么?
創建線程有兩種方法,第一種是繼承T h r ea d 類,定義它的 一個子類 ,這個子類就可以表示線程。
創建線程的另一種方法是實現 R u n n a b le 接口。
12.8為什么多線程系統中要引入同步機制?Java是如何實現同步的?
多線程訪問共享數據時,可能會出現訪問了不該訪問的數據或是漏過需要訪問的數據這種情況,這是因為缺乏線程和共享數據之間的協調管理機制而導致的。
為了解決類似的問題 ,Java 使用對象鎖的概念,為可能同時訪問共享數據的代碼實例定義了一個“鎖定標志”,使用 synchro nize d關鍵字進行同步,它提供了操作鎖定標志的方法。
12.9什么叫死鎖?Java同步機制中是否可以阻止死鎖的發生?
在多線程競爭使用資源的程序中,可能會發生這樣的情況: 一個線程等待另一個線程所待有的鎖,而第二個線程又在等待第一個線程所持有的鎖,也就是它們互相等待對方所持有的鎖。一般來講,每個線程都占有部分資源,而等待其 他線程占有的另外部分資源。因為每個線程都得不到運行所需的全部資源,所以每個線程都不能繼續運行。這就出現了死鎖。死鎖是指多個線程相互等待,使得程序無法繼續運行 。
Java既不監測也沒有采取辦法防止死鎖的出現。它的同步機制不能有效地防止死鎖,