終極基類。java中所有的類最終都繼承自單一的基類——object。
向上轉型:子類轉換為基類。向下轉型與之相反。注意:無論怎麼轉,都是聲明類型互轉,運作時類型是自始至終不會變的!
string str; //隻是建立引用,并沒有建立對象。
寄存器
c++可以向編譯器建議變量存放在寄存器中。而java不能。
棧(一些書稱為“堆棧”)
位于記憶體中。建立的引用位于棧中。
堆
位于記憶體中。java所有對象都存在這裡。
代碼段
代碼與常量。
非ram(即記憶體)
基本的例子是 流對象 和 持久化對象。在流對象中,對象轉化成位元組流,通常被發送給另外一台機器。在持久化對象中,對象被存放在磁盤上,是以即便程式終止,對象仍可以保持自己的狀态。
用 new 建立容量小的、簡單的變量效率不是很高。是以對于int char float等基本類型,java與c采用相同方法,不使用“new”來建立,存放于棧中。
java中基本類型所占位元組大小不随硬體不同而不同,故更具有可移植性。
java元素類型
所占位元組
包裝器類型
boolean
-
void
byte
1
char
2
character
short
int
4
integer
float
long
8
double
java不會将int自動轉換為boolean。是以if(intnum){...}不會通過編譯!
基本類型對應的包裝器類,使得可以在堆中建立一個非基本對象。用來表示對應的基本類型。
所有數值類型都是有符号的。
高精度數字
binginteger 和 bigdecimal。
float或double轉為int型時,會截尾而不是四舍五入!如 float a=0.7;(int)a會得到0.
double%10 不是整數!!!!!
long轉int
這樣轉是不合理的,如果真的要轉,可能發生範圍溢出,比如一個long類型正數轉為int後就變成負的了,它是不會有任何異常的。
結構完全一樣的不同名字的類也不能互轉。
c中為了提高運作效率,不檢查數組下标越界,程式就可以跑得快。
java永遠都做越界檢查。
c++中,變量作用域由花括号的位置決定。java與此既有聯系又有差別。
相同之處:變量作用域由花括号的位置決定。
不同之處: