看到过好几次有朋友在论坛里面问一个问题是关于s+=1和s=s+1首先
short s =1 ; s = s + 1;这句话肯定是错误的,而 s+=1;却是对的,首先声明的s是属于short短整形,在s=s+1中后面一段s+1里面1属于int型s就会有一个自动转换变成1所述的的int型然后s+1两个int类型的相加就得到int型在赋值给=前面的s型的时候前面属于short类型,所以int型不能直接赋值给short型出现错误容易丢失精度简单的说就是属于两部运算先算的是s+1然后在赋值给s。而在后面s+=1的时候他的原理是s=s+1是把后面s+1的值赋值给前面的s,而赋值之前s+1属于计算机内部运算直接提升,并非先算s+1,而是直接属于把s+1的值赋值给s在解析时候s+=1就等价于s = (short)(s+1),翻番来讲就是 s+=1 s = (s的类型)(s+1)
当然类型转换可以从小到大自动转,即byte->short->int->long小的数据类型像大的类型转换! |