天天看點

變量的 聲明、存放與作用域

終極基類。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與此既有聯系又有差別。

相同之處:變量作用域由花括号的位置決定。

不同之處: