面試題目總結
1.下面識別符號命名正確的有:
命名規範沒有記好導致少選:識別符號就是給變數、類或方法起的名字。可以用字母、下劃線或美元符號開頭,區分大小寫,沒有最大長度限制。
//第二題:下面哪些程式片段會導致錯誤; //A String s = "gone with the wind"; String t = "good"; String k = s+t; //B String s1 = "gone with the wind"; String t1; // t = s1[4]+"one"; //B出錯 s1 不是陣列型別 //C String s2 = "gone with the wind"; String standard = s2.toUpperCase();//D String s3 = "home directory"; //String t3 = s3 -"directory"; //報錯:字串不能相減
3.== 與 equals的區別:
==: 是比較物件的地址是否一致,
equals:是比較兩個物件的內容是否一致;
可以去參考一下部落格:https://www.cnblogs.com/Eason-S/p/5524837.html,他寫的挺好的。
4:考察do while語句:
public class Test1 { void printValue(int m){ do{ System.out.println("The value is "+ m); }while (--m>10);//題目少了分號; } public static void main(String args[]){ int i = 10; Test1 t = new Test1(); t.printValue(i);//列印輸出:The value is 10 } }
第五題;
float f = 11.1;//錯誤,在數字後面加f就對 double d = 5.3E12;//好坑這題;E它表示科學計數法,5.3E12 == 5.3乘以10的12次方 double d3 = 3.1415926;//小數預設為double型別,正確 double d2 = 2.14D;//d/D是標識double型別的數字,正確
第六題:構造器問題:
class Person { String name,department; int age; public Person(String n) { this.name = n; } public Person(String n, int age) { this.name = n; this.age = age; } public Person(String n,String d,int a){ // Person(n,a);//錯誤,加加上new就可以; // this(Person(n,a));//錯誤,沒有這種寫法 this(n,a);//正確呼叫person(string n,int a): this 表示當前類物件; // this(name, age);//name age,變數未找到 department = d; } }
//變數
java語言支援的變數型別:
類變數(靜態變數):獨立於方法之外的變數,用 static 修飾。
區域性變數:類的方法中的變數。
例項變數(全域性變數):獨立於方法之外的變數,不過沒有 static 修飾。
public class Variable{
static int allClicks=0; // 類變數
String str="hello world"; // 例項變數
public void method(){
int i =0; // 區域性變數
}
}
JAVA的區域性變數
區域性變數宣告在方法、構造方法或者語句塊中;區域性變數在方法、構造方法、或者語句塊被執行的時候建立,當它們執行完成後,變數將會被銷燬。
訪問修飾符不能用於區域性變數;
區域性變數只在宣告它的方法、構造方法或者語句塊中可見;
區域性變數是在棧上分配的。
區域性變數沒有預設值,所以區域性變數被聲明後,必須經過初始化,才可以使用。
JAVA的例項變數
例項變數宣告在一個類中,但在方法、構造方法和語句塊之外;當一個物件被例項化之後,每個例項變數的值就跟著確定;
例項變數在物件建立的時候建立,在物件被銷燬的時候銷燬;
例項變數的值應該至少被一個方法、構造方法或者語句塊引用,使得外部能夠通過這些方式獲取例項變數資訊;
例項變數可以宣告在使用前或者使用後;
訪問修飾符可以修飾例項變數;
例項變數對於類中的方法、構造方法或者語句塊是可見的。一般情況下應該把例項變數設為私有。通過使用訪問修飾符可以使例項變數對子類可見;
例項變數具有預設值。數值型變數的預設值是0,布林型變數的預設值是false,引用型別變數的預設值是null。變數的值可以在宣告時指定,也可以在構造方法中指定;例項變數可以直接通過變數名訪問。但在靜態方法以及其他類中,就應該使用完全限定名:ObejectReference.VariableName。
JAVA的類變數(靜態變數)
類變數也稱為靜態變數,在類中以static關鍵字宣告,但必須在方法構造方法和語句塊之外。
無論一個類建立了多少個物件,類只擁有類變數的一份拷貝。
靜態變數除了被宣告為常量外很少使用。常量是指宣告為public/private,final和static型別的變數。常量初始化後不可改變。
靜態變數儲存在靜態儲存區。經常被宣告為常量,很少單獨使用static宣告變數。
靜態變數在程式開始時建立,在程式結束時銷燬。
與例項變數具有相似的可見性。但為了對類的使用者可見,大多數靜態變數宣告為public型別。
預設值和例項變數相似。數值型變數預設值是0,布林型預設值是false,引用型別預設值是null。變數的值可以在宣告的時候指定,也可以在構造方法中指定。此外,靜態變數還可以在靜態語句塊中初始化。
靜態變數可以通過:ClassName.VariableName的方式訪問。
類變數被宣告為public static final型別時,類變數名稱一般建議使用大寫字母。如果靜態變數不是public和final型別,其命名方式與例項變數以及區域性變數的命名方式一致。
許可權訪問修飾符預設的,也稱為 default,在同一包內可見,不使用任何修飾符。
私有的,以 private 修飾符指定,在同一類內可見。
共有的,以 public 修飾符指定,對所有類可見。
受保護的,以 protected 修飾符指定,對同一包內的類和所有子類可見。
作用域當前類同一包子孫類其他包
public √ √ √ √
protected √ √ √ ×
default √ √ × ×
private √ × × ×
理解一下垃圾回收機制:自己需要對它有一定的瞭解。
Java的垃圾回收機制是Java虛擬機器提供的能力,用於在空閒時間以不定時的方式動態回收無任何引用的物件佔據的記憶體空間。
垃圾回收回收的是無任何引用的物件佔據的記憶體空間而不是物件本身。
System.gc()
Runtime.getRuntime().gc()
上面的方法呼叫時用於顯式通知JVM可以進行一次垃圾回收,但真正垃圾回收機制具體在什麼時間點開始發生動作這同樣是不可預料的,這和搶佔式的執行緒在發生作用時的原理一樣。
基本資料型別的儲存位置考核:
java 的原始資料型別也就是八大基本資料型別:byte ,short ,int , long, char ,boolean, float, double;
public class Test2 { int arr[] = new int[10]; public static void main(String a[]){ System.out.println(arr[1]);//編譯出錯;沒有 static 的arr陣列: } }