2017年經典的Java基礎面試題
JDK(Java Development Kit)稱為Java開發包或Java開發工具,是一個編寫Java的Applet小程序和應用程序的程序開發環境。下面是小編整理的關於經典的Java基礎面試題,歡迎大家參考!
問題:如果main方法被聲明為private會怎樣?
答案:能正常編譯,但運行的時候會提示”main方法不是public的”。
問題:Java裏的傳引用和傳值的區別是什麼?
答案:傳引用是指傳遞的是地址而不是值本身,傳值則是傳遞值的一份拷貝。
問題:如果要重寫一個對象的equals方法,還要考慮什麼?
答案:hashCode。
問題:Java的”一次編寫,處處運行”是如何實現的?
答案:Java程序會被編譯成字節碼組成的class文件,這些字節碼可以運行在任何平台,因此Java是平台灣搞獨立立的。
問題:説明一下public static void main(String args[])這段聲明裏每個關鍵字的作用
答案:public: main方法是Java程序運行時調用的第一個方法,因此它必須對Java環境可見。所以可見性設置為pulic.
static: Java平台調用這個方法時不會創建這個類的一個實例,因此這個方法必須聲明為static。
void: main方法沒有返回值。
String是命令行傳進參數的類型,args是指命令行傳進的`字符串數組。
問題:==與equals的區別
答案:==比較兩個對象在內存裏是不是同一個對象,就是説在內存裏的存儲位置一致。兩個String對象存儲的值是一樣的,但有可能在內存裏存儲在不同的地方 .
==比較的是引用而equals方法比較的是內容。public boolean equals(Object obj) 這個方法是由Object對象提供的,可以由子類進行重寫。默認的實現只有當對象和自身進行比較時才會返回true,這個時候和==是等價的。String, BitSet, Date, 和File都對equals方法進行了重寫,對兩個String對象 而言,值相等意味着它們包含同樣的字符序列。對於基本類型的包裝類來説,值相等意味着對應的基本類型的值一樣。
public class EqualsTest {
public static void main(String[] args) {
String s1 = “abc”;
String s2 = s1;
String s5 = “abc”;
String s3 = new String(”abc”);
String s4 = new String(”abc”);
tln(”== comparison : ” + (s1 == s5));
tln(”== comparison : ” + (s1 == s2));
tln(”Using equals method : ” + ls(s2));
tln(”== comparison : ” + s3 == s4);
tln(”Using equals method : ” + ls(s4));
結果:
== comparison : true
== comparison : true
Using equals method : true
false
Using equals method :true
問題:如果去掉了main方法的static修飾符會怎樣?
答案:程序能正常編譯。運行時會拋NoSuchMethodError異常。
問題:為什麼oracle type4驅動被稱作瘦驅動?
答案:oracle提供了一個type 4 JDBC驅動,被稱為瘦驅動。這個驅動包含了一個oracle自己完全用Java實現的一個TCP/IP的Net8的實現,因此它是平台灣搞獨立立的,可以在運行時由瀏覽器下載,不依賴任何客户端 的oracle實現。客户端連接字符串用的是TCP/IP的地址端口,而不是數據庫名的tnsname。
問題:介紹一下finalize方法
答案: final: 常量聲明。 finally: 處理異常。 finalize: 幫助進行垃圾回收。
接口裏聲明的變量默認是final的。final類無法繼承,也就是沒有子類。這麼做是出於基礎類型的安全考慮,比如String和Integer。這樣也使得編譯器進行一些優化,更容易保證線程的安全性。final方法無法重寫。final變量的值不能改變。finalize()方法在一個對象被銷燬和回收前會被調用。finally,通常用於異常處理,不管有沒有異常被拋出都會執行到。比如,關閉連接通常放到finally塊中完成。
問題:什麼是Java API?
答案:Java API是大量軟件組件的集合,它們提供了大量有用的功能,比如GUI組件。
問題:GregorianCalendar類是什麼東西?
答案:GregorianCalendar提供了西方傳統日曆的支持。
問題:ResourceBundle類是什麼?
答案:ResourceBundle用來存儲指定語言環境的資源,應用程序可以根據運行時的語言環境來加載這些資源,從而提供不同語言的展示。
問題:為什麼Java裏沒有全局變量?
答案:全局變量是全局可見的,Java不支持全局可見的變量,因為:全局變量破壞了引用透明性原則。全局變量導致了命名空間的衝突。
問題:如何將String類型轉化成Number類型?
答案:Integer類的valueOf方法可以將String轉成Number。下面是代碼示例:
String numString = “1000〃;
int id=eOf(numString)alue();
問題:SimpleTimeZone類是什麼?
答案:SimpleTimeZone提供公曆日期支持。
問題:while循環和do循環有什麼不同?
答案:while結構在循環的開始判斷下一個迭代是否應該繼續。do/while結構在循環的結尾來判斷是否將繼續下一輪迭代。do結構至少會執行一次循環體。
問題:Locale類是什麼?
答案:Locale類用來根據語言環境來動態調整程序的輸出。
問題:面向對象編程的原則是什麼?
答案:主要有三點,多態,繼承和封裝。
-
Java獲取當前的系統時間的方法
在java中,我們可以利用程序獲取當前的'系統時間,那麼你知道該怎麼獲取嗎?下面跟yjbys小編一起來學習一下吧!一、獲取當前系統時間和日期並格式化輸出:import;importleDateFormat;publicclassNowString{publicstaticvoidmain(String[]args){SimpleDateFormatdf=ne...
-
Java數組定義常用方法
Java中的數組、是一種簡單的線性數據存儲結構、他用犧牲自動擴展大小來換取與集合相比的唯一優勢——查詢效率的提升。Java中的數組有什麼類型?我們要怎麼定義這些數組呢?下面跟yjbys小編一起來學習Java數組定義常用方法吧!java中有兩種數據類型:a)引...
-
Tomcat JVM如何優化
TomcatJVM優化是我們經常遇到的問題,下面YJBYS小編為大家整理了關於TomcatJVM如何優化的'文章,希望對你有所幫助。#-Xmx6000m:設置JVM最大可用內存為6000MB#-Xms6000m:設置JVM初始可用內存為6000MB#-Xmn2g:設置年輕代大小為2G#-Xss128k:設置每個線程的堆棧大小為128...
-
2016年Java認證考試題
Java編程語言是個簡單、面向對象、分佈式、解釋性、健壯、安全與系統無關、可移植、高性能、多線程和靜態的語言。下面來看看java認證的考試題!1.在Java中,負責對字節代碼解釋執行的是A.應用服務器B.虛擬機C.垃圾回收器D.編譯器2.一個棧的輸入序列為12345,則下列...