天天看点

变量的 声明、存放与作用域

终极基类。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与此既有联系又有区别。

相同之处:变量作用域由花括号的位置决定。

不同之处: