运算符基本知识

运算符

算术运算符

算数运算符

  • 加: +

  • 减:-

  • 乘:*

  • 除:/

  • 取模,取余:%

注意

  1. /取的是结果的商,%取得结果的余数

  2. 在小数运算的结果中可能计算结果会出现误差,是因为小数在计算机中的存储方式导致

数字在运算时,数据类型不一致不能运算,需要转换一样的

  • 隐式转换(自动类型提升)

    int a = 10;
    double b = a;(自动将a提升到double类型)
    ​
    ​
    byte a = 10;
    byte b = 20;
    ?  c = a + b;    (int类型)

    1. byte,short,char三种类型在运算时都会直接先提升到int,然后再进行运算

    2. 取值范围由小到大:byte>short>int>long>float>double

    3. 取值范围小的数值转换成大的

    4. 数据类型不一致,不能进行运算,需要转成一样的才能进行

  • 强制转换

    取值范围大的转换成小的

    格式: 目标数据类型 变量名 = (目标数据类型)被强制转换的数据;

    int a = 300 ;
    double b = (byte) a ;

    注意强制转换类型,需注意转换范围。比如:byte类型范围是-128-127,超出范围转换i出错

    int a = 10;
    int b = 20;
    byte c = (byte)(a + b);

字符串的“+”操作

“+”操作中出现字符串,+是字符串的连接符号而不是算术运算符

"123" + 123  输出的时候不是246而是 "123123"

连续+的操作时,从左到右逐个执行

注:   1 + 99 + "年红酒"    输出时则是"100年红酒"
注:   1 + 2 + "abc" + 2 + 1     输出的是"3abc21"

字符+操作

将字符转换成ASCLL码值进行运算

System.out.println(1 + 'a')     输出结果为:98

A的ASCLL码值为65,a的ASCLL码值是97;

自增自减

基本用法

符号作用说明
++变量的值加1
--变量的值减1

理解自增(减)前和自增(减)后

int a = 1 ;
System.out.println(a++);     输出的值为:2
System.out.println(++a);     输出的值为:2
System.out.println(a--);     输出的值为:0
System.out.println(--a);     输出的值为:0

int b = 10;
int c = b++;    c输出结果为:10
将自增前的值赋给c

int a = 10 ;
int c = ++a;   c输出结果为:11
将自增后的值给c

赋值运算符

符号作用说明
=赋值int a=10,将10赋值给变量a
+=加后赋值a+=b,将a+b的值费给a
-=减后赋值a-=b,将a-b的值给a
*=乘后赋值a*=b,将a×b的值给a
/=除后赋值a/=b,将a÷b的商给a
%=取余后赋值a%=b,将a÷b的余数给a

注意

+=,-=,*=,/=,%=底层都隐藏了一个强制类型转换

short i = 1;
i += 1;   //等同于 i = (short)(i+1)
System.out.println(i);   输出的i任然是short类型的

关系运算符

符号说明
==a==b,判断a和b是否相等,成立true,不成立false
!=a!=b,判断a和b的值是否不等,成立true,不成立false
>a>b,判断a是否大于b,成立true,不成立false
>=a>=b,判断是否a>=b,成立true,不成立false
<a<b,判断a是否小于b,成立true,不成立false
<=a<=b,判断a是否小于等于b,成立true,不成立false

注意:关系运算符的结果都是boolean类型,要么true要么false

逻辑运算符

符号作用说明
&逻辑与(且)并且,两边都是真,结果才为真
|逻辑或或者,两边都为假才为假
^逻辑异或相同为false,不同为true
逻辑非取反

短路逻辑运算符

符号作用说明
&&短路与结果与&相同,但是有短路效果
 
||短路或结果和|相同,但是有短路效果

比如在输入账户和密码时,账户和密码都需要进行匹配正确才能登陆。运用短路运算符在判断账户不正确时就可直接判断错误

int a = 10 ;
int b = 10;
boolean result = ++a < 5 && ++b < 5;
System.out.println(result);
System.out.println(a);
System.out.println(b);
​
在result = ++a < 5 && ++b < 5中 ++a<5 就已经是false了所以后面的 ++b<5 就不会进行了。最后输出result为false,a为11,b为10

简单理解:当左边的表达式能出现最终结果时右边的表达式就不在参与运行了

单个& | 无论结果两边都需要运行

三元运算符

格式: 关系表达式? 表达式1:表达式2;

  • 整个三元运算符的结果必须要被使用,及要么打印出或赋值给其他的变量

  • 运行时先运行关系表达式如果为真就运行表达式1,假就运行表达式2

求两个数的较大值
    a > b ? a : b;

运算符优先级

优先级运算符
1. (){}
2!,-,++,--
3*,/,%
4+,-
5<<,>>,>>>
6<,<=,>,>=,instanceof
7==,!=
8&
9^
10|
11&&
12||
13?:
14=,+=,-=,*=,/=,%=,&=
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值