就是给short型变量赋值, 我不想用强转.
short s = (short)1; //有没有写整型常量的办法?像C里的 1s 一样?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【binarier】截止到2008-07-10 16:46:41的历史汇总数据(不包括此帖):
    发帖的总数量:1                        发帖的总分数:100                      每贴平均分数:100                      
    回帖的总数量:1                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:1                        未结的总分数:100                      
    结贴的百分比:0.00  %               结分的百分比:0.00  %                  
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    你直接写 short s=1;不会有错啊。你干什么要强转?
      

  3.   

    直接short s=1;就行.如果你以后再对s进行操作就要强换了.
      

  4.   

    不用强转的吧!就算是和int double 做运算也没关系.比如 
    short i = 1;
    int b = i+1;//他自己就自动类型转换成int了
    如果和byte 做运算你就得强转了~!
      

  5.   

    在short范围之内的不用强转,超出了就需要。
      

  6.   

    short s = 1;
    就这么用就行了啊
      

  7.   

    楼主的问题是:java里可以写short型常量吗?  
    怎么感觉问题描述和常量无关?
      

  8.   

    -32768 ~ 32767
    short s = x; 就行否则
    short s = (short) x;
      

  9.   

    参照官方的JVM语言规范中说法,Java语言的整数计算只有32位精度和64位精度两种,如果涉及long的计算会扩展到64位,否则至少也用32位精度所以即使你定义short是16位精度,只要进行任何操作,都会强转成int的32位精度所以short变量在Java语言里基本不使用,没有什么意义!更细粒度的就直接用8位的byte了!
      

  10.   


      首先:我们来说明short s=(short)1;在内存中,jvm首先将1当作int类型来处理,当赋给s的时候,在内存中是从高位到低位的,所以截取1所占前面字节赋给s。
      
      其次:如果是显示调用short的话,即时数据很大也不会有问题。数据过大而不用short就会溢出,直接编译不过。
      

  11.   


    没有 C 中的 1s 这种用法,没必要。再有,看上去像是强转,实际并不是,看一看 JVM 指令便知。
      

  12.   

    在short和int的共同范围内,转换时可以不用强制,这是叫扩展转换
    但将超出short范围的int类型转换为short时,需要一定的强制,这时候叫窄化转换