java基础

本文详细介绍了Java中+运算符的三种用法:数值加法、字节/短整型/字符的自动提升以及字符串连接。在进行运算时,byte, short, char会先转换为int。对于字符串连接,任何类型与字符串结合都会转化为字符串。对于short和byte的类型转换,当涉及到变量时需要显式强制转换,而如果是常量则编译器会进行优化。此外,还讨论了编译器如何处理常量表达式和变量表达式的类型转换情况。
摘要由CSDN通过智能技术生成
+的用法

1、对于数值来说,是加法
2、对于byte,short,char来说,运算时先转换为int
byte b1+b2 ->int + int -> int
最后结果仍为int
3、对于字符串String来说,代表字符串连接操作
任何数据类型和字符串进行连接时都会转换为字符串
String str = java;
int i = 20;
str +i ->String java20;
str + 20 + 30 -->java2030

类型转换

对于byte,short,char来说
byte num = 30; 30 属于int型,理论上需要强制类型转换,将大范围的数据转换为小范围,但是在数据未超出范围时,编译器自动的为其强转,补上一个(byte)或(short)或(char),如果表示范围超出了表示范围,编译器爆错。

在给short和byte这种变量进行赋值时
short num = 10;//可行,正确写法,虽然10是一个int型,但是并未超出short表示范围,所以可直接赋值。
short a=10,b=20;
short num = a + b;//错误写法,对于这种有变量的,需要进行强制类型转换
对于此情况是short = short+short->int + int ->int
int需要强制类型转换shor num = (short)(a + b);
对于都是常量的,short num = 10+20;//可行
在给变量进行赋值时,如果右侧的表达式当中全是常量,没有变量,那么编译器javac将会直接将若干个常量表达式计算结果直接赋给变量
short result = 10 + 20;等号右边全是常量编译后得到的.class字节码文件相当于short result = 30;“编译器的常量优化”,如果有变量参与运算,则没有这种优化了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值