Java语法基础(三)—运算符

1、运算符

1.1、算数运算符

+ - * / %

三种含义:
1. 运算

public class Demo01 {
    public static void main(String[] args) {
  
        int a=20;
        int b=10;
        System.out.println(a+b); // 30

2.正负

     int a1=+5;
     System.out.println(a1);  // 5

3.拼接,连接符
字符串和其他数据类型进行运算,结果一定是字符串类型

     String s1="abc";
     int a2=10;
     String s3 = s1 + a2;
     System.out.println(s3);
     System.out.println("helloworld"+a2+"abc"+'d'+true+3.14);

      //定义两个变量 m和n m的值是5,n的值是8,连接成 5+8=13;
     int m=5,n=8;
     System.out.println(m+"+"+n+"="+(m+n)+";");

4、 符号
① 运算  ② 正负

      System.out.println(10-100);
      System.out.println(10-(-5));
     // System.out.println("helloo"-"o");  错误的!

6.乘号

      System.out.println(3.5 * 2.6);
      System.out.println(2 * 3);

7.除以

      System.out.println(10/2);
      System.out.println(10/3);
      System.out.println(0/3);
      System.out.println(3/3);
      //ArithmeticException 算术异常
      //System.out.println(3/0);
  1. 取模 ,求余数
        System.out.println(10%3); // 1
        System.out.println(5%5); // 0
        System.out.println(2%10); // 2
        System.out.println(0%10); // 0
        System.out.println(3.5%2); // 1.5
    }
}

++ - - (重点)

public class Dome02 {
    public static void main(String[] args) {
         // ++ 自增1
        int a=5;
        a++;
        System.out.println(a); // 6

        int b=5;
        ++b;
        System.out.println(b); // 6
    }
}
public class Demo03 {
    public static void main(String[] args) {
        int a=5;
        //a先赋值给b,然后a再自增1
        int b = (a++);
        System.out.println("a:"+a);
        System.out.println("b:"+b);

        int m=5;
        //m先自增1,自增完成后把结果赋值给n
        int n = ++m;
        System.out.println("m:"+m);
        System.out.println("n:"+n);
    }
}

总结:++在变量之前,先自增1,后其他操作!
   ++在变量之后,先其他操作,再自增1!
    即使有小括号,也不影响!  

1.2、赋值运算符

+= - = *= /= %=

public class Demo04 {
    public static void main(String[] args) {
        // +=  -=   *=  /=  %=
        int a = 5;
        // 计算:相当于a=a+2;
        // a=a+2
        a += 2;
        System.out.println(a);// 7
        a -= 3;
        System.out.println(a);// 4
        a *= 2;
        System.out.println(a);//8
        //a /= 3;   除不尽保留整数部分
        a /= 4;
        System.out.println(a);// 2
        //a=a%1;
        a %= 1;
        System.out.println(a);// 0
    }
}

问题1:a += 2 是不是等价于与 a = a+2 ?
 答:不等价

        byte a1 = 5;
             a1 += 2;
        System.out.println(a1);// 7
        byte a2 = 5;
             a2 = (byte)(a2 + 2);
        System.out.println(a2);// 7
    }
}

问题2:+= 和 =+ 的问题

        int m = 10;
            m += 2; // m=10+2=12
        System.out.println(m);// 12

        int n = 10;
        n=+2;// n=+2=2
        System.out.println(n);// 2

    }
}

1.3、比较(关系)运算符

> < >= <= == != (不等于)

比较运算符的结果都是boolean类型的字面值(true,false)

public class Demo05 {
    public static void main(String[] args){
		// 关系(比较)运算符:

        int a = 5,b = 10;
        System.out.println(a == b);// false
        System.out.println(a != b);// true
        System.out.println(a > b);// false
        System.out.println(a < b);// true
        System.out.println(a >= b);// false
        System.out.println(a <= b);// true
        System.out.println(a >= ++b);// b=11  false

        // 数学中比较用= , java用 == 来比较 , java的 = 是赋值
        System.out.println(a == b); // false
        System.out.println(!!!!!!!!!!!(a!=b)); // false  ! 两两抵消
    }
}

1.4、逻辑运算符

