也有很多初學的朋友說,我java可不可以不學,直接學Android?
在此我說下我的理解:
Android目前主流的開發語言是java和kotlin,作爲開發語言本身,如果你掌握得不夠深,也許你依然能夠依葫蘆畫瓢寫出程序,但是深入到性能調優、內存泄露時,排查一些由於多線程或引用替換引發的Bug時,你會覺得力不從心,因爲你對語言還只是停留在用的層面,而沒到駕馭的程度。所以建議一定要學好java的基本功。如果你熟練掌握了,你會發現再去學習另一門語言,很快就能融入進去。
java書籍推薦如下:
Android學習書籍推薦如下:
Java的存儲
言歸正傳,今天我們來學習java的存儲。程序在運行時,對象是存儲在哪裏的,數據又是怎麼存放的?這塊也是面試官特別喜歡問的技術點:
寄存器
最快的存儲區域。java中代碼不可控制,C/C++可以代碼申請該區域
棧
在函數中定義的一些基本類型的變量數據和對象的引用變量都在函數的棧內存中分配。
堆
堆內存用來存放由new創建的對象和數組。 在堆中分配的內存,由Java虛擬機的自動垃圾回收器來管理。
方法區
被Java虛擬機加載的類信息、常量、靜態變量。
Java的數據類型分爲兩種:基本數據類型和引用類型。
基本數據類型
public class Test { static boolean bool; static byte by; // 8 bit static char ch; // 16 bit static double d; // 64 bit static float f; // 32 bit static int i; // 32 bit static long l; // 64 bit static short sh; //16 bit public static void main(String[] args) { System.out.println("Bool :" + bool); System.out.println("Byte :" + by); System.out.println("Character:" + ch); System.out.println("Double :" + d); System.out.println("Float :" + f); System.out.println("Integer :" + i); System.out.println("Long :" + l); System.out.println("Short :" + sh); }} 打印結果如下:Bool :falseByte :0Character:Double :0.0Float :0.0Integer :0Long :0Short :0
註釋中標明瞭每種數據類型所佔的位數。
PS: 這裏再簡單科普下字符,字節,位 ,B,KB,M這些的關係
Bit 意爲“位”或“比特”,是計算機運算的基礎,屬於二進制的範疇;Byte意爲“字節”,是計算機文件大小的基本計算單位;
1個字節(Byte) = 8 位(Bit)
1個字符 = 2 個字節
1KB = 1024 Byte(字節) = 1024*8 Bit( 位)
1MB = 1024KB
這樣大家應該理解我們平時文件大小含義了。
品略圖書館 http://www.pinlue.com/