第3章 运算符和表达式

一、运算符

赋值运算符—(= += -= *= /= %=)

例如:
a += 1;等价于a = a+1;

算术运算符(+ - * / %)
向零取整问题:
    int a = 1/3;
    int b = 2/3;
    //a和b的值都为0
    
    // 取余结果问题
    int a1 = 1%3;
    int a2 = 1%-3;
    int a3 = -1%3;
    int a4 = -1%-3;
    // 结果的符号和被除数一致(a1=3 a2=3 a3=-3 a4=-3)
    
    // 除0问题
    // int a5 = 1/0;   // ArithmeticException
    // 本身语法没有错误,编译时不会报错,但是由于0不能作为除数,所以在运行时会抛出算术异常
    
    double e1 = 1.0/0;  // Infinity 正无穷
    double e2 = -1/0.0; // -Infinity 负无穷
    double e3 = 0.0/0;  // NAN:not a number
    // 不同数据类型发生的运算在运算时会自动把小的类型转换为大的类型
    //,此时发生的运算最大的类型是double,所以int数据0转化为double数据0.00,在Java中无论是float类型还是double类型,他们的精度都不是特别的准确,所以0.00不能代表0,所以运算结果会出现正无穷和负无穷。
    
    
    // +的作用:
    // 1、可以作为算术运算符:+左右两侧都是操作数
    // 2、可以作为字符串连接符:+左右两侧其中一侧为字符串
    // 3、可以作为正数的意思
    
增减运算符(++ --)

a++和++a的区别:
a++先赋值再运算
++a先运算再赋值
如果只是一条语句的话,就等价于a=a+1

关系运算符

关系运算符有六个,== != > < <= >= ,返回值是boolean类型

逻辑运算符(&& || !)
相同点:

都可以作为逻辑运算符

不同点:

作为逻辑运算符的时候&&会发生短路现象,就是左侧围false,右侧就不会运行了。
&不管左侧是否为false,右侧都运行,&还可以作为位运算符进行位运算。

位运算符(& | ~ ^ << >> )

位运算符运算时把数字看成二进制,0代表false,1代表true,然后对这两个二进制数每一位和每一位进行逻辑判断,得到的结果转化为十进制就是正常的位运算结果。 \

位运算的计算方式:
    int a = 15; // 二进制:0000 1111
    int b = 16; // 二进制:0001 0000
    
    int c = a & b;  // 二进制 0000 0000
    int d = a | b;  // 二进制 0001 1111
    
    int e = ~a;     // -15
    
    int f = a ^ b;  // 0001 0000  (不同为1,相同为0)    
    // << (>>) 整个二进制数向左移(向右移),在最右面补0
条件运算符(三目运算符)
形式:x?y:z

x必须是一个boolean类型表达式,如果x为true,那么输出y的值,如果x为false,那么输出z的值。(可以代替简单的if语句)

注意:

&什么情况是逻辑与?什么情况是按位与?

答:当&两边的操作数是boolean值时是逻辑与,当两边操作数是整型和字符型时是按位与。

二、表达式

用于计算的公式,由算法、运算数和运算符组成。(表达式具有值和类型)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值