s+=1 和 s=s+1看了这篇,你会明白好多自己不知道的(对小白)

编程入门 行业动态 更新时间:2024-10-27 05:28:01

s+=1 和 s=s+1<a href=https://www.elefans.com/category/jswz/34/1765071.html style=看了这篇,你会明白好多自己不知道的(对小白)"/>

s+=1 和 s=s+1看了这篇,你会明白好多自己不知道的(对小白)

s+=1和s=s+1区别

  • 下面的代码会报错,知道为什么么?
	short s = 1;s = s + 1;

因为:1是int型,s+1会自动将s转化为int型进行运算,结果就是int型,

果将int直接赋值给short会报错,高到第的转化需要强转.

  • 正确的写成下面这样
		//注意加两个括号short s = 1;s = (short) (s + 1);
  • 如果改成这样会对么?
    short s = 1;s = s + (short)1;
  • 告诉你这样也是错的,为什么呢?(记住就行)
  1. JAVA中short和short相加自动转化为int
  2. 精度小于int的数值运算的时候都回被自动转换为int后进行计算
  • 下面的也可以,那么问题来了,这个为啥这样可以?
//这样也可以实现s加1;更为简单 	
short s = 1;s+=1;
  1. s += 1是等价于 s = (s的数据类型)(s + 1)
  2. 对于+= -=,*=等系统会自动执行类型转换操作
  3. 更深层次涉及到jvm如何实现(实话说我还不够格,以后回来补上的)
  • 下面的代码不报错,这不是int转short么,为什么?
short s = 1 + 2;
  1. 因为你要知道常量池优化:在给变量进行赋值的时候,如果左边全是常量,没有任何变量的时候,那么java的编译器会直接计算右边的结果,然后赋值给左边变量,相当于short s=3;如果常量运算的值超过范围就会报编译错误.

可以看看这个链接,写的非常明白

  • 想要再深入细节的可以自己搜,后期会把虚拟机实现方式补下.

更多推荐

s+=1 和 s=s+1看了这篇,你会明白好多自己不知道的(对小白)

本文发布于:2024-03-08 07:51:04,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1720263.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:看了   你会   这篇

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!