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个类放到一个文件夹难道不很乱吗?

解决方案 »

  1.   

    其他的不说了
    声明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),就可以安全地退出正在运行的线程 ////////////////////////////////
      

  2.   

    第三个还是不太明白,float只有四个字节,long有八个字节,怎么可以从long到float转换?
      

  3.   

    float和long在内存中的存储方式是不同的long是用定点方式存储的,64bit补码全部表示数值大小float用浮点形式表示,比如一个数  1.23E1000, 4个字节中有几bit存放1.23,另外几位存放指数1000,
    这样表示的数值范围就很大了,只是精度有限!long转换成float时,可能有精度损失!看看计算机中存放数据的码制方面的书吧! 一般计算机组成原理第1章都有!
      

  4.   

    提的问题不错!从long转到float肯定是有损失的!