用于连接多个条件(多个关系表达式),最终的结果也是一个 boolean 值。

1、逻辑或 | ,逻辑与 & ,^ 逻辑异或,取反!

public class Demo06 {
    public static void main(String[] args) {
        
        // | 或者
        /*
        *  左边一个条件,右边一个条件,只要有一个条件成立,最终结果是成立!(true)
        *  左边和右边都不成立,最终结果是不成立!(false)
        *
        * */
        int a=7,b=5,c=10;
        System.out.println(a>b | a>c); //true
        
        // & 并且,与
        /*
        * 左边一个条件,右边一个条件,只要有一个条件不成立,最终结果就不成立!
        * 两边都必须成立,最终结果才成立!
        * */
        System.out.println(a>b & a<c); //false
        
        // ^ 异或
        /*
        * 异 ,不同!
        *
        * 左边一个条件,右边一个条件,只要两个条件不同(异),那么最终结果就是true!
        * 两边条件只要是相同,结果是false!
        *
        * */
        System.out.println(a>b ^ a<c); //false
        System.out.println(a>b ^ a>c); //true

        //!取反
        System.out.println(!true);
        boolean flag = ! (5 != 10);
        System.out.println(flag); //false


    }
}

2、短路或 || ,短路与 &&

|| 短路或

|| 短路或和 | 最终结果都是一样的!

区别:|| 短路或,只要第一个条件就能判断最终结果的,第二个条件就不执行! 第一个条件成立,第二个条件就不判断!!!

public class Demo07 {
   public static void main(String[] args) {
           
          int a=5,b=10;
          //第二个条件执行
       //System.out.println( b>a | 1==a++ );
         //第二个条件不执行
         System.out.println( b>a || 1==a++ );
         //第二个条件执行了
       //System.out.println( 1!=1 || 1==a++ );
       System.out.println(a);

&& 短路与

只要第一个条件就能判断最终结果的,第二个条件就不执行!
第一个条件不成立,第二个条件不会执行!

      // System.out.println(5>30 & 1==b++);
      System.out.println(5>30 && 1==b++);
       System.out.println(b);
   }
}

1.5、三元运算符(三目运算)

基本语法: 数据类型 变量名 = 条件表达式 ? 字面值1 :字面值2;

注意: 字面值必须和数据类型匹配

条件表达式:只要结果是boolean类型字面值,就是条件表达式

运算规则:
1.如果条件表达式为true,运算后的结果是字面值1;
2.如果条件表达式为false,运算后的结果是字面值2;

理解:条件表达式是否成立,决定哪一个字面值赋值给变量,
如果条件表达式成立,第一个字面值赋值给变量,
如果条件表达式不成立,第二个字面值赋值给变量!

public class TernaryOperator01 {
    public static void main(String[] args) {
        int a = 15;
        int b = 30;
        int result = a > b ? a++ : b--;
        System.out.println("result="+ result); // result=30
    }
}

应用场景: 这次考试如果及格,爸爸带我去游乐场,否则爸爸揍我一顿!
用户在控制台输入成绩,来判断是去游乐场还是揍我一顿!

public class TernaryOperator02 {
    public static void main(String[] args) {
        //1.创建Scanner类的对象
    Scanner sc = new Scanner(System.in);
       // 2.提示用户输入考试成绩
        System.out.println("请输入您的成绩?");
      // 3.获取用户输入的成绩
        double score = sc.nextDouble();
      // 4.判断用户的成绩是否及格
        
        String result = score >= 60.0 ? "爸爸带我去游乐场!":"爸爸揍我一顿!";
        System.out.println(result);
    }
}

三元运算符 练习

public class TernaryOperatorExercise {
    public static void main(String[] args) {
        //案例:实现三个数的最大值
        int n1 = 456;
        int n2 = 49;
        int n3 = 234;

        //思路
        //1.先得到n1和n2中最大数,保存到max1
        //2.然后再求出max1和n3中的最大数,保存到max2
        int max1 = n1 > n2 ? n1 : n2;
        int max2 = max1 > n3 ? max1 : n3;
        System.out.println("最大数="+max2); //最大数=456
    }
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值