1. 程式人生 > >通往 BATJ 的 160 道 Java 面試題及答案(一)

通往 BATJ 的 160 道 Java 面試題及答案(一)

一、題目(1~40題)

1、面向物件的特徵有哪些方面?

2、訪問修飾符 public,private,protected, 以及不寫(預設)時的區別?

3、String 是最基本的資料型別嗎?

4、float f=3.4; 是否正確?

5、short s1 = 1; s1 = s1 + 1; 有錯嗎?short s1 = 1; s1 += 1; 有錯嗎?

6、Java 有沒有 goto?

7、int 和 Integer 有什麼區別?

8、& 和 && 的區別?

9、解釋記憶體中的棧 (stack)、堆(heap) 和靜態區 (static area) 的用法。

10、Math.round(11.5) 等於多少?Math.round(-11.5) 等於多少?

11、switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上?

12、用最有效率的方法計算 2 乘以 8?

13、陣列有沒有 length()方法?String 有沒有 length() 方法?

14、在 Java 中,如何跳出當前的多重巢狀迴圈?

15、構造器(constructor)是否可被重寫(override)?

16、兩個物件值相同 (x.equals(y) == true),但卻可有不同的 hash code,這句話對不對?

17、是否可以繼承 String 類?

18、當一個物件被當作引數傳遞到一個方法後,此方法可改變這個物件的屬性,並可返回變化後的結果,那麼這裡到底是值傳遞還是引用傳遞?

19、String 和 StringBuilder、StringBuffer 的區別?

20、過載(Overload)和重寫(Override)的區別。過載的方法能否根據返回型別進行區分?

21、描述一下 JVM 載入 class 檔案的原理機制?

22、char 型變數中能不能存貯一箇中文漢字,為什麼?

23、抽象類(abstract class)和介面(interface)有什麼異同?

24、靜態巢狀類 (Static Nested Class) 和內部類(Inner Class)的不同?

25、Java 中會存在記憶體洩漏嗎,請簡單描述。

26、抽象的(abstract)方法是否可同時是靜態的(static), 是否可同時是本地方法(native),是否可同時被 synchronized 修飾?

27、闡述靜態變數和例項變數的區別。

28、是否可以從一個靜態(static)方法內部發出對非靜態(non-static)方法的呼叫?

29、如何實現物件克隆?

30、String s = new String(“xyz”); 建立了幾個字串物件?

31、介面是否可繼承(extends)介面?抽象類是否可實現(implements)介面?抽象類是否可繼承具體類(concrete class)?

32、一個 ".java" 原始檔中是否可以包含多個類(不是內部類)?有什麼限制?

33、Anonymous Inner Class(匿名內部類) 是否可以繼承其它類?是否可以實現介面?

34、內部類可以引用它的包含類(外部類)的成員嗎?有沒有什麼限制?

35、Java 中的 final 關鍵字有哪些用法?

36、資料型別之間的轉換:

37、如何實現字串的反轉及替換?

38、怎樣將 GB2312 編碼的字串轉換為 ISO-8859-1 編碼的字串?

39、日期和時間:

40、列印昨天的當前時刻。

二、參考答案(含題目)

1、面向物件的特徵有哪些方面?

 面向物件的三大特徵:1.繼承  2.封裝 3.多型性

(1)繼承:就是保留父類的屬性,開擴新的東西。通過子類可以實現繼承,子類繼承父類的所有狀態和行為,同時增加自身的狀態和行為。

(2)封裝:就是類的私有化。將程式碼及處理資料繫結在一起的一種程式設計機制,該機制保證程式和資料不受外部干擾。

(3)多型:是允許將父物件設定成為和一個和多個它的子物件相等的技術。包括過載和重寫。

                    過載為編譯時多型,重寫是執行時多型。

過載與覆蓋: Overloading:過載是指兩個或者多個函式在同一類中,名一樣,引數列表不一樣,或者說:方法過載是一個類中定義了多個方法名相同,而他們的引數的數量不同或數量相同而型別和次序不同。 

注意:僅僅是返回值不同的兩個函式,不叫過載,是錯誤的。

