第十二讲——基本运算符

第十二讲——基本运算符

Java语言支持以下运算符

掌握

  • 算术运算符;+、-、*、/、%(取余也叫求模)、++、--
  • 赋值运算符;= (int A =10 把10赋值给A)
  • 关系运算符;>、<、>=、<=、==、!= instanceof(!=不等于)
  • 逻辑运算符;&&、||、!(与或非)

了解

位运算符;&、|、^、~、>>、<<、>>>

条件运算符;?:

扩展赋值运算符;+=、-=、*=、/=

三元运算符;?:


算术运算符;+、-、*、/、%(求模、取余)++(自增),--(自减)

package Base02;
//开头是包的前缀不用管
public class Demo01 {
    public static void main(String[]args){
        int num01 =10;
        int num02 =20;
        int num03 =30;
        int num04 =40;
        
        System.out.println(num01+num02);
        System.out.println(num01-num02);
        System.out.println(num01*num02);
        System.out.println(num01/(double)num04);
        //运算时注意运算结果类型是整型还是浮点型
        //没转换的话 会计算错误
        // % 取余
        int num1 =10;
        int num2 =18;
        //两者之间相除取余数的绝对值(反正就是正的 )
        System.out.println(num2%num1);//18/10=1....8
        //这里讲一下强行转换类型的要点 下面是错误的格式
        System.out.println((double)(num1/num2));//0.0
        //这里的double是在int算出来的值后进行的转换是无效的,只是把0转换为0.0
        //以下是正确格式; 应该在计算前进行转换
        System.out.println((double)num1/num2);

    }
}

算术运算符;++(自增),--(自减)

package Base;

public class Demo04 {
    public static void main(String[]args){
        int A = 6;
        int B = A++;
        int C = ++A;
        int D = A++;
        int E = ++A;
        System.out.println(A);// A=10
        System.out.println(B);// B=6  赋值在前   自增在后   先赋值 值=6  先赋值1 再加自增1 那么后面的A基数是7
        System.out.println(C);// C=8  自增在前   赋值在后   先基数自增1  所以=8 后面的基数就是7+1=8
        System.out.println(D);// D=8  赋值在前   自增在后   先赋值 值=8  再自增1 后面就是基数8+1=9
        System.out.println(E);// E=10  自增再前   赋值在后   先自增1 值9  再自增1 后面的基数9+1=10
        System.out.println(A);// A=10
        System.out.println("\n"+"自减同理");
        int a = 10;
        int b = a--;
        int c = --a;
        int d = a--;
        int e = --a;
        System.out.println(a); // a=6
        System.out.println(b); // b=10
        System.out.println(c); // c=8
        System.out.println(d); // d=8
        System.out.println(e); // e=6
//后面的原值已经变了!!!注意
//===============================================
//显示
        
Desktop\DEMO-XXZ\out\production\DEMO-XXZ Base.Demo04
10
6
8
8
10
10

自减
6
10
8
8
6

Process finished with exit code 0
    }
}


  • 拓展默认运算类型
package Base02;

public class Demo01{
    public static void main(String[]args){
        byte A  =10;
        short B =20;
        int C =1281512;
        long D =123_4443_4343_4438L;//别忘记L
        System.out.println((String) (A+B));
        //不兼容的类型: int无法转换为java.lang.String
        //说明在默认情况下类型为int
        System.out.println((String)(A+B+C));
        //不兼容的类型: int无法转换为java.lang.String
        System.out.println((String) (A+B+D));
        //不兼容的类型: long无法转换为java.lang.String
        //有long最高级为long,没long默认int
    }
}

关系运算符;>、<、>=, <=, ==、!=

package Base02;
//<、>、==、!=
//关系运算符; 返回的结果false或true boolean
public class Demo01{
    public static void main(String[]args){
        int A =1;
        int a =2;
        System.out.println(A==a);//false
        System.out.println(A<a);//true
        System.out.println(A>a);//false
        System.out.println(A!=a);//true
    }
}

