Java中,一切被視作對象,因此可採用單一固定的語法,儘量一切都看作對象,但操縱的標示符實際上是對象的一個引用。
如果想操作一個詞或句子,可以創建一個String引用
String s;
這裏創建的只是引用,並不是對象。如果此時給s發送一個消息就會返回錯誤。
因爲s實際上沒有與任何事物關聯,因此安全的做法是創建一個引用的同時便進行初始化。
String s = "asdf";
一旦創建了一個引用,通常用new來實現與一個新的對象相關聯。
String s = new String("asdf");
某些Java數據存儲於堆棧中,特別是對象引用,但是Java對象並不存儲其中。所有的Java對象存儲於堆中。
特殊(基本)類型,不用new來創建,而是創建一個並非是引用的自動變量,變量直接存儲值,並置於堆棧中。
Java確保數組會被初始化,而且不能在它的範圍之外被訪問。這種範圍檢察,是以每個數組上少量的內存開銷及運行時的下標檢察爲代價的。
如下在C和C++是合法的,但是Java中會報告變量已經定義過。
{
int x = 12;
{
int x = 96; //illegal
}
}
基本類型存活於作用域,但Java對象可以存活於作用域之外。
如下,引用s在作用域終點就消失了,s指向的String對象仍佔據內存空間。
{
String s = new String("a string")
}
垃圾回收器,會監視用new創建的對象,並辨別那些不再會被引用的對象,隨後釋放他們。
某個類成員是基本數據類型,即使沒有進行初始化,Java也會確保給其默認值。
但是上述確保初始化方法不用於“局部”變量,即並非某個類的字段(數據成員)。
Java中的方法只能作爲類的一部分來創建。方法只有通過對象才能被調用。
大多時候,我們使用Java標準類庫裏面的構件。
import java.util.ArrayList;
import java.util.*
當生命一個事物是static時,意味着這個域或者方法不會與包含它的那個類的任何對象實例關聯在一起。所以即使從未創建某個類的任何對象,也可以調用其static方法或訪問其static域。
class StaticTest {
static int i = 47;
}
StaticTest st1 = new StaticTest()
StaticTest st2 = new StaticTest()
即使創建了兩個對象,StaticTest.i只有一份存儲空間,兩個對象共享它。
static方法的一個重要用法就是在不創建任何對象的前提下就可以調用她。
// HelloDate.java
import java.util.*;
public class HelloDate {
public static void main(String[] args) {
System.out.println("Hello, it's: ");
System.out.println(new Date());
}
}
註釋和嵌入式文檔(略。。。)
編碼風格:
- 類名首字母大寫。
- 類名由幾個單詞組成,則拼接在一起。內部單詞首字母大寫。
- 標識符首字母小寫。