方法過載是一個類的多型性表現,而方法重寫是子類與父類的一種多型性表現. Overriding(重寫)=覆蓋:在父類有個函式,在子類也有一個同樣名字的函式,而且在子類內中把這個功能做的更具體化。

2、訪問修飾符 public,private,protected, 以及不寫(預設)時的區別?

飾符       當前類      同 包      子 類     其他包
public         √             √             √            √
protected    √            √             √             ×
default        √            √              ×            ×
private        √            ×              ×            ×

類的成員不寫訪問修飾時預設為default。預設對於同一個包中的其他類相當於公開(public),對於不是同一個包中的其他類相當於私有(private)。

受保護(protected)對子類相當於公開,對不是同一包中的沒有父子關係的類相當於私有。

Java中,外部類的修飾符只能是public或預設,類的成員(包括內部類)的修飾符可以是以上四種。

3、String 是最基本的資料型別嗎?

不是,

基本資料型別包括:byte、short、int、long、float、double、boolean、char.

而String類代表字串,屬於引用型別,所謂引用型別包括:類,介面,陣列...

4、float f=3.4; 是否正確?

答案:不正確。 
原因:精度不準確,應該用強制型別轉換,如下所示:

float f=(float)3.4 或 float f = 3.4f 
在java裡面,沒小數點的預設是 int,有小數點的預設是 double
編譯器可以自動向上轉型,如int 轉成 long 系統自動轉換沒有問題,因為後者精度更高 
double 轉成 float 就不能自動做了,所以後面的加上個 f

5、short s1 = 1; s1 = s1 + 1; 有錯嗎?short s1 = 1; s1 += 1; 有錯嗎?

先說一下Java的基本資料型別轉換規則,大的資料型別轉換為小的資料型別需要強制轉換,反之可以自動轉換。

賦值表示式等號兩側的轉換的規則是右側的向左側的看齊,即右側表示式要轉換到和左邊的型別一樣。

第一題:short s1 = 1; s1 = s1 + 1;

錯! s1 + 1,s1是short型別,1是int型,s1會自動轉換為int型的1,與1相加後,得到int型的2,要向左側的short型別的s1看齊,即需要通過強制型別轉換。正確寫法:s1 = (short) (s1 + 1);

第二題:short s1 = 1; s1 += 1;

正確! 執行s1+=1;其實執行的是s1 = (short) (s1 + 1); 其中會有一個強制轉換的過程。

另外:short s1=1,s2=1;short s3=s1+s2;

錯誤!這裡是編譯器從資料安全方面考慮,如果s1和s2都是較大的short型別數,可能會導致溢位,所以會要求強制轉換到int。正確寫法: short s3=(short) ((short)s1+(short)s2); 注意short 取值範圍 

基本型別:short 二進位制位數:16
包裝類:java.lang.Short
最小值:Short.MIN_VALUE=-32768 (-2的15此方)
最大值:Short.MAX_VALUE=32767 (2的15次方-1)

6、Java 有沒有 goto?

由於goto關鍵字在java之前的語言中廣泛使用,因此儘管現在在java中還沒有使用該關鍵字,但是仍然設定為了保留字,一旦在開發環境中輸入goto就會變色為關鍵字顏色。

7、int 和 Integer 有什麼區別?

(1)Integer是int的包裝類;int是基本資料型別; 
(2)Integer變數必須例項化後才能使用;int變數不需要; 
(3)Integer實際是物件的引用,指向此new的Integer物件;int是直接儲存資料值 ; 
(4)Integer的預設值是null;int的預設值是0。

8、& 和 && 的區別?

對於:&  -- >  只要左右兩邊有一個為false,則為false;只有全部都為true的時候,結果為true

對於:&& -- > 只要符號左邊為false,則結果為false;當左邊為true,同時右邊也為true,則結果為tru

9、解釋記憶體中的棧 (stack)、堆(heap) 和靜態區 (static area) 的用法。

通常我們定義一個基本資料型別的變數,一個物件的引用,還有就是函式呼叫的現場儲存都使用記憶體中的棧空間;

