一切都是对象
? ? Java既支持面向過程編程,又支持面向對象編程,但Java假定你只進行面向對象編程。在Java中幾乎一切都是對象,這些對象通過引用進行操縱。最佳實踐是創建引用的時候就進行初始化,即創建一個對象并將其綁定到引用上。
? ? 數據存儲位置:
? ? (1)寄存器:寄存器位于CPU內部,是速度最快的存儲,但數量極其有限,它對于Java而言是透明的。
? ? (2)棧:位于RAM中,但通過棧指針(stack pointer)可從CPU直接獲得支持。棧指針下移創建內存,上移釋放空間。速度僅次于寄存器,但在編譯期就需要知道棧里所有元素的確切生命周期,對象引用位于棧內。
? ? (3)堆:也位于RAM中,不需要在編譯期就知道存儲的生命周期,但分配和釋放存儲空間需要更長時間(Java的分配策略已經非常快,所以一般不需要擔心)。
? ? (4)常量存儲:所有字符串常量和字符串常量表達式都位于常量存儲中。
? ? (5)非RAM存儲:可以脫離程序控制,主要有兩種,一種是serialized objects(streamed objects),用于發送到另一臺機器上;第二種是persisted objects,用于將對象存放在磁盤上。Java提供了輕量級的持久化,JDBC和Hibernate提供了更復雜的支持用于將對象信息存放在數據庫中,以及從數據庫中重新獲取對象信息。
? ? 對于原始數據類型,Java并不創建對象,而是變量直接存儲值,因為創建許多小對象會導致非常低效。Java基本數據類型大小:
? ??
? ? boolean類型沒有指定大小,可以持有true和false兩個值即可。
? ? BigInteger和BigDecimal提供任意精度的整數和浮點數運算,代價是速度會更慢一些。
? ? Java保證會初始化數組,創建對象數組時,實際上創建的是對象引用數組,引用會被初始化為null,原始數據類型的數組元素會被初始化為0或false,char被初始化為'\u0000'(null)(打印出來是一個空格)。
? ? Java數組會使用額外的空間保存數組的大小,并在運行時檢查每次數組訪問是否超出范圍。
? ? 程序員需要創建所有對象,但不需要銷毀任何對象。作用域決定了在其內定義的變量名的可見性和生命周期,作用域由花括號決定。Java對象與基本類型生命周期不同,基本類型出作用域即失效,對象出作用域后仍然存在。
? ? Java中有兩種注釋:第一種多行注釋以/*開頭,以*/結束;第二種單行注釋以//開頭。單行注釋更易于使用,因為兩次輸入的按鍵相同,另外IDE快捷鍵更易于操作。
? ? field(data member)、method(member function)。
? ? Java使用域名反轉對包進行命名,并將包名對應到路徑上,缺點是導致路徑很深,許多頂層目錄幾乎是空的,目的僅僅是反應URL。
? ? 使用import最好將所有的類都明確指出,IDE可以設置某個包引用超過多少個類后自動改為impot *。
? ? 靜態域只有1份,非靜態域每個對象都有相應的存儲。但無論靜態還是非靜態方法都只存儲1份,區別在于是否能夠不創建對象即可調用。
? ? Sytem.getProperties.list(System.out);
? ? System.getProperty("user.name");
?
轉載于:https://www.cnblogs.com/cbkun/p/11055151.html
總結
- 上一篇: Java Web学习总结(6)——通过S
- 下一篇: 如何使 highchart图表标题文字可