一、用引用操作對象
String s;
這裏只是創建reference,並不是對象
s並沒有與任何事物相關聯,向s發送消息會返回運行時錯誤
引用同時應該初始化
String s = "asdf";
注意:這裏字符串可以用帶引號的文本初始化。並不是通用的初始化方式
二、創建對象
new關鍵字
正確的通用初始化方法
String s = new String("asdf");
1)對象存儲位置
1.寄存器(最快的存儲區,不能直接控制)
2.堆棧(位於RAM中,向下移動指針分配新內存,向上釋放內存,Java系統必須知道存於其中所有項的生命週期,JAVA中某些數據存於其中,但Java對象不存於其中)
3.堆(通用內存池,位於RAM中,存放所有JAVA對象,在堆中編譯器不需要知道存儲的數據在堆中的存活時間,故堆中分配存儲空間有很大靈活性)
4.常量存儲(常量通常直接放在程序代碼內部)
5.非RAM存儲(如果數據完全存活於程序之外,它可以不受程序的任何控制,在程序沒有運行時也可以存在。如:/流對象/,/持久化對象/,
2)特例:基本類型
JAVA把基本類型變量存儲於堆棧中(高效),JAVA確定每種基本類型存儲空間大小,不隨機器硬件架構變化而變化(更可移植)。
char 16-bit (Unicode0—— Unicode2^16-1)
byte 8 bits ( -128——127)
short 16 bits (-2^15——2^15 - 1)
int 32 bits (-2^31——2^31 - 1)
long 64 bits (-2^63——2^63 - 1)
float 32 bits (IEEE754)
double 64bits (IEEE754)
重點:1.所有數值類型都有正負號,沒有無符號數值類型
2.基本類型有包裝器類,可以在堆中創建非基本對象,用來表示非基本類型。
//包裝器類
char c = ‘x’;
Character ch = new Character(c);
OR
Character ch = new Character(‘x’);
//SE5中可自動的把基本類型轉換爲包裝類型,並可以反向轉換
Character ch = ‘x’;
char c = ch;
3.高精度數字
Java提供了兩個用於高精度運算的類,BigInteger和BigDecimal(兩者沒有對應的基本類型,以方法調用, 操作同int和float)
3) JAVA數組
JAVA數組
1.會被初始化(創建一個數組對象==創建一個引用數組,每個引用自動初始化爲爲特定的關鍵字NULL,基本數據類型數組初始化:所佔內存全部置0;)
2.不能在它的範圍外被訪問
三、永遠不需要銷燬對象
1)作用域
花括號決定作用域
注:以下代碼不適用於JAVA,但是可用於C/C++
{
int x = 12;
{
int x = 96;//illegal in java
}
}