幂运算

package Base;
//幂运算
public class Demo05 {
    public static void main(String[]args) {
        //必须用double
        //格式是  double 变量名 = Math.pow(底数,几次方);(.不能少)
        //Math 骂丝~ 首字大写!数学的意思 
        double pow = Math.pow(2, 3);
        System.out.println(pow);
        //=8
    }
}



逻辑运算符;&&、||、!(与或非)

package Base;

public class Demo06 {
    public static void main(String[]args){
        boolean A = false;
        boolean B = false;
        System.out.println(A&&B);  //全真才真
        System.out.println(A||B);  //一真就真
        System.out.println(!(A&&B));//全真才假
        /*总结;
              &&(与)——>全真才真
              ||(或)——>一真就真
         !(&&)(非&取反)——>全真才假
          */

        //==========短路运算=======
        int num01 = 5;
        boolean C = (num01>4)||(num01++<4);
        System.out.println("\n");
        System.out.println(C);
        System.out.println(num01);//打印5  说明后面num01++ 并没有执行

        //总结; 短路运算;如果一开始就能判断真假,后面就不再计算:)

          }
}


位运算符;&(与)、|(或)、~(非&取反)、^(异或)、>>(右移位)、<<(左移位)、

package Base;

public class Demo07 {
    public static void main(String[]args){
        /*====位运算===
          & = “与”  和逻辑运算符&&一样 全为1时才1
          | = “或”  有一个1 为1 其他都是0
          ~ = “非(取反)”  和!(&&)0为1  1为0  注意区分非运算
          ^ = “异或”  相同为0 不同为1
         */

        /* A = 0011 1100
           B = 0000 1101
           -------------------------------
           A&B = 0000 1100
           A|B = 0011 1101
            ~B = 1111 0010
           A^B = 0011 0011
//效率极高!!!!
           ------位运算>>和<<---------
           怎么算2*8(前提是二的次方)最快?
           先转换为2*2*2*
           
           <<  左移位 乘法  左移2 就是2的二次方 3就三次方
           >>  右移位 除法  右移2 就是2的二次方 3就三次方
           
           二进制  逢二进一 2 4 6 8
           
           格式 =  2  << 8(2的几次方)

           0000 0000     1
           0000 0001     2    (2的一次方)
           0000 0011     3
           0000 0100     4    (2的二次方)
           0000 1000     8    (2的三次方)
           0001 0000    16    (2的四次方)
         */

        System.out.println(2<<3);
        //
    }
}

显示区域;
8

Process finished with exit code 0

扩展赋值运算符;+=、-=、*=、/=

偷懒运算符

package Base;

public class Demo09 {
    public static void main(String[]args){
        int a = 1;
        int b = 2;
        a-=b;// a= a-b
        a+=b;// a= a+b
        a*=b;// a= a*b
        a/=b;// a= a/b
        System.out.println(a);//应该显示-1
        //字符串连接符
        System.out.println(a+b);//  可以做数学运算
        System.out.println(""+a+b);// 前面加空白""和+ 变成String字符连接
        System.out.println(a+b+"123");//加在后面会进行运算!!!
    }
}

三元运算符

package Base;
//条件运算符 ?:
public class Demo10 {
    public static void main(String[]args){
        int score = 95;
        String type = score>92? "合格":"不合格";
        System.out.println(type);
        /*
        条件运算符;?:
        公式;   条件? 符合则 :不符合则
         */

        //运用到的单词
        //1.  score       成绩     斯古尔~
        //2. type          类型     台噗~       (比如成绩类型合格/不合格)
    }
}

新增单词

  1. score 成绩 斯古尔~
  2. type 类型 台噗~ (比如成绩类型合格/不合格)
  3. Math 数学 骂丝~
  4. pow 复述(幂) 捧挖~
  5. cast 转换 ka死特
posted @ 2020-08-28 21:09  项晓忠  阅读(344)  评论(0编辑  收藏  举报