1. 對象經過一個引用來操做,可是java中的對象是按值傳遞的,基本上能夠在操做中認爲對象自己,在內部結構中仍然要記得是對象實體的引用;如:String s = "abcd" ;這個語句中,s並非String對象:"abcd"自己,而是表示一個String對象的引用,這裏即對象s的引用,可是當你使用s的時候,傳遞的是"abcd"這個對象,也就是引用的值;注意只能使用雙引號;html
2. 使用new建立新的對象(除了上面提到字符串可使用一串帶引號的文本直接建立以外),如:new String("abcd") ; 而且使用一個表示該對象類型的引用來給這個對象作命名(不然該對象將沒有持久性,由於引用計數爲0的對象會被垃圾回收機制回收),如:String s = new String("abcd") ; java
當一個對象被建立時,對象引用存儲於堆棧(stack)中,而對象的實體存儲在堆(heap)中,在堆中的內容具備靈活的生命週期和存儲分配,可是須要額外的存儲分配和清理時間;函數
3. 除了對象引用,java中的基本類型也存放在棧(stack)中,基本類型建立時,直接建立變量本體,而非引用建立,變量存在於棧中,使用效率比較高;如:int a = 123; 建立一個整形變量123,a的內容即123;每一個基本類型也有對應的包裝器類型,使用new來建立包裝器類型的變量時,和對象的建立同樣,如:int a = new Integer(123);此時,a是整形變量123的引用,123存放在堆中,而a做爲123的引用存放在棧中;工具
特殊的,String並非基本類型,因爲string的長度是可變的,而全部java中的基本類型,長度都是固定的,並不會隨着硬件和操做系統而改變;操作系統
java中支持兩個高精度運算的包裝器類型:BigInteger和BigDecimal,這兩個類型使用時沒有長度限制,使用時自動擴展,相應的,運算速度會比較慢(ACM的同窗用的高精度計算大概就是其實現原理了);BigDecimal類使用的是十進制浮點數,不存在精度的問題;htm
java中的基本類型有:對象
整形:byte/short/int/long; 長度分別爲:1/2/4/8字節;生命週期
整形默認類型是int,使用long類型時,須要在末尾添加L;內存
浮點型:float/double;長度分別爲:4/8字節;ci
浮點型默認爲double,使用float類型時,須要在末尾添加F;
邏輯性:boolean;長度爲:1/8字節,即一個位;
字符型:char;長度爲:2個字節
對應的包裝器類型名字均爲首字母大寫的同名單詞;
4. 對象的做用域由花括號:{}來界定,java中不支持使用一個較大做用域將變量隱藏的作法;
5. 使用class關鍵字建立類:class ATypeName { /*pass*/ };
定義了類以後便可在類中設定兩種類型的元素:字段(數據)、方法;字段能夠是一個基本類型(沒必要要初始化,java會確保有一個默認值,即將所在內存清0),也能夠是一個具體對象的引用(必須是具體的對象引用);每一個對象都有用來存儲字段的空間,普通的字段不能在對象間共享。經過點號來訪問對象中的成員;
在局部變量中(並不是是類的一個字段),java不會初始化基本類型;使用未初始化的變量在java中是一個錯誤;
通常命名中,類的每一個單詞首字母都是大寫;
6. 方法
java中沒有單獨的函數,方法只能做爲類的一部分建立,而且只能經過對象訪問(除了靜態方法等);方法定義時,使用如下形式:
ReturnType methodName(/* Argument list */){
/*Method body*/
}
調用一個方法時,須要傳遞須要的參數,參數列表中指定了參數須要什麼類型的對象,必須指定每一個所傳遞對象的類型以及名字,方法調用時,傳遞的是對象的引用,而且引用的類型必須正確;可使用一個對象存儲返回值,該對象的類型必須和返回值類型兼容(不必定同樣);
方法通常命名時,第一個單詞首字母小寫;
猜想:java中的方法應該存在於類空間中,即全部的對象共享相同的方法實體;
7. 靜態數據和方法
經過static關鍵字申明一個靜態數據或者方法,不只實例化後的對象能夠訪問,也可使用類名直接訪問;不管是靜態數據和方法,全部對象都共享一樣的實體,當一個對象對靜態數據作出改變,其餘對象訪問該靜態數據也發生變化;
8. java程序的構成
每一個java程序必須存在一個類和文件名相同,而且該類中存在一個main()方法:
public static main(String[] args){
}
java使用先編譯後解釋的方式來實現跨平臺;java程序首先使用javac將其編譯成字節碼(.class),而後使用java命令解釋該字節碼;
經過javac命令將程序編譯成字節碼,再經過java命令運行;在這以前,首先須要配置環境變量(以osx爲例):
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$PWD:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
9. 註釋和解釋文檔
java中可使用c語言風格註釋;
java有一套文檔維護工具:javadoc;javadoc能夠查找程序中的特殊註釋標籤,不只能夠解析由這些標籤標記的信息,還能夠將註釋的類名或方法名抽取出來。除了註釋的內容,java還使用了以@開頭的文檔標籤,javadoc識別這些註釋和標籤,而且自動生成程序文檔;
javadoc共有三種文檔:類、域、方法;全部的文檔都在相應內容的定義以前,如類註釋正好在類定義以前;javadoc只會爲public和protected進行文檔註釋,而忽略private;
javadoc生成一系列html文件,其中打開以ClassName.html命名的網頁便可看到生成的文檔;
感受比較重要的標籤:@param;@return;@throws;