Java SE 运算符

Java SE 运算符

1、运算符

  运算符是一些特殊符号,主要用于数学函数、一些类型的赋值语句和逻辑比较方面。

1.1、主要有6种:

  • 算数运算符 +;-;*;/;%;++;–;
  • 赋值运算符 =;+=;-=;*=;/=;%=; --> a+=a+b;
  • 位运算符 >>; >>>; <<; &;|;^;~ 取反;
  • 比较运算符|关系运算符 >; >=; <; <=; ==; != ;
  • 逻辑运算符 !; &;^ ; | ;&&; ||;
  • 条件运算符 条件? 值1 :值2 ;

操作数: 运算符左右两边的数据为操作数 a*b a++

表达式: 运算符连接两边的操作数整体称为表达式 a+b

语句 : ;代表语句的结束

1.2、可分为3类:

  • 一元运算符: 操作数只有一个的运算符 a++ ++a – +(正号) -(负号)
  • 二元运算符: 操作数只有两个的运算符 + - * / % …
  • 三元运算符: 条件运算符 表达式 ? 值1 :值2 ;

2、算术运算符

  • + ;正号(省略);

    ​    加法运算 a+b;

    ​   字符串的连接符 : 当+左右两边一旦出现字符串,+都作为字符串的连接符使用,把两边的数据最终连接成为一整个字符串。

  • - ;减

  •  ***** ;乘

  • / ;求商

  • % ;求余数

  • ++ ;自增,自身+1;

    • a++先赋值再自身加1;
    • ++a 先自身加1再赋值;
  • ;自减,自身-1;

    • a-- 先赋值再自身减1;
    • –a 先自身减1再赋值;
int a = 4;
int b = 1;
int c = 5;
int i = 3;

System.out.println("a=" + a);  //"a=4"
System.out.println("b = "+b);  //"b = 1"
//作为拼接
System.out.println("hello"+'a'+1);  // "helloa1"
System.out.println('a'+1+"hello");  // "98hello"
//乘;商;余
int sum=a*b; //4
int y=b/a;  //0
int v=a%b;  //1
//++ --使用方法 a++先赋值再自身加1   ++a 先自身加1再赋值
//++ --使用方法 a++先赋值再自身加1   ++a 先自身加1再赋值
int r = i++ + ++i + i++ + i++ + ++i;
System.out.println(i); //8
System.out.println(r); //2

3、赋值运算符

  • = ;赋值
  • += ;–> a+=b;== a=a+b;
  • -= ; a-=b => a=a-b;
  • = ;ab a=a*b;
  • /= ;a/=b a=a/b;
  • %= ;a%=b => a=a%b;

推荐使用
  优点:
  执行效率高
  帮助自动做强制类型转换 (++,+=等可以实现自动强制类型转换)

缺点:
  不够直观

 				//正常写法
        a  = a+1;  //a +=1;

        System.out.println(a+=b);
        System.out.println(a+","+b);
        System.out.println(a-=b);
        System.out.println(a+","+b);
        System.out.println(a*=b);
        System.out.println(a+","+b);
        System.out.println(a/=b);
        System.out.println(a+","+b);
        System.out.println(a%=b);
        System.out.println(a+","+b);

        a+=10;
        //a+=1;  a++;
        System.out.println(a+","+b);

        short s = 1;
        s = (short)(s+1);
        //帮助自动做强制类型转换
        s++;
        s+=1;
        System.out.println(s);

4、位运算符

  先把操作数转为二进制,然后运算,结果转为十进制。

十进制整数转为二进制:
  使用十进制的整数不停的除以2,最终的结果为0的时候,从下晚上看余数
   0b开头标识二进制的整数

二进制转为十进制:
   从最后一位数开始,不停的通过这一位置的数据*当前进制数^0,次方每次+1,最终的和就是十进制的表现形式

  • & ; 全1为1
  • | ; 全0为0
  • ^ ; 相同为0;不同为1;
    • 以上三个运算符,当两边的操作数为boolean,最为逻辑运算符,当两边的操作数为数字,作为位运算符存在
    • 注意: 一个数据如果对另一个数据异或两次,结果是元数据本身
  • ~ 取反 ; 1变0;0变1;
  • >> ; 向右移;高位为1添1,高位为0添0;
    • 操作数1>>操作数2 : 操作数1先转为二进制,然后对二进制的操作数1向右移动操作数2个位数,移出的数据不看,保留的数据转为十进制
    • ==规律: 变小 操作数1>>操作数2 > 操作数1/2^操作数2
  • ** >>> ;** 无条件向右移,添0;
  • ** << ;** 向左移,末位添0;
    • 操作数1<<操作数2 : 操作数1先转为二进制,然后对二进制的操作数1向左移动操作数2个位数,空位补0,保留的数据转为十进制
    • ==规律: 变大 操作数1<<操作数2 > 操作数1*2^操作数2
			System.out.println(10);//10
        System.out.println(0b10);//2
        System.out.println(0b1110);//14

        System.out.println(2&3);  //2
        System.out.println(2|3);  //3
        System.out.println(2^3);  //1

        System.out.println(2^3);

        System.out.println(14>>2); //3
        System.out.println(2<<2); //8
        System.out.println(14<<3); //112

