在公衆號回覆課程,免費獲取JAVA全棧課程java
做者 | 顏 羣程序員
公衆號 | 大數據和人工智能技術web
1.面試
對於JVM而言,普通方法是在JVM【運行期】【靜態】綁定的,而屬性是在【編譯期】【動態】綁定的,所以纔會有 方法重寫 和 屬性覆蓋 兩者邏輯不一致的狀況,這應該是根本緣由。具體區別以下:編程
(1)當子類重寫了父類的方法時,父類的引用會調用【子類】的重名方法; 數組
(2)當子類和父類的屬性重名時,父類的引用會調用【父類】的重名屬性。安全
簡言之:方法會被重寫,但屬性不會被覆蓋。微信
2.網絡
JVM在首次加載類時,會對靜態屬性、靜態塊進行一次初始化,注意此時尚未產生對象。多線程
以後,當類加載完畢後,才能實例化出對象,並在對象產生的同時對實例成員進行初始化。
3.
(1)當繼承和接口同時存在時,須要先繼承,後實現
(2)Java中,類只能單繼承,但接口能夠多繼承
例如,假設C是抽象類,I1和I2是接口。
正確寫法:public class A extends C implements I1,I2{}
錯誤寫法:public class A implements I1,I2 extends C {}
4.
在JDK8.0之前,局部內部類在訪問包含他的方法中的變量時,必須給這個變量加final修飾;但自JDK8.0之後,JDK會自動添加final,所以能夠省略final,如圖。
5.
建立二維數組的時候,能夠同時設置第一維長度和第二維長度,也能夠只設置第一維長度,但不能夠只設置第二維長度。
以下都是正確的:
int[][] arr = new int[10][10;
int[][] arr = new int[10][];
以下是錯誤的:
int[][] arr = new int[][10];
6.
Java程序的第一行 能夠寫什麼?
空行、註釋或者package語句
7.
java程序在使用相對路徑,加載靜態資源時:
(1)普通Java工程加載的是源文件src目錄中的靜態資源;
(2)Maven工程加載的是字節碼目錄target/classes中的靜態資源;
(3)在編寫源碼時,程序中相對路徑基於的「當前路徑」是在源文件src目錄下 ,不是在classes目錄下。(也就是當前路徑是基於A.java,而不是基於A.class)。
以上三條中,「(1)」和「(3)」是一致的,因此普通Java工程方式加載靜態資源,沒有什麼,直接寫相對路徑就行;但「(2)」和「(3)」在讀取路徑時是矛盾的,所以Maven工程在加載靜態資源時,就不能使用相對路徑,只能使用絕對路徑。能夠點擊超連接,看看這篇 -> Java程序使用Maven後沒法運行?
8.
對字符串的修改不頻繁:用String。
對字符串的修改頻繁,且字符串是全局變量或者須要多線程支持:用StringBuffer(線程安全)。
對字符串的修改頻繁,且字符串是局部變量或者是單線程:用StringBuilder (非線程安全)。
9.
在Java中只有值傳遞,並不存在「引用傳遞」。
所謂的「引用傳遞」,實際傳遞的是 引用地址的值。
10.
初學者使用數組時,常犯的錯:
int[] nums ;
nums = {3,1,2} ; ×
此種賦值方式,必須合併在一行:
int[] nums = {3,1,2}; √
11.
Java中,3*0.3f的運算結果是:0.90000004
由於float是32位的,最多可以容納下 2的32次方 個數字。
但float的小數,包含着無窮無盡個數字, 所以 2的32次方個位置 沒法容納所有小數,只能近似。既然是近似,就可能出現一些運算偏差。
12.
a = a + 2 和 a += 2 等價嗎?不!
舉個反例:
byte b,b1 = ... ;
b = b +b1 ; ×(編譯時報錯)
b += b1 √
13.
用Java編寫單例模式,一行代碼就夠了:
public enum Singleton{ INSTANCE; }
這也是衆多大神推薦的寫法
14.
若是使用「記事本」編寫java代碼。而且在.java文件中有漢字,而後在Javac編譯時出現了 錯誤提示「 錯誤: 編碼GBK的不可映射字符」
解決:將文件的編碼改成ANSI碼、或UTF-8後再試,如圖。
提示:java採用的默認 字符編碼集是unicode
15.
不論你怎麼學,編碼都是很難完全學懂的。然而從實際狀況來看,學懂50%或者學懂80%,實際差異並不大。真正決定一個程序員可以走多遠的,是他的思惟能力。能夠點擊超連接,看看這篇 -> 編程初級和高手的區別,究竟在哪?
- 完 -
推薦閱讀
▲
在「大數據和人工智能技術」聊天對話框回覆如下關鍵詞,可得到相關信息喲
回覆【資料】獲取JAVA全棧視頻的配套資料
回覆【最新課程】獲取一門還沒有公開的高級課程(不按期更換)
回覆【提問】獲取免費答疑方式
回覆【課程】獲取JAVA全棧視頻教程 + 配套資料
回覆【軟件】獲取經常使用的開發軟件(逐步完善)
回覆【億級源碼】獲取本號做者出版的《億級流量Java高併發與網絡編程實戰》一書配套源碼
回覆【javase】獲取JAVA基礎視頻教程
更多課程,逐步開放...
本文分享自微信公衆號 - 大數據和人工智能技術(Big_Data-AI)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。