Java运算符易错点

举报
开心星人 发表于 2022/06/30 00:14:51 2022/06/30
【摘要】 1、 byte b1=1; byte b2=2; //byte b3=b1+b2; //错误,至少为int型 int b4=b1+b2; byte b5=3+2; //byte b6...

1、

byte b1=1;
byte b2=2;
//byte b3=b1+b2;    //错误,至少为int型
int b4=b1+b2;       
byte b5=3+2;
//byte b6=2+b1;     //错误,2默认为int型
		

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

归结起来就是,变量参与的运算,结果至少为int型

当操作数是byte,short,char时,会自动转化为int类型;返回结果为int。


2、

byte b1=1
long m2=2L;
//int i1=m2+b1;     //m2为long型,运算结果因为long型
//int i2=2L+3;      //运算结果应为long型
long m3=m2+b1;
//float z3=2.0f+3.0;  //3.0默认为double型,运算结果应该为double型

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述
实线表示不损失精度的自动类型转换,虚线表示可能会损失精度的自动类型转换

自动类型转换: java的所有数值型变量可以进行相互转换,如果系统支持把某种基本类型的值直接赋值给另一种基本类型的变量,则这种方式成为自动类型转换。

当操作数是byte,short,char时,会自动转化为int类型;返回结果为int。


3、

double da=1+1;
System.out.println(da);  //输出结果为2.0
System.out.println(25/4); //输出结果为6
System.out.println(25.5%10); //输出结果为5.5

  
 
  • 1
  • 2
  • 3
  • 4

Java对%进行了扩展,是的操作数可以为浮点数。同样Python也可以。但是C++则不行


4、

a=b=c=5;    //a、b、c都为5
m=4;n=2;
m+=m*=n-=m*n;  //m=-20,n=-6

  
 
  • 1
  • 2
  • 3

赋值运算符遵循自右向左的结合性

a=b=c=5相当于a=(b=(c=5)),所以a、b、c都为5

m+=m*=n-=8
m+=m*=n //现在n=-6
m+=m //现在m=-24
//所以最后m=-20


5、

int i=2;
i-=(++i);    //i为-1  
i=2;
i-=++i;     //i为-1,有无括号是一样的  
i=2;
i-=(i++);   //i为0

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

其实这个部分有点晕的点就是

i=2; 
i=i++;   //i为3  
j=i++;   //j为2

  
 
  • 1
  • 2
  • 3
int a=3,b=4,c=3;
int d=++a+b+++c++;  //d为11

  
 
  • 1
  • 2

如果有错误,还望指正,感谢你的观看。

文章来源: blog.csdn.net,作者:开心星人,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_55675216/article/details/122450523

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。