而通過new關鍵字和構造器建立的物件放在堆空間;

程式中的字面量(literal)如直接書寫的100、“hello”和常量都是放在靜態儲存區中。棧空間操作最快但是也很小,通常大量的物件都是放在堆空間,整個記憶體包括硬碟上的虛擬記憶體都可以被當成堆空間來使用。

String str = new String(“hello”);

上面的語句中str放在棧上,用new創建出來的字串物件放在堆上,而“hello”這個字面量放在靜態儲存區。

補充:較新版本的Java中使用了一項叫“逃逸分析“的技術,可以將一些區域性物件放在棧上以提升物件的操作效能。

10、Math.round(11.5) 等於多少?Math.round(-11.5) 等於多少?

round()方法可以這樣理解:將括號內的數+0.5之後,向下取值,

比如:round(3.4)就是3.4+0.5=3.9,向下取值是3,所以round(3.4)=3; 

round(-10.5)就是-10.5+0.5=-10,向下取值就是-10,所以round(-10.5)=-10

所以,Math.round(11.5)=12;Math.round(-11.5)=-11

擴充套件:常用的還有2個

Math.ceil :求最小的整數,但不小於本身.  

                    ceil的英文意義是天花板,該方法就表示向上取整,

                    Math.ceil(11.3)的結果為12,Math.ceil(-11.3)的結果是-11;

Math.floor:最大的整數,但不大於本身.

                    floor的英文意義是地板,該方法就表示向下取整,

                    Math.floor(11.6)的結果為11,Math.floor(-11.6)的結果是-12;

11、switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上?

 * 基本型別的包裝類(如:Character、Byte、Short、Integer)
 * switch可作用於char byte short int
 * switch可作用於char byte short int對應的包裝類
 * switch不可作用於long double float boolean,包括他們的包裝類
 * switch中可以是字串型別,String (jdk1.7之後才可以作用在string上)
 * switch中可以是列舉型別

12、用最有效率的方法計算 2 乘以 8?

2<<3

對於計算機而言,位操作是最快的。

13、陣列有沒有 length()方法?String 有沒有 length() 方法?

陣列沒有length()方法,有length的屬性。

String有length()方法。

注意:JavaScript中,獲得字串的長度是通過length屬性得到的,這一點容易和Java混淆。

14、在 Java 中,如何跳出當前的多重巢狀迴圈?

兩種常用方式:

a、break跳出當前迴圈,通過內部跳出條件控制跳出外部迴圈

for(int i=0;i<4;i++){
for(int j=0;j<5;j++){
System.out.println("i="+i+"; j="+j);
if(j==3) {
i=4;
                break;
            }
        }
}

b、丟擲異常也可以跳出多重迴圈

try {
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 5; j++) {
System.out.println("i=" + i + "; j=" + j);
if (j == 3) {
throw new Exception();
}
}
}
} catch (Exception e) {
System.out.println("e");
}

15、構造器(constructor)是否可被重寫(override)?

      Constructor(構造器)不能被繼承,所以不能被override(重寫),但是可以被overloading(過載)。

16、兩個物件值相同 (x.equals(y) == true),但卻可有不同的 hash code,這句話對不對?

不對,如果兩個物件x和y滿足x.equals(y) == true,它們的雜湊碼(hash code)應當相同。

Java對於eqauls方法和hashCode方法是這樣規定的:

(1)如果兩個物件相同(equals方法返回true),那麼它們的hashCode值一定要相同;

(2)如果兩個物件的hashCode相同,它們並不一定相同。

當然,你未必要按照要求去做,但是如果你違背了上述原則就會發現在使用容器時,相同的物件可以出現在Set集合中,同時增加新元素的效率會大大下降(對於使用雜湊儲存的系統,如果雜湊碼頻繁的衝突將會造成存取效能急劇下降)。

首先equals方法必須滿足自反性(x.equals(x)必須返回true)、對稱性(x.equals(y)返回true時,y.equals(x)也必須返回true)、傳遞性(x.equals(y)和y.equals(z)都返回true時,x.equals(z)也必須返回true)和一致性(當x和y引用的物件資訊沒有被修改時,多次呼叫x.equals(y)應該得到同樣的返回值),而且對於任何非null值的引用x,x.equals(null)必須返回false。

