JAVA学习进度之05运算符

1、算数运算符

一个表达式中有多个运算符,运算符有优先级,不确定的加小括号

+ 求和

- 相减

* 相乘

/ 商

% 求余数【取模】

++ 自加1

-- 自减1

//举例

int k = 10;

k++;   // 11

int y = 10;

++y;  // 11

// 小结: ++无论在变量前面还是后面,只要是++运算结束,该变量的值一定加1

//  ++ 在变量后,先赋值,后变量自加1

int a = 10;

int b = a ++; //  a=11;  b=10

//因为=优先于++。所以先进行 b = a 赋值, a再自加1

// ++在变量前,先自加1,再赋值

int m = 10;

int n = ++ m; // m=11; n=11

int xx = 50;

System.out.println(xx);   //控制台显示的是字符串 50 , int型50转字符串型50,库里有个printString转换的。也就是包含以下一段代码:

public void println(int x){

        Synchronized (this){

                print(x);

                newLine();

        }

}

int e = 100;

System.out.println(e++);  // 100

System.out.println(e); //101

因为:

public void println(int x = e ++){         //++在后,先赋值,后自加1

        Synchronized (this){

                print(x);       

                newLine();

        }

}

同理可得:

int s = 100;

System.out.println(++s);  // 101

System.out.println(s); //101

2、关系运算符

>

>=

<

<=

==

!=

关系运算符的运算结果一定是布尔类型:true/false

3、逻辑运算符

&  逻辑与

|  逻辑或

!  逻辑非

^  逻辑异或  (两边的算子只要不一样就是true)

&&  短路与

||   短路或

1、逻辑运算符要求两边的算子都是布尔类型,并且逻辑运算符运算结果也是布尔类型

2、短路与/或 和 逻辑与/或 的运算结果是相同的,只是短路与  存在短路现象

3、什么时候发生短路?

4、什么时候选择短路与  什么时候选择逻辑与?

//执着的逻辑与,两边算子都运算执行

int x = 10;

int y = 8;

System.out.println(x<y & ++x <y); //   &前面x<y已经是false,整个运算结果是false,那么按理说后面的 ++x < y不需要执行

System.out.println(x); // 11     但是,x = 11,说明后面的 ++x < y 执行了

//相同代码测试

//机智的短路与,后面的表达式可能不执行,效率更高,实际开发中短路与比逻辑与使用的多

int x = 10;

int y = 8;

System.out.println(x<y && ++x <y); //   &前面x<y已经是false,那么按理说后面的 ++x < y不需要执行,整个运算结果是false

System.out.println(x); // 10     说明后面的表达式没有运算

//所以我们说这种现象是短路现象

什么情况发生短路与?

        第一个算子表达式执行false

什么情况下发生短路或?

        第一个算子表达式执行true

4、赋值类运算符

基本的赋值运算符

=

扩展的赋值运算符

+=

-=

*=

/=

%=

1、赋值类运算符优先级:先执行等号右边的表达式,将执行结果赋值给左边的变量

2、扩展类运算符不改变运算结果的类型,底层用的强制类型转换

i = i+5;

i += 5;// 等同于 i = i +5

i -=5;    // i = i - 5;

//------------------------------------------------

byte b = 10;

b = b + 5;  //编译器检查语法,编译器发现 b+5是int 类型,但是b是byte类型,大容量向小容量转换需要强制类型,所以这里报错

b = (byte)(b + 5); //纠错

byte x = 10;

x += 5;        //  15;   这里不报错

说明   x += 5  等同于  x = (byte)(x + 5) ; 并不是等同于 x = x+5

byte z = 0;

z += 128; //-128【损失精度】;   等同于 z = (byte)(z + 128);  

z +=10000; //-112;   等同于 z = (byte)(z + 10000);

5、字符串连接运算符

java中的 + 运算符

1、求和        数字 + 数字 = 数字

2、字符串的连接运算,运算结果还是字符串     数字 + “字符串” = “字符串”

10 + 20 + “30”;   //自左向右运算;  3030

int a = 10;

int b = 20;

System.out.printfln("10 + 20 = "+a+b); //"10 + 20 = 1020"

6、三目运算符/三元运算符/条件运算符

语法规则:

布尔表达式 ? 表达式1 : 表达式2

布尔表达式为true,选择 表达式1作为整个表达式的执行结果

布尔表达式为false,选择 表达式2作为整个表达式的执行结果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值