5、比较运算符|关系运算符

  • . > ; 大于
  • . >= ; 大于等于
  • . < ; 小于
  • . <= ; 小于等于
    • 操作数只能为为基础数据类型的数据 byte,short,int,long,float,double,char
  • . == ; 是否相等
  • . != ; 是否不等
    • 任意类型都能判断

注意:
  所有的比较运算符结果为boolean值

  boolean 类型不参与类型转换

​    !=就是==取反

注意:

  • 如果以后比较字符串内容是否相等,都通过equals() 进行比较 ;
  • 字符串1.equals(字符串2) --> 相等true,不相等false;
  • equals就是根据两个字符串的内容比较字符串是否相等;
			  String name = "zhangsan";
        String name2 = "zhangsanfeng";
        System.out.println(name==name2);
			 System.out.println(true!=false);//true
        System.out.println(true!=3>2);//false

        String name;
        String password;
        Scanner sc =new Scanner(System.in);
        System.out.println("输入用户名:");
        name=sc.nextLine();
       // sc.nextLine();
        System.out.println("输入密码:");
        password=sc.nextLine();
       // sc.nextLine();

        if(name.equals("admin") && password.equals("123456")){
            System.out.println("管理员用户");
        }else if(name.equals("normal") && password.equals("654321")){
            System.out.println("普通用户");
        }else{
            System.out.println("错误");
        }

6、逻辑运算符

  • ! ; 非,取反 ;!true=>false !false->true。
  • **& ;**与 ;两边都满足才是满足,一个为false就是false。
  • ^ ; 异或 ; 两边的操作数相等为false,不等为true。
  • | ; 或 ;一个为true就是true,两个都为false才是false。
  • && ; 短路与
  • || ; 短路或
    • 如果操作操作数能够决定整个结果,右边的操作数将不会执行。

注意:

  逻辑运算符两边操作数结果必须为boolean 。

   逻辑运算符最终的结果boolean类型的值。

   建议使用短路运算符。

System.out.println("---------&与------"); //全true为true
System.out.println(true&false);//false
System.out.println(true&true);// true
System.out.println(false&true);//false
System.out.println(false&false);//false
System.out.println(false&&5/0==0);//false

System.out.println("------| 或-------"); //全false为false
System.out.println(true|true);//true
System.out.println(true|false);//true
System.out.println(false|false);//false
System.out.println(true||5/0==0);//true

System.out.println("-------^异或-------");//相同为false,不同为true
System.out.println(true^true);//false
System.out.println(false^true);//true

System.out.println("--------!非-------");//取反
System.out.println(!true);//false
System.out.println(!false);//true
				System.out.println("----------&&---------------");
        System.out.println(true && false);  //false
        System.out.println(true && true);  //true
        System.out.println(false && true);  //false
        System.out.println(false && false);  //false
        System.out.println("zhangsan"!="zhangsan" & "lisi".equals("lisi"));  //false
        //System.out.println("zhangsan"!="zhangsan" & 5/0==0);  //java.lang.ArithmeticException: / by zero
        System.out.println("zhangsan"!="zhangsan" && 5/0==0);  //false,因为第二个操作数不会执行,发生短路

        String name = "张三";
        int pwd = 1234;
        //用户名与张三相等,同时必须是否为123相等,相等登录成功,不等登录失败
        if(name.equals("张三")  &&  pwd==123 ){
            System.out.println("登录成功");
        }else{
            System.out.println("登录失败");
        }

7、条件运算符

  • 条件? 值1 :值2 ;
    • 表达式的结果为boolean类型,true|false

条件: 是一个值为boolean类型的表达式 true|false

执行流程:

  1. 计算条件表达式
  2. 如果值为true,最终的结果为值1
  3. 如果值为false,最终的结果为值2

条件运算符与if语句之间的区别:

  • 条件运算符肯定会得到一个结果,if不一定
  • 条件运算符结果只能为某一个值,if语句体可以是一个语句块
  • 条件运算符对简单的条件判定效率高,毕竟是运算符, if对复杂的比较适合
int a1=3;
int b2=4;
int c3=5;
int d4;
//如果表达式值为true,结果为值1
//如果表达式值为false,结果为值2
d4=a1>b2? a1:b2;
d4=d4>c3? d4:c3;
System.out.println("最大数:"+d4);
// 单目算数位关系,逻辑三目后赋值;
//a=5  b=6
d4 = a1 > b2 && a1 > c3 ? a : (b2 > c3 ? b2 : c3);
System.out.println(d4);

//
boolean max = a1 < b2 ?( ++a1 * 2 > b2 | (a1*=2) ==12 ): (a1 < b2);
System.out.println(max); //true
System.out.println(a1); //6
char f='a';
System.out.println(f+1);

8、运算符优先度

单目算数位关系,逻辑三目后赋值;

运算符的优先级:

  • 优先级: 优先执行谁
  • 口诀: 单目算数位关系,逻辑三目后赋值
  • 默认从左向右运算,()|. 优先级最高
  • & > ^ > | > && > ||

根据操作数的个数进行根类

  • 单目: 操作数只有一个 ++ – +正号 -负号 !
  • 双目: 操作数有2个 + - * / % > < …
  • 三目: 条件运算符
 			//&& 与 || 之间的优先级: &&优先级高于||
        System.out.println(true && true || false);  //true
        System.out.println(true || true && false);  //true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值