實現高質量的equals方法的訣竅包括:

1. 使用==操作符檢查”引數是否為這個物件的引用”;

2. 使用instanceof操作符檢查”引數是否為正確的型別”;

3. 對於類中的關鍵屬性,檢查引數傳入物件的屬性是否與之相匹配;

4. 編寫完equals方法後,問自己它是否滿足對稱性、傳遞性、一致性;

5. 重寫equals時總是要重寫hashCode;

6. 不要將equals方法引數中的Object物件替換為其他的型別,在重寫時不要忘掉@Override註解。

17、是否可以繼承 String 類?

不可以,因為String類有final修飾符,而final修飾的類是不能被繼承的,實現細節不允許改變。

public final class String implements java.io.Serializable, Comparable<String>, CharSequence 

18、當一個物件被當作引數傳遞到一個方法後,此方法可改變這個物件的屬性,並可返回變化後的結果,那麼這裡到底是值傳遞還是引用傳遞?

是值傳遞。Java程式語言中只有由值傳遞引數的。當一個物件例項作為一個引數被傳遞到方法中時,引數的值就是該物件的引用。物件的內容可以在被呼叫的方法中改變,但物件的引用是永遠不會改變的

19、String 和 StringBuilder、StringBuffer 的區別?

StringBuilder是執行緒不安全的,而StringBuffer是執行緒安全的

如果一個StringBuffer物件在字串緩衝區被多個執行緒使用時,StringBuffer中很多方法可以帶有synchronized關鍵字,所以可以保證執行緒是安全的,但StringBuilder的方法則沒有該關鍵字,所以不能保證執行緒安全,有可能會出現一些錯誤的操作。所以如果要進行的操作是多執行緒的,那麼就要使用StringBuffer,但是在單執行緒的情況下,還是建議使用速度比較快的StringBuilder。

String:適用於少量的字串操作的情況

StringBuilder:適用於單執行緒下在字元緩衝區進行大量操作的情況

StringBuffer:適用多執行緒下在字元緩衝區進行大量操作的情況

20、過載(Overload)和重寫(Override)的區別。過載的方法能否根據返回型別進行區分?

方法的過載和重寫都是實現多型的方式,

區別在於前者實現的是編譯時的多型性,而後者實現的是執行時的多型性。

過載發生在一個類中,同名的方法如果有不同的引數列表(引數型別不同、引數個數不同或者二者都不同)則視為過載;重寫發生在子類與父類之間,重寫要求子類被重寫方法與父類被重寫方法有相同的返回型別,比父類被重寫方法更好訪問,不能比父類被重寫方法宣告更多的異常(里氏代換原則)。過載對返回型別沒有特殊的要求

21、描述一下 JVM 載入 class 檔案的原理機制?

 JVM中類的裝載是由類載入器(ClassLoader)和他的子類來實現的,java中的類載入器是一個重要的java執行時系統元件,它負責在執行時查詢和裝入類檔案中的類。

  1. 載入 
    把類的.class檔案中的資料讀入記憶體中,通常是建立一個位元組陣列讀入.class檔案,然後產生與所載入類對應的class物件。此時的物件還不穩重,類還不可以使用。
  2. 連線 
    當類被載入後就進入連線階段,這一階段包括驗證、準備(為靜態變數分配記憶體並設定預設的初始值)和解析(將符號引用替換為直接引用)三個步驟
  3. 初始化 
    1)如果類存在直接的父類並且這個類還沒有被初始化,那麼就先初始化父類; 
    2)如果類中存在初始化語句,就依次執行這些初始化語句

22、char 型變數中能不能存貯一箇中文漢字,為什麼?

 char型變數是用來儲存Unicode編碼的字元的,unicode編碼字符集中包含了漢字,

 所以,char型變數中當然可以儲存漢字啦。

