Java作為一門廣受歡迎的程式語言,其面試題也是備受關注。下面我們就來看看三道經典的Java面試題以及它們的解答。
一、 String是如何判斷相等的?
在Java中,String是一種特殊的對象,因此它的判斷相等也是需要特別注意的。一般來說,有兩種判斷String相等的方法。
在Java中,使用equals方法可以判斷兩個String物件是否相等。這個方法會比較兩個String物件所包含的字串是否相同,如果相同,傳回true,不同則傳回false。
例如:
String str1 = "Hello"; String str2 = "Hello"; if(str1.equals(str2)){ System.out.println("str1和str2相等"); } else { System.out.println("str1和str2不相等"); }
輸出結果為:str1和str2相等。
要注意的是,使用equals方法比較字串相等時,比較的是字串的值是否相等,而不是記憶體位址是否相等。
Java中也可以使用==運算子判斷兩個String物件是否相等。但需要注意,在使用==運算子比較兩個物件時,比較的是兩個物件的記憶體位址是否相等,而不是字串內容是否相等。
例如:
String str1 = "Hello"; String str2 = "Hello"; if(str1 == str2){ System.out.println("str1和str2地址相等"); } else { System.out.println("str1和str2地址不相等"); }
輸出結果為:str1和str2位址相等。
要注意的是,當對String物件進行賦值操作時,Java中的字串池會自動建立一個新的字串對象,因此使用==運算子比較字串時,需要特別注意。
二、Java中的Final是什麼?
在Java中,final關鍵字可以用來修飾類別、方法以及變數。下面我們來分別解釋一下final關鍵字的作用。
如果將一個類別用final修飾,則代表這個類別不能被繼承。例如:
public final class MyClass{ //... }
如果將一個方法用final修飾,代表這個方法不能被子類別重寫。例如:
public class MyClass{ public final void myMethod(){ //... } }
如果將一個變數用final修飾,代表這個變數不能被重新賦值。例如:
public class MyClass{ public final int MY_CONSTANT = 10; }
要注意的是,final關鍵字修飾的變數必須在宣告時就進行初始化賦值。
三、Java中的多態是什麼?
在Java中,多型是指同一個介面可以實現不同的物件。具體來說,多態有兩種形式:
#編譯時多態指的是透過父類別類型的引用,呼叫子類類型的物件的方法。例如:
Parent parent = new Child(); parent.myMethod();
在這個範例中,parent是父類別類型的引用,但是它卻呼叫了子類別類型的物件中的myMethod方法。
要注意的是,編譯時多型態只能呼叫父類別和父類別中的方法,不能呼叫子類別特有的方法。
運行時多態指的是程式運行的過程中,根據實際物件的型別呼叫對應的方法。例如:
public class MyClass{ public static void main(String[] args){ Animal animal = new Dog(); animal.makeSound(); } } class Animal{ public void makeSound(){ System.out.println("动物发出声音"); } } class Dog extends Animal{ public void makeSound(){ System.out.println("汪汪汪"); } }
在這個例子中,animal是Animal類型的引用,但是它所指向的是Dog類型的對象,因此當呼叫makeSound方法時,實際呼叫的是Dog類型物件中的makeSound方法,輸出的結果也是「汪汪汪」。
要注意的是,運行時多型態只能在執行時間決定呼叫的方法,因此可能會產生執行時間錯誤。
綜上所述,Java中的String判斷相等、final關鍵字以及多態是面試中經常被問到的問題,程式設計師需要對這些問題進行深入的理解和掌握。
以上是Java中的面試題:三道經典題解的詳細內容。更多資訊請關注PHP中文網其他相關文章!