学习Java的第二天——关于运算符

关于运算符,我直接用代码加注释进行一天的总结:
直接上代码吧:

// An highlighted block 
/*
  运算符测试
  举例说明
 
 */
public class TestOperator {
public static void main(String[] args) {

/*  二元运算符+ - * / %
 二元运算符规则
   1、两个操作数有一个是long,则结果是long
   2、没有long时,结果是int,即时操作数全是short或byte,结果也是int
   3、两个操作数有一个是double,结果是double
   4、只有两个操作数都是float,结果才是float
   5、两个操作数有一个是double,结果是double
   6、+ - * / 中,想得到结果为浮点数,就需要有浮点数进行参与  
   7、表达式的类型提升 在参与运算时short,byte,char将自动被提升为int 之后自动提升规则int->long->float->double
   */
//整数类型
 byte a = 1;
 int b = 2;
 //byte c = a+b;//报错,因为a+b是int型
 long b2 = 3;
 //int c2 = b2+b;//报错,有一个操作数是long,结果也是long,所以报错
 long a5 = a + b + b2;
 System.out.println(a5);
 System.out.println("----------");
 //浮点数类型
 float f1 = 3.14F;
 float d = b+b2;//这样是可以的,范围允许
 double d2 = b+b2;//这样也是可以的
 //float d3 = f1+d2;//这样是不行的,有一个double,结果就是double
 System.out.println(d);
 System.out.println(d2);
 float f2 = 3.86F;
 float f = f1 + f2;
 System.out.println(f);
 System.out.println("----------");
 //取模运算,结果的符号与左边的操作数相同
 System.out.println(7/3);
 System.out.println(-7/3);
 System.out.println(7/-3);
 //常见错误
 short s = 8;
 //short s = 8 + s;  产生错误,8是int型,赋值给short将产生精度损失,错误。
 s+= 2;   // 相当于s = (short)(s + 2)
 System.out.println("s的值为:" + s);
 short s2 = 5;
 short s3 = 9;
 //short s4 = s2 + s3; 将产生错误,原因是在参与运算时short,byte,char将自动被提升为int,左边为int范围大于short错误。
 short s4 = (short)(s2 + s3);
 System.out.println("s4的值为:" + s4); 
 System.out.println("----------");
 //自增自减   ++  --
 int a1 = 3;
 int b1 = a1++;//先赋给b值3,再运算++
 System.out.println("a1="+a1+"\nb1="+b1); 
 int a2 = 3;
 int b4 = ++a2;//先赋给b值3,再运算++
 System.out.println("a2="+a2+"\nb4="+b4);
 System.out.println("----------");
 //常见问题
 int m1 = 10;
 int n1 = m1++;//先将m1赋值给n1,n1=10,之后m1加一m1=11
 System.out.println("n1的值为:" + n1);//n1=10
 System.out.println("m1的值为:" + m1);//m1=11
 int m2 = ++m1;//先将m1加一, m1=12再赋值给m2 m2=12
 System.out.println("m2的值为:" + m2);//m2=12
 int n2 = m1++ + 2;//由于 + 号的优先级大于 ++, 则先进行加法运算n2=14.之后m1进行加一m1=13.
 System.out.println("m1的值: " + m1);
 System.out.println("n2的值: " + n2);
 System.out.println("----------"); 


/*  赋值运算符(隐含了强制类型转换)  使用规则
  1.= 赋值 a=10,将10赋值给变量a
  2.+= 加后赋值 a+=b,将a+b的值给a
  3.-= 减后赋值 a-=b,将a-b的值给a
  4.*= 乘后赋值 a*=b,将a×b的值给a
  5./= 除后赋值 a/=b,将a÷b的商给a
  6.%= 取余后赋值 a%=b,将a÷b的余数给a
  */
 int y = 5;
 y+= 3;
 System.out.println("y的值为: " + y);
 //扩展运算符
 /*
   a+=b    ->  a=a+b
   a*=b+3   ->  a=a*(b+3)
   */
 int g = 3;
 int h = 4;
 g+=h;
 System.out.println("g="+g+"\nh="+h);
 g=3;
 g*=h+3;
 System.out.println("g="+g+"\nh="+h);
 System.out.println("----------");
 
 
//三元运算符  格式:关系表达式 ? 表达式1 : 表达式2; 关系表达式为真(true),输出表达式1;关系表达式为假(flase),输出表达式2.
 int m = 5;
 int n = 3;
 int max = m > n ? m : n;
 System.out.println("最大值为: " + max);
 System.out.println("----------");
 

 
/* 逻辑运算符
 &(与)  |(或)  !(非) ^(异或)
 短路逻辑运算符 
 &&(与)||(或) 短路逻辑运算符与逻辑运算符区别:短路逻辑运算符,左边的条件如果为假(false),则不执行右边;左边的条件如果为真(true),则执行右边;
                                              程序相比于之前的效率更高;
                                              逻辑运算符,左边的条件不论真假,右边都执行。
 */
 int x = 8;
 int k = 6;
 int max1 = x > k ? x : k;
 System.out.println("最大值为:"+ max1);
 boolean o = x >= k;
 System.out.println("是否为真:"+o);
 //常见问题 运算符之间的顺序
 int p = 5;
 boolean flag = (p++ > 5) && (++p > 5);/* 首先将p的值输入,后进行比较,发现左边条件不成立,则输出false,
 由于使用的的是短路与运算符,左边错误,右边条件不运行,则p只自增一次p = 6 */
 System.out.println("输出p: " + p);// 6
 System.out.println("输出flag: " + flag);// false
 flag = (p++ > 5) || (++p > 5);/* 首先将p的值输入,后进行比较,发现左边条件成立,则输出true,
 由于使用的的是短路或运算符,右边输出true,则右边条件不运行,则p只自增一次p = 7 */
 System.out.println("输出p: " + p);// 7
 System.out.println("输出flag: " + flag); // true
 
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值