不過,如果某個特殊的漢字沒有被包含在unicode編碼字符集中,那麼,這個char型變數中就不能儲存這個特殊漢字

 說明:unicode編碼佔用兩個位元組,所以,char型別的變數也是佔用兩個位元組。

23、抽象類(abstract class)和介面(interface)有什麼異同?

抽象類:包含抽象方法的類就是抽象類 
介面:指抽象方法的集合,方法不包含方法體

相同點:

  1. 都不能被例項化
  2. 介面的實現類或者抽象類的子類都必須實現了介面或抽象類中的方法後才可以被例項化

不同點:

  1. 介面只有定義,方法不能在介面中實現,實現介面的類要實現介面中所有的方法;抽象類可以有定義與實現,方法可以在抽象類中實現
  2. 介面要實現,抽象類要繼承,一個類可以實現多個介面,但只能繼承一個抽象類
  3. 介面強調設計理念為“has -a”的關係,抽象類強調“is -a”關係
  4. 介面中定義變數預設為public static final 要賦初值,方法必須是public,static,且只能是這兩個;抽象類中可以有自己的資料成員變數,也可以有非抽象的成員方法,而且成員變數預設為default。這些成員變數可以在子類中被重新定義,也可以重新賦值,抽象方法(有abstract修飾)不能用peivate,static,synchronized,native等訪問修飾符修飾,同時方法以分號結尾,並且不帶花括號
  5. 介面被運用於比較常用的功能,便於日後的維護或者新增刪除方法;而抽象類更傾向於充當公共類的角色,不適用於對裡面的程式碼進行修改

    介面是一種特殊形式的抽象類,使用介面完全有可能實現與抽象類相同的操作。當子類和父類之間存在有邏輯上的層次結構時,推薦使用抽象類;當用於不同類之間,定義不同類之間的通訊規則,希望支援差別較大的兩個或者更多物件之間的特定互動行為時,應該使用介面。 
    此外,介面可以繼承介面,抽象類可以實現介面,抽象類也可以繼承具體類。抽象類也可以有靜態的main方法。

24、靜態巢狀類 (Static Nested Class) 和內部類(Inner Class)的不同?

Inner Class(內部類)定義在類中的類。 (一般是JAVA的說法)

Nested Class(巢狀類)是靜態(static)內部類。(一般是C++的說法)
靜態內部類:

1 建立一個static內部類的物件,不需要一個外部類物件

2 不能從一個static內部類的一個物件訪問一個外部類物件

25、Java 中會存在記憶體洩漏嗎,請簡單描述。

(1)靜態集合類,例如HashMap和Vector。如果這些容器為靜態的,由於它們的宣告週期與程式一致,那麼容器中的物件在程式結束之前將不能被釋放,從而造成記憶體洩漏。

(2)各種連線,例如資料庫的連線、網路連線以及IO連線等。

(3)監聽器。在Java語言中,往往會使用到監聽器。通常一個應用中會用到多個監聽器,但在釋放物件的同時往往沒有相應的刪除監聽器,這也可能導致記憶體洩漏。

(4)變數不合理的作用域。一般而言,如果一個變數定義的作用域大於其使用範圍,很有可能會造成記憶體洩漏,另一方面如果沒有及時地把物件設定為Null,很有可能會導致記憶體洩漏的放生

26、抽象的(abstract)方法是否可同時是靜態的(static), 是否可同時是本地方法(native),是否可同時被 synchronized 修飾?

答:都不能。

抽象方法需要子類重寫,而靜態的方法是無法被重寫的,因此二者是矛盾的。

本地方法是由原生代碼(如C程式碼)實現的方法,而抽象方法是沒有實現的,也是矛盾的。

synchronized和方法的實現細節有關,抽象方法不涉及實現細節,因此也是相互矛盾的。

27、闡述靜態變數和例項變數的區別。

在語法定義上的區別:靜態變數前要加static關鍵字,而例項變數前則不加。
在程式執行時的區別:例項變數屬於某個物件的屬性,必須建立了例項物件,其中的例項變數才會被分配空間,才能使用這個例項變數。靜態變數不屬於某個例項物件,而是屬於類,所以也稱為類變數,只要程式載入了類的位元組碼,不用建立任何例項物件,靜態變數就會被分配空間,靜態變數就可以被使用了。總之,例項變數必須建立物件後才可以通過這個物件來使用,靜態變數則可以直接使用類名來引用。

