尚硅谷_Java 学习笔记 day3

运算符

运算符是一种特殊符号,用以表示数据的运算、赋值和比较等

算数运算符、赋值运算符、比较(关系)运算符、逻辑运算符、位运算符、三元运算符

算数运算符
运算符运算范例结果
+正号+ 33
-负号b = 4; - b-4
+5 +510
-6 - 42
*3 * 412
/5 / 51
%取模(取余)7 % 52
++自增(前),先运算后取值
自增(后),先取值后运算
a = 2; b = ++ a;
a + 2; b = a ++;
a = 3; b = 3
a = 3; b = 2
自减(前),先运算后取值
自减(后),先取值后运算
a = 2; b = – a;
a + 2; b = a –;
a = 1; b = 1
a = 1; b = 2
+字符串连接“He”+“llo”“Hello”
class AriTest{
    public staic void main(String[] args){
    //取余运算结果的符号与被模数的符号相同:
        int m1 = 12;
    	int n1 = 5;
    	System.out.pringtln("m1 % n1 =" + m1 % n1);
        int m2 = -12;
    	int n2 = 5;
    	System.out.pringtln("m2 % n2 =" + m1 % n1);
        int m3 = 12;
    	int n3 = -5;
    	System.out.pringtln("m3 % n3 =" + m1 % n1);
        int m4 = -12;
    	int n4 = -5;
    	System.out.pringtln("m4 % n4 =" + m1 % n1);
    //(前)++:先自增,后运算
    //(后)++:先运算,后自增
        int a1 = 10;
        int b1 = ++a1;
        System.out.println(b1);
        int a2 = 10;
        int b2 = a1++;
        System.out.println(b2);
		}
}
/*
数子153输出:
百位数:1
十位数:5
个位数;3
*/
class AirExer{
    public static void main(String[] args){
        int num = 153;
        int bai = num / 100;
        int shi = num % 100 / 10;
        int ge = num % 10;
        System.out.println("百位数:" + bai);
        System.out.println("十位数:" + shi);
        System.out.println("百位数:" + ge);
    }
}
  • 取余运算结果的符号余被模数的符号相同
  • 开发中经常使用%判断能否被除尽的情况
赋值运算符

符号:=

  • =两侧数据类型不一致时,可以使用自动类型转换或者强制类型转换原则进行处理
  • 支持连续赋值
  • 扩展赋值运算符:+=,-=,*=,/=,%=
class SetValueTest{
    public static void main(String[] args){
        //赋值
        int i1 = 10;
        int j1 = 10;
        
        //连续赋值
        int i2,j2;
        i2 = j2 = 10;
        
        //自增赋值
        int num1 = 10;
        num1 += 2//num1 = num1 + 2;
        
        int num2 = 12;
        num2 %= 5;//num2 = num2 % 5;
        
        //s1 = s1 + 2;//数据类型不统一,编译失败
		short s1 = 10;
        s1 += 2;//不会改变变量本身的数据类型
    }
}

用赋值运算符做运算不会改变变量本身的数据类型

