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