28、是否可以從一個靜態(static)方法內部發出對非靜態(non-static)方法的呼叫?

不可以。因為非static方法是要與物件關聯在一起的,必須建立一個物件後,才可以在該物件上進行方法呼叫,而static方法呼叫時不需要建立物件,可以直接呼叫。也就是說,當一個static方法被呼叫時,可能還沒有建立任何例項物件,如果從一個static方法中發出對非static方法的呼叫,那個非static方法是關聯到哪個物件上的呢?這個邏輯無法成立,所以,一個static方法內部發出對非static方法的呼叫。

29、如何實現物件克隆?

兩種不同的克隆方法,淺克隆(ShallowClone)和深克隆(DeepClone)。 
在Java語言中,資料型別分為值型別(基本資料型別)和引用型別,值型別包括int、double、byte、boolean、char等簡單資料型別,引用型別包括類、介面、陣列等複雜型別。淺克隆和深克隆的主要區別在於是否支援引用型別的成員變數的複製。 
有兩種方式: 
1). 實現Cloneable介面並重寫Object類中的clone()方法; 
2). 實現Serializable介面,通過物件的序列化和反序列化實現克隆,可以實現真正的深度克隆;

30、String s = new String(“xyz”); 建立了幾個字串物件?

    在String的工作原理中,已經提到了,new 一個String物件,是需要先在字串常量中查詢相同值或建立一個字串常量,然後再在記憶體中建立一個String物件,所以 String s = new String("xyz"); 會建立兩個物件。

31、介面是否可繼承(extends)介面?抽象類是否可實現(implements)介面?抽象類是否可繼承具體類(concrete class)?

介面可以繼承介面,而且支援多重繼承。抽象類可以實現(implements)介面。抽象類可繼承具體類也可以繼承抽象類。

32、一個 ".java" 原始檔中是否可以包含多個類(不是內部類)?有什麼限制?

這個是可以的,一個“.java”原始檔裡面可以包含多個類,但是隻允許有一個public類,並且類名必須和檔名一致。

每個編譯單元只能有一個public 類。這麼做的意思是,每個編譯單元只能有一個公開的介面,而這個介面就由其public 類來表示。
你可以根據需要,往這個檔案裡面新增任意多個提供輔助功能的package 許可權的類。但是如果這個編譯單元裡面有兩個或兩個以上的public 類的話,程式就不知道從哪裡匯入了,編譯器就會報錯。

33、Anonymous Inner Class(匿名內部類) 是否可以繼承其它類?是否可以實現介面?

回答:匿名內部類在實現時必須藉助一個藉口或者一個抽象類或者一個普通類來構造,從這過層次上講匿名內部類是實現了介面或者繼承了類,但是不能通過extends或implement關鍵詞來繼承類或實現介面。

匿名內部類即沒有名字的內部類。當我們只需要用某一個類一次時,且該類從意義上需要實現某個類或某個介面,這個特殊的擴充套件類就以匿名內部類來展現。

一般的用途:

1、覆蓋某個超類的方法,並且該擴充套件類只在本類內用一次。

2、繼承抽象類,並例項化其抽象方法,並且該擴充套件類只在本類內用一次。

3、實現介面,例項化其方法,並且該擴充套件類只在本類內用一次。

34、內部類可以引用它的包含類(外部類)的成員嗎?有沒有什麼限制?

完全可以。如果不是靜態內部類,那沒有什麼限制!
如果你把靜態巢狀類當作內部類的一種特例,那在這種情況下不可以訪問外部類的普通成員變數,而只能訪問外部類中的靜態成員

35、Java 中的 final 關鍵字有哪些用法?

(1)修飾類:表示該類不能被繼承;

(2)修飾方法:表示方法不能被重寫;

(3)修飾變數:表示變數只能一次賦值以後值不能被修改(常量)。

36、資料型別之間的轉換:

1)低階到高階的自動型別轉換;

