short s1 = 1; s1 = s1 + 1;有什么错? 1是int类型的,s1是短整型的,s1+1运算师会自动把范围较小的s1转化为范围较大的int型,以保证精度,S1+1的结果是int类型的,在把这个结果赋给S1的时候,由于把范围较大的向较小的赋值,有可能会损失精度,JAVA不允许这么做,报错! short s1 = 1; s1 += 1;有什么错? 这样做没错
数值数据类型之间的转换,假如是位数小的换到位数大的,可以直接转换,比如: 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: 本人系初学者,如有说得不对的地方,还望各位大侠指点,小弟在此谢过大家了。
s+=1没有问题
1是int类型,而且存储字节比short类型宽,所以必须要用类型强制转换,即
s1 = s1 + (short)1;;short s1 = 1; s1 += 1;有什么错?
这个应该没错,编译器对+=处理会自动进行类型转换,也就是编译器本身会把1转换为short型,然后在进行+处理
1是int类型的,s1是短整型的,s1+1运算师会自动把范围较小的s1转化为范围较大的int型,以保证精度,S1+1的结果是int类型的,在把这个结果赋给S1的时候,由于把范围较大的向较小的赋值,有可能会损失精度,JAVA不允许这么做,报错!
short s1 = 1; s1 += 1;有什么错?
这样做没错
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:
本人系初学者,如有说得不对的地方,还望各位大侠指点,小弟在此谢过大家了。
在程序中,系统默认整型的数为int类型,如123,456,789```只要见到整型的数都是int类型,除非你特别说明了;默认的浮点数类型为double类型,如1.2 , 1.5`````只要见到浮点的数都是double类型,除非你特别说明了
short s1 = 1;
s1 = s1 + 1;我就不说了 这种方式是正确的short s1 = 1;
s1 += 1; 这种情况楼主可以这么认为 再S1+=1;是自动进行了类型转换