short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

解决方案 »

  1.   

    s1 + 1 后是int型,要强制转型
    s+=1没有问题
      

  2.   

    short   s1   =   1;   s1   =   s1   +   1;有什么错?   
    1是int类型,而且存储字节比short类型宽,所以必须要用类型强制转换,即
    s1   =   s1   +   (short)1;;short   s1   =   1;   s1   +=   1;有什么错? 
    这个应该没错,编译器对+=处理会自动进行类型转换,也就是编译器本身会把1转换为short型,然后在进行+处理
      

  3.   

    short   s1   =   1;   s1   =   s1   +   1;有什么错?  
    1是int类型的,s1是短整型的,s1+1运算师会自动把范围较小的s1转化为范围较大的int型,以保证精度,S1+1的结果是int类型的,在把这个结果赋给S1的时候,由于把范围较大的向较小的赋值,有可能会损失精度,JAVA不允许这么做,报错!
    short   s1   =   1;   s1   +=   1;有什么错?
    这样做没错
      

  4.   

    数值数据类型之间的转换,假如是位数小的换到位数大的,可以直接转换,比如:
    short a=10;
    int b;
    b=a;
    执行无误,因为int是32位,比short的位数大,因此short的类型可以直接转换为int类型;假如是位数大的换到位数小的,则必须通过强制转换,强制转换的方法为:在数值前加括号,并在其中输入要转变的类型。
    比如:
    int a=10;
    short b;
    想要把 int 类的a 符给short 类的b ,则必须通过强制转换,既:b=(short)a;为什么会有强制转换这种既念呢?!打个比方吧,假如用一碗水倒入一个桶,可以肯定,这碗水是可以倒入桶里的,
    所以不需要强制转换;而反过来,用桶装水倒入一个碗中,桶里所装的水量这个碗不一定能够承受,因此也就有了
    强制转换```````强制转换也不一定说就不出错,前提是要转换为的那个类型的范为必须大于要转换的那个数```
    ``否则就会发生错误````就好像那桶水的水量超出碗的承载量,硬倒下去也是不行的```大概就是这样理解的了```ps:
       本人系初学者,如有说得不对的地方,还望各位大侠指点,小弟在此谢过大家了。
          
      

  5.   

      补充:
          在程序中,系统默认整型的数为int类型,如123,456,789```只要见到整型的数都是int类型,除非你特别说明了;默认的浮点数类型为double类型,如1.2 , 1.5`````只要见到浮点的数都是double类型,除非你特别说明了
      

  6.   


    short   s1   =   1;  
     s1   =   s1   +   1;我就不说了 这种方式是正确的short   s1   =   1;   
    s1   +=   1;  这种情况楼主可以这么认为 再S1+=1;是自动进行了类型转换