2)高階到低階的強制型別轉換(會導致溢位或丟失精度);

3)基本型別向類型別轉換;

4)基本型別向字串的轉換;

5)類型別向字串轉換

具體的不再詳細說明,應該一想就明白了。

37、如何實現字串的反轉及替換?

可用字串構造一 StringBuffer 物件,然後呼叫 StringBuffer 中的 reverse方法即可實現字串的反轉

呼叫 replace 方法即可實現字串的替換。

public class test {

    public static void main(String[] args) {

    StringBuffer sb=new StringBuffer("hello");

    System.out.println(sb);

    sb.reverse();

    System.out.println(sb);

    }

}

輸出結果:

hello
olleh

38、怎樣將 GB2312 編碼的字串轉換為 ISO-8859-1 編碼的字串?


String s1 = "你好";
String s2 = new String(s1.getBytes("GB2312"), "ISO-8859-1");

39、日期和時間:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
try {  
    //1、日期轉字串  
    Calendar calendar = Calendar.getInstance();  
    Date date = calendar.getTime();  
    String dateStringParse = sdf.format(date);  
    System.out.println(dateStringParse);  
    //2、字串轉日期  
    String dateString = "2017-12-20 14:02:08";  
    Date dateParse = sdf.parse(dateString);  
    System.out.println(dateParse);  
} catch (ParseException e) {  
    e.printStackTrace();  
}      

40、列印昨天的當前時刻。

  public static void main(String[] args) {
    // TODO Auto-generated method stub
    Calendar cal = Calendar.getInstance();
    cal.add(Calendar.DATE, -1);
    System.out.println(cal.getTime());
  }

相關推薦

通往 BATJ160 Java 試題答案

一、題目(1~40題) 1、面向物件的特徵有哪些方面? 2、訪問修飾符 public,private,protected, 以及不寫(預設)時的區別? 3、String 是最基本的資料型別嗎? 4、float f=3.4; 是否正確? 5、short s1 = 1;

117Java試題答案大多都是專案裡面所用到的技術點

1 SpringBoot整合SpringMVC的jar包的名字: spring-boot-starter-web 2 SpringBoot整合Durid連線池的jar包的名字: Durid-spring-boot-starter 3 SpringB

華為的JAVA試題答案部分

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

面試第一家公司的試題答案

