1. const,goto,instanceof,native,synchronized,transient,volatile这些关键字是什么意思,各有什么作用?具体是怎么用的,能不能举个例子。
const:c语言的常数定义
goto:java的关键字,不过没有用
instanceof: 判断一个实例的类型
native:本地方法,用其他语言实现
synchronized:加上同步锁
transient:瞬时变量,序列化时忽略
volatile:这个最难说清楚.2. 书上说“Unicode使用两个字节来表示一个字符,这样就可以生成100多万种不同的字符”,但两个字节最大只能表示65535,想问它是怎么算的?
什么书,这么乱写3. 关于数据类型之间的转换,int -->long,float,double以及long --> float,double书上说都是可以的,但我想问的是,long有8个字节,float只有四个字节,同理int和float都只四个字节,面float还要表示小数,它的范围应该比long要小,编译器为什么不会报错?
long的最大值: 2^63-1
float的最大值:(2-2^(-23))*2^127大概是2^128,显然比long表示范围大.
有关float:http://blog.csdn.net/treeroot/archive/2004/09/05/95071.aspx
4. 声明一个包有什么用,我只要把所要用到的类放在一个文件夹下就可以了,还要包做什么呢?
为了分类,如果1w个类放到一个文件夹难道不很乱吗?
const:c语言的常数定义
goto:java的关键字,不过没有用
instanceof: 判断一个实例的类型
native:本地方法,用其他语言实现
synchronized:加上同步锁
transient:瞬时变量,序列化时忽略
volatile:这个最难说清楚.2. 书上说“Unicode使用两个字节来表示一个字符,这样就可以生成100多万种不同的字符”,但两个字节最大只能表示65535,想问它是怎么算的?
什么书,这么乱写3. 关于数据类型之间的转换,int -->long,float,double以及long --> float,double书上说都是可以的,但我想问的是,long有8个字节,float只有四个字节,同理int和float都只四个字节,面float还要表示小数,它的范围应该比long要小,编译器为什么不会报错?
long的最大值: 2^63-1
float的最大值:(2-2^(-23))*2^127大概是2^128,显然比long表示范围大.
有关float:http://blog.csdn.net/treeroot/archive/2004/09/05/95071.aspx
4. 声明一个包有什么用,我只要把所要用到的类放在一个文件夹下就可以了,还要包做什么呢?
为了分类,如果1w个类放到一个文件夹难道不很乱吗?
声明volatile 型变量是为了防止编译器优化/////////////////////
一个线程类里边::
。。
volatile boolean running=true;
。。
public void setRuuning(boolean running){
this.running=running;
}
public boolean getRunning(){
return running;
}void run(){
while(running){
doSomething();
}
}如果不加,编译器可能优化为 if(running) doSomething();
不是我们期望的,
声明为volatile变量,如果我们再类外调用setRunning(false),就可以安全地退出正在运行的线程 ////////////////////////////////
这样表示的数值范围就很大了,只是精度有限!long转换成float时,可能有精度损失!看看计算机中存放数据的码制方面的书吧! 一般计算机组成原理第1章都有!