摘要:方法的基本組成包括名稱參數返回值方法體方法名和參數列表唯一的標識出某個方法。如果返回的類型是,則的作用僅是退出方法否則必須返回正確的返回值包名名字可見性約定以域名反轉作為包名,用來劃分子目錄,并且全部小寫。
點擊進入我的博客 2.1用引用操縱對象
盡管一切都看作對象,但操縱的標識符實際上是對象的一個“引用”。
String s; // s是一個String類型的引用, 并沒有任何對象與其關聯 String str = "imbug"; // 創建str引用的時候同時進行初始化2.2 必須由你創建所有對象
使用new操作符來創建新對象并與引用關聯。
String str = new String("imbug");2.2.1 存儲到什么地方
寄存器(不管你的事)——最快的存儲區、位于處理器內部、空間極小、不能直接控制
堆棧(棧)——位于RAM、堆棧指針向下移動分配新內存、堆棧指針向上釋放內存、存儲對象的引用
堆——位于RAM、存放Java對象、耗時比堆棧長
常量存儲——程序代碼內部
非RAM存儲——如磁盤
2.2.2 特殊:基本類型問題:用new創建的對象在堆里,對訪問頻繁而且簡單的對象代價太大。
方法:不用new創建變量,而是創建一個不是引用的變量,直接存儲“值”在棧中。
基本類型 | 大小 | 最小值 | 最大值 | 包裝器類型 |
---|---|---|---|---|
boolean | - | - | - | Boolean |
char | 16bits | 0 | 2^16-1 | Character |
byte | 8bits | -128 | 127 | Byte |
short | 16bits | -2^15 | 2^15-1 | Short |
int | 32bits | -2^31 | 2^31-1 | Integer |
long | 64bits | -2^63 | 2^63-1 | Long |
float | 32bits | - | - | Float |
double | 64bits | - | - | Double |
void | - | - | - | Void |
Java確定每種基本數據類型所占空間的大小,跟硬件平臺無關。
boolean類型所占類型的大小沒用明確指定,今定義為能夠取字面值true、false
在《Java虛擬機規范》一書的描述,“雖然定義了boolean這種數據類型,但是只對它提供了非常有限的支持。在Java虛擬機中沒有任何供boolean值專用的字節碼指令,Java語言表達式所操作的boolean值,在編譯之后都使用Java虛擬機中的int數據類型來代替,而boolean數組將會被編碼成Java虛擬機的byte數組,每個元素boolean元素占8位”。
這樣我們可以得出boolean類型占了多帶帶使用是4個字節,在數組中又是1個字節。
根據http://docs.oracle.com/javase...:The boolean data type has only two possible values: true and false. Use this data type for simple flags that track true/false conditions. This data type represents one bit of information, but its "size" isn"t something that"s precisely defined.
Java提供了BigInteger和BitDecimal兩個高精度計算的類,但是沒有對應的基本類型。
2.2.3 數組Java確保數組會被初始化,而且不能在它的范圍之外被訪問;這種范圍檢查的原理是每個數組上的少量內存開銷和運行時的下標檢查。
創建一個數組對象Object[] arr = new Object[10];時,實際上是創建了一個引用的數組,數組中的每個引用都自動被初始化為null;如果是創建的是基本數據類型數組,則會講該數組所占的棧內存全部置為0。
Java語言中,作用域由花括號{}位置決定,在作用域中定義的變量只可作用于作用域結束之前。
2.3.2 對象的作用域Java對象和基本類型的生命周期不一致。
{ String str = new String("imbug"); }
上述代碼中當超出}的范圍之后,引用str已經消失了,但它指向的String對象仍然存在在堆內存中,但我們無法訪問該對象,因為它的引用已經消失。
Java使用垃圾回收器來管理new創建的對象,并辨別那些不會再被使用的對象,然后釋放其占據的內存空間。
使用class關鍵字來表示“一種新的類型”。
在Java中,你的工作就是定義類,產生這些類的對象,以及發送消息給這些對象。
class ClassName { }
Java會對全部字段進行初始化
基本數據類型初始值為0(false、u0000等…)
對象的引用初始值null
當變量作為類的成員時才會被初始化,局部變量不會被初始化
ReturnType methonName( /* Arguement list */ ) { /* Method body */ }
Java方法決定了一個對象能夠接收什么樣的消息。
方法的基本組成包括:名稱、參數、返回值、方法體
方法名和參數列表唯一的標識出某個方法。
Java中的方法只能作為類的一部分來創建。
方法的參數列表指定要傳遞給方法什么樣的信息。
參數列表中必須指定每個所傳遞對象的類型及名字。
傳遞的實際上是引用。
如果返回的類型是void,則return的作用僅是退出方法;否則必須返回正確的返回值
2.6 包名、import、static 名字可見性Java約定以域名反轉作為包名,用.來劃分子目錄,并且全部小寫。
import關鍵字使用import關鍵字引用其他定義好的類
static關鍵字現象:創建一個class的時候,只是描述一個類的對象的外觀與行為。在new創建該類的對象之后,才會分配數據存儲空間,其方法才可以被外界調用。
問題:只想為特定域分配單一存儲空間而不想去分配多少對象;希望某個方法不與包含它的類的任何對象關聯在一起。
方法:static關鍵字
當聲明一個事物是static時,就意味著這個字段或者方法不與任何對象綁定在一起
不需要創建對象也可以訪問該類的任何static域和static方法
即使沒有顯示地聲明為static,類的構造器實際上也是靜態方法
和其他任何方法一樣,static方法可以創建或使用與其類型相同的被命名對象,因此,static方法常常拿來做“牧羊人”的角色,負責看護與其隸屬同一類型的實例群。如果你的類代表羊,那么創建的若干的該類的對象,就好像建了一個羊群,然而,類中的static方法就好比牧羊人一樣,無論你的羊群中有多少只羊,而牧羊人只有一個。也就是說, static方法或屬性與對象的創建無關,只和類有關。
2.7 main方法、編譯、運行import java.util.Date; public class Test { public static void main(String[] args) { // main方法args用于接收命令行參數 System.out.println(new Date()); } }2.8 注釋和文檔 2.8.1 java的注釋
/* 多行注釋 */ // 單行注釋2.8.2 javadoc
javadoc是用于提取注釋的工具,他可以找出程序內的特殊注釋標簽并解析。
javadoc輸出的是一個HTML文件。
所有javadoc命令都只能在/* */注釋中出現。
使用javadoc有兩種方式:嵌入HTML或使用文檔標簽
獨立文檔標簽:以@字符開頭,且要置于注釋行的最前面
行內文檔標簽:出現在任何地方,以@開頭,但要放在{}內
javadoc只能為public和protect成員進行文檔注釋,private和包內可訪問的注釋會被忽略,輸出結果中看不到它們。使用-private標記可以把private注釋也包括進去。
不要在嵌入式HTML標簽中使用標題如、
,否則會跟javadoc自己的標題沖突。
@see package.class#member:允許用戶引用其他類的文檔
{@link package.class#member}:跟@see相似,只是它用于行內
{@docRoot}:該標簽產生到文檔根目錄的相對路徑,用于文檔樹
{@inheritDoc}:從這個類的基類繼承相關文檔到當前文檔注釋中
@version:版本信息;-version標記可以從生成的HTML中提取出版本信息
@author:作者信息;-author標記;可以使用多個@author標簽但是必須連續放置
@since:程序代碼最早的版本
@param:方法的參數
@return:方法的返回
@throws:異常拋出
@deprecated:過時
2.8.5 編碼風格類名:首字母大寫、多個字母駝峰法
域名&方法名:首字母小寫、多個字母駝峰法
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/72152.html
摘要:一引用操縱對象在的世界里,一切都被視為對象。特點創建程序時,需要知道存儲在棧內所有數據的確切生命周期,以便上下移動堆棧指針。因為,指向同一塊內存空間除了通過對象引用靜態變量,我們還可以通過類直接引用靜態變量 一、引用操縱對象 在Java的世界里,一切都被視為對象。操縱的標識符實際上是對象的引用, 例如:遙控器與電視的關系。 可以在沒有對象關聯的情況下,擁有一個引用。沒有電視機,也可以擁...
摘要:類最基本的作用,在于通過類獲取到相應的對象,在向對象發送消息時以期望對象做某些特定的事情。先導概念引用中一切皆對象,因此采用一個指向對象的引用來操縱對象。對象可以存活于作用域之外。 歡迎各位讀者關注我的微信公眾號,共同探討Java相關技術。生命不止,學習不休! showImg(https://segmentfault.com/img/bVboaBO?w=129&h=129); 也許你慢...
摘要:迭代器通常被成為輕量級對象創建它的代價很小。與迭代器可以用于數組和所有對象,之所以能夠工作,是因為繼承了接口。 點擊進入我的博客 我覺得本章名字改成容器似乎更好理解,持有對象讓人感到一頭霧水我們需要在任意時刻和任意位置創建任意數量的對象,所以依靠創建命名的引用來持有對象已經滿足不了需求。Java可以用數組和其他容器類來(List、Set、Queue、Map)來解決這個問題,不同的容器...
摘要:接口與類型信息關鍵字的一種重要目標就是允許程序員隔離構件,進而降低耦合性。如果你編寫接口,那么就可以實現這一目標,但是通過類型信息,這種耦合性還是會傳播出去接口并非是對解耦的一種無懈可擊的保障。 點擊進入我的博客 運行時類型信息使得你可以在運行時發現和使用類型信息,主要有兩種方式: 傳統的RTTI,它假定我們在編譯時已經知道了所有的類型; 反射機制,它允許我們在運行時發現和使用類的...
摘要:堆棧位于通用隨機訪問存儲器中,但通過堆棧指針可以從處理器那里獲得直接支持。堆棧指針若向下移動,則分配新的內存若向上移動,則釋放那些內存。創建程序時,系統必須知道存儲在堆棧內所有項的確切聲明周期,以便上下移動堆棧指針。 寫在前面 首先我想說的是 Java編程思想——知識卡片 將是一系列文章,文章的內容是我閱讀《Java編程思想》這本書的心得體會,那么我為什么要寫這一系列的文章呢?原因有一...
閱讀 1387·2021-09-26 09:55
閱讀 1921·2019-08-30 12:45
閱讀 1064·2019-08-29 11:20
閱讀 3560·2019-08-26 11:33
閱讀 3424·2019-08-26 10:55
閱讀 1693·2019-08-23 17:54
閱讀 2388·2019-08-23 15:55
閱讀 2346·2019-08-23 14:23