1.談談對跨域的理解,怎麼處理跨域? 簡單的理解:瀏覽器或者JavaScript說處於安全方面的考慮,對同源策略的限制。 處理的方法一:porxy代理 通過同域名的web伺服器建立一個代理,比如說杭州的伺服器後臺(www.hangzhou.com/porxy-hangzho

java試題答案基礎題122,程式碼題19

      JAVA相關基礎知識   1、面向物件的特徵有哪些方面    1.抽象:   抽象就是忽略一個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象並不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節。抽象包括兩個方面,一是過程抽

試題收集-java試題答案基礎題122,程式碼題19

JAVA相關基礎知識 1、面向物件的特徵有哪些方面  1.抽象: 抽象就是忽略一個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象並不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節。抽象包括兩個方面,一是過程抽象,二是資料抽象。

美團、滴滴、阿里、京東的 Dubbo / JVM / Spring 試題答案1

一、阿里巴巴面試題 二、京東面試題 三、美團面試題 四、滴滴面試題 五、總結 目前網際網路公司面試考點為: 1.效能調優、演算法資料機構 2.高併發下資料安全、介面冪等性、原子性等 3.分散式下協同、已經鎖的處理 4.資料庫

java試題集總結

俗話說金三銀四金九銀十,這不,我昨天就跑去面試了一家公司,然後感覺自己萌萌噠,什麼都不會,開口就要一萬,然後別人二話不說,上來就是一套試題,結果懵逼了吧,期望薪資都不敢寫了,好吧,是在下放肆了。總結一下面試題,後續面試遇到的題都會記錄下來,閒來無事翻看一下。一.tomcat優

115個Java試題答案——

第一篇討論了面向物件程式設計和它的特點,關於Java和它的功能的常見問題,Java的集合類,垃圾收集器,本章主要討論異常處理,Java小應用程式,Swing,JDBC,遠端方法呼叫(RMI),Servlet和JSP。異常處理 Swing JDBC JSP 異常處理 43.Java中的兩種異

常見面試題答案

1. 什麼是 Java 虛擬機器?為什麼 Java 被稱作是 “ 平臺無關的程式語言 ” ? Java 虛擬機器是一個可以執行 Java 位元組碼的虛擬機器程序。 Java 原始檔被編譯成能被 Java 虛擬機器執行的位元組碼檔案。  Java 被設計成允許應用程式可以

HTML5常見面試題答案

1、文字超出顯示為省略號 //單行: overflow: hidden; text-overflow:ellipsis; white-space: nowrap; //多行: display: -w

想要去BATJ面試的話,先做完這160Java試題...

1、面向物件的特徵有哪些方面? 2、訪問修飾符public,private,protected,以及不寫(預設)時的區別? 3、String 是最基本的資料型別嗎? 4、float f=3.4;是否正確? 5、short s1 = 1; s1 = s1 + 1;有

分享10常考Java試題答案

Hi,大家好,今天給大家分享10道常考的Java面試題及答案,涉及到Java中的10個方面。每個領域一道題。希望你能有收穫。 <平臺無關性>什麼是平臺無關性,Java是如何做到平臺無關的? <序列化>如何自定義序列化策略 &l

115經典Java試題答案解析,掌握這些還怕面試官不下”跪“

面向物件程式設計(OOP) Java是一個支援併發、基於類和麵向物件的計算機程式語言。下面列出了面向物件軟體開發的優點: 程式碼開發模組化,更易維護和修改。 程式碼複用。 增強程式碼的可靠性和靈活性。 增加程式碼的可理解性。 面向物件程式設計有很多重要的特性,比如

100經典Java試題答案

   面向物件編程(OOP) Java是一個支援併發、基於類和麵向物件的計算機程式語言。下面列出了面向物件軟體開發的優點: 程式碼開發模組化,更易維護和修改。程式碼複用。增強程式碼的可靠性和靈活性。增加程式碼的可理解性。 面向物件程式設計有很多重要的特性,比如:封裝,

100+經典Java試題答案解析

是什麽 自定義 我們 計數 接口類 同步方法 main err ans 面向對象編程(OOP) Java是一個支持並發、基於類和面向對象的計算機編程語言。下面列出了面向對象軟件開發的優點: 代碼開發模塊化,更易維護和修改。 代碼復用。 增強代碼的可靠性和靈活

Java 多執行緒試題答案非常全面

這篇文章主要是對多執行緒的問題進行總結的,因此羅列了40個多執行緒的問題。 這些多執行緒的問題,有些來源於各大網站、有些來源於自己的思考。可能有些問題網上有、可能有些問題對應的答案也有、也可能有些各位網友也都看過,但是本文寫作的重心就是所有的問題都會按照自己的理解回答一遍,不會去看網上的

近5年常考Java試題答案整理

下列面試題都是在網上收集的,本人抱著學習的態度找了下參考答案,有不足的地方還請指正,更多精彩內容可以關注我的微信公眾號:Java團長 1、面向物件的特徵有哪些方面? 抽象:將同類物件的共同特徵提取出來構造類。 繼承:基於基類建立新類。 封裝:將資料隱藏起來,對

史上最全 50 Redis 試題答案

1、什麼是Redis? Redis本質上是一個Key-Value型別的記憶體資料庫,很像memcached,整個資料庫統統載入在記憶體當中進行操作,定期通過非同步操作把資料庫資料flush到硬碟上進行儲存。因為是純記憶體操作,Redis的效能非常出色,每秒可以處理超過 10

近5年常考Java試題答案整理

近5年常考Java面試題及答案整理(一) 近5年常考Java面試題及答案整理(二) 下列面試題都是在網上收集的,本人抱著學習的態度找了下參考答案,有不足的地方還請指正,更多精彩內容可以關注我的微信公眾號:Java團長 68、Java中如何實現序列化,有什麼意義? 答:序