比较运算符
运算符运算范例结果
==相等于4 == 3false
|=不等于4 |= 3true
<小于4 < 3false
>大于4 > 3true
<=小于等于4 <= 3false
>=大于等于4 >= 3true
  • 比较运算符的结果都是boolean型,(truefalse
  • 比较运算符==不能误写成=(赋值运算符)
逻辑运算符

& 逻辑与 |逻辑或 !逻辑非

&&短路与 ||短路或 ^_逻辑异或

aba&ba&&ba|ba||b!aA^b
truetruetruetruetruetruefalsefalse
truefalsefalsefalsetruetruefalsetrue
falsetruefalsefalsetruetruetrueture
falsefalsefalsefalsefalsefalsetruefalse
//逻辑与、短路与的区别:
class LogicTest {
    public static void main(string[] args){
        //区分 & 与 &&
        boolean b1 = false;
        int num1 = 10;
        if(b1 & (num1++ > 0)){
            System.out.println("我在南京");
        }else{
            System.out.println("我在北京");
        }
        System.out.println("num1 =" +num1);
   		
        //
         boolean b2 = false;
        int num2 = 10;
        if(b1 && (num2++ > 0)){
            System.out.println("我在南京");
        }else{
            System.out.println("我在北京");
        }
        System.out.println("num2 =" + num2);
    }
}

逻辑与、短路与的区别:

  • &&&的运算结果相同
  • 当符号左边为true时,二者都会执行符号右边的运算
  • 当符号右边为false时,&继续执行符号右边的运算,&&不再执行符号右边的运算

同理,逻辑或、短路或的区别:

  • |||的运算结果相同
  • 当符号左边为false时,二者都会执行符号右边的运算
  • 当符号右边为true时,|继续执行符号右边的运算,||不再执行符号右边的运算

实际开发中推荐使用&&||

位运算符
运算符运算细节范例
<<左移空位补 0 ,被移除的高位丢弃3 << 2 = 12 → 3 * 22 = 12
>>右移最高位是 0 时,空位补 0
最高位是 1 时,空位补 1
3 >> 1 = 1 → 3 / 21 =1
>>>无符号右移空位补 03 >>> 1 = 1 → 3 / 21 =1
&与运算二进制位进行&运算,只有1&1时结果为1,否则为06 & 3 = 2
|或运算二进制位进行|运算,只有0|0时结果为0,否则为16 | 3 = 7
^异或运算相同二进制位进行^运算,结果是0
不同二进制位进行^运算,结果是1
6 ^ 3 = 5
~取反运算正数取反,各二进制码按补码各位取反
负数取反,各二进制码按补码各位取反
~6 = -7

m = k ^ n =(m ^ n)^ n

三元运算符

(条件表达式)?表达式1 : 表达式2

  • 条件表达式的结果为boolean类型

  • 根据条件表达式真或假,决定执行表达式 1,还是表达式 2

    如果表达式为 true,则执行表达式 1

    如果表达式为 false,则执行表达式 2

  • 表达式 1 与表达式 2 要求是一致的

  • 三元运算符可以嵌套使用

  • 凡可以使用三元运算符的地方都可以改写为 if — else,反之则不行

    优先使用三元运算符(简洁、执行效率高)

class SanYuanTest{
    public static void(Strings[] args){
		int m = 12;
		int n = 5;
        int max =( m > n ) ? m : n;
        System.out.println(max);
        //********************************
        n = 2;
        String maxStr = (m > n)?"m大"((m == n)?"m和n相等" : ”n大);
        System.out.println(maxStr)//******************************
        //获取三个数中的最大值
        int n1 = 12;
        int n2 = 30;
        int n3 = -43;
        int max1 = (n1 > n2)? n1 : n2;
        int max2 = (max1 >n3)? max1 : n3;
        System.out.println(max2);
        
    }     
}
运算符的优先级

运算符有不同的优先级(运算顺序)

只有单目运算符、三元运算符、复制运算符是从右向左运算的

实际开发中更常用()提升优先级,注重代码可读性

流程控制

  • 流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑块

  • 三种基本流程结构:

    1. **顺序结构 **
    • 程序从上到下逐行执行,中间没有判断和跳转
    1. 分支结构
    • 根据条件选择性的执行某行某段代码

    • if-elseswitch-case两种分支语句

    1. 循环结构
    • 根据循环条件,重复性的执行某段代码
    • while do-while for三种循环语句
    • Jdk1.5 提供了foreach循环,方便的遍历集合。数组元素
if-else结构
//第一种:
if(条件表达式){
	执行表达式		
}
//第二种:二选一
if(条件表达式){
    执行表达式1
}else{
    执行表达式2
} 
//第三种:n选一
if(条件表达式){
    执行表达式1
}else if(条件表达式){
    执行表达式2
}else if(条件表达式){
    执行表达式3
}……
else{
    执行表达式n
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值