您的位置:首页 > 其它

变量 声明、存储和范围

2015-08-22 14:35 204 查看

变量声明

最终基类。

java在所有的类的从单个基类终于继承——Object。

向上转型:子类转换为基类。向下转型与之相反。

String str; //仅仅是创建引用,并没有创建对象。

变量存放

寄存器

c++能够向编译器建议变量存放在寄存器中。而java不能。

栈(一些书称为“堆栈”)

位于内存中。

创建的引用位于栈中。



位于内存中。

java全部对象都存在这里。

代码段

代码与常量。

非RAM(即内存)

主要的样例是 流对象 和 持久化对象。在流对象中。对象转化成字节流,通常被发送给另外一台机器。在持久化对象中。对象被存放在磁盘上,因此即便程序终止。对象仍能够保持自己的状态。

基本类型

用 new 创建容量小的、简单的变量效率不是非常高。

因此对于int char float等基本类型。java与c採用同样方法。不使用“new”来创建,存放于栈中。

java中基本类型所占字节大小不随硬件不同而不同,故更具有可移植性。

java元素类型所占字节包装器类型
boolean-Boolean
void-Void
byte1Byte
char2Character
short2Short
int4Integer
float4Float
long8Long
double8Double
java不会将int自己主动转换为boolean。所以if(intNum){...}不会通过编译!

基本类型相应的包装器类,使得能够在堆中创建一个非基本对象。用来表示相应的基本类型。

全部数值类型都是有符号的。

高精度数字

BingInteger 和 BigDecimal。

类型转换

float或double转为int型时,会截尾而不是四舍五入!

如 float a=0.7;(int)a会得到0.

double%10 不是整数!

!!

。!

void IntToBytes(){
int x=257;
byte[] b2=new byte[2];
b2=new byte[2];
b2[0]=(byte)x;//溢出是不做检查的  c#会
b2[1]=(byte)(x>>8);
//此时b2为 [1,1]=2的8次方+2的1次方=257
}


结构全然一样的不同名字的类也不能互转。

public class A {
int x,y;
public static void main(String[] args) {
Object x=new A();
B z=(B)x;//Exception in thread "main" java.lang.ClassCastException: A cannot be cast to B
//at A.main(A.java:8)
}
}
class B {
int x,y;
}


数组

C中为了提高执行效率。不检查数组下标越界,程序就能够跑得快。

java永远都做越界检查。

作用域

C++中,变量作用域由花括号的位置决定。java与此既有联系又有差不要。

在同一个地方:可变范围由放置花括号的决定。

差异:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: