运算符基础1

运算符

优先级 ()多用有好处
  • 算数运算符:+,-,*,/,%(模运算,取余数),++,--
  • 赋值运算符:= (int a = 10; 叫做把10赋值给a)
  • 关系运算符:>,<,>=,<+,==(判断相等否),!=(判断不等于)
  • 逻辑运算符:与 (&&) 或 (||) 非(!)
  • 位运算符:&,|,^,~,>>,<<,>>>(了解即可)
  • 条件运算符:? :
  • 扩展赋值运算符:+=,-=,*=,/=

Package

  • 包既是文件夹,右键src新建Package,命名为Operator,这里新建Demo01名称与上一个包不冲突

image-20220705163838348

  • 把之前的Demo放到base里

image-20220705164142563

算数运算符

  • 快捷操作 ctrl+D 复制当前行到下一行
  • 注意除法时会出现小数,我们之前学到,两个int 值计算会默认输出int值,所以需要强制转换成小数类型,否则默认取整
package operator;

public class Demo01 {
    public static void main(String[] args) {
        //二元运算符
        //ctrl+D 复制当前行到下一行
        int a = 10;
        int b = 20;
        int c = 30;
        int d = 40;
        int e = 50;
        System.out.println(a+b);
        System.out.println(a*b);
        System.out.println(a/b);//显示结果0,int类型的两个数算出0.5,被整数类型int取整数
        //这个需要强制转换
        System.out.println((float)a/b);//!!!这样就输出0.5

    }
}

image-20220705165634984

  • 数值计算,优先输出相加数里的最高级类型,如果需要其他低级类型,需要强制转换

image-20220707142347203

image-20220707142810498

image-20220707142858073


  • 注意点:误点insert输入

image-20220705172651032


关系运算符

  • 关系运算符返回结果是判断正误 :正确 错误 (判断结束,通过布尔值表示)
package operator;//包名

public class Demo03 {
    public static void main(String[] args) {
        //关系运算符返回结果:正确  错误(判断结束,通过布尔值表示)
         int  a = 10;
         int  b = 20;
        System.out.println(a>b);//大于,false
        System.out.println(a<b);//小于 true
        System.out.println(a==b);//等于 false
        System.out.println(a!=b);//!也分中西文输入法 
    }
}

模运算

  • 取余运算 21/10=2......1 取余数1
package operator;//包名

public class Demo03 {
    public static void main(String[] args) {
    int  a = 10;
    int c = 21;
    //取余,也叫模运算
    System.out.println(c%a);//c/a     21/10 =2....1  取余数1
    }
}

自增自减++ --

  • 自增 自减 看作一元运算符
  • ++a :执行 int c = ++a; 这行代码前,a先自增1,再给c赋值
package operator;

public class Demo04 {
    public static void main(String[] args) {
        int a = 3;
        
        //先隐藏执行++a a=a+1 由3自增为4
        int c = ++a;//++a  a=a+1  执行时机不同  ++a是执行 这行代码前,先自增,再给c赋值
        System.out.println(c);//后赋值输出4


   
        //幂运算 2^3=2*2*2
        double pow = Math.pow(2, 3);//alt +回车,自动补全前面的double pow =
        System.out.println(pow);
        
    }
}

image-20220706211114227

  • a ++ : int b = ++a;这行代码后,即先给b赋值,a再自增1

    package operator;
    
    public class Demo04 {
        public static void main(String[] args) {
            //自增
            int a = 3;
            int b = a++;//执行完这行代码后,先给b赋值,再自增
              //隐藏执行了a++  就是  a=a+1  这里可以看作是隐藏了这一行代码,即int b = a++;执行完a才加1
            System.out.println(b);//先赋值输出3
            System.out.println(a);//后自增输出4
              //此时a=4
    
    
              //先隐藏执行++a a=a+1 由4自增为5
            int c = ++a;//++a  a=a+1  执行时机不同  ++a是执行 这行代码前,先自增,再给c赋值
            System.out.println(c);//后赋值输出5
    
    
            System.out.println(a);//输出5
            
              //幂运算 2^3=2*2*2
              double pow = Math.pow(2, 3);//alt +回车,自动补全前面的double pow =
              System.out.println(pow);
            
    
             //自减
            int d = 5;
            int e = d--;//先赋值e=5,再自减d=4
            System.out.println(e);//输出5
            System.out.println(d);//输出4
              //此时d=4
    
            int f = --d;//先自减d=3,再赋值f=3
            System.out.println(f);//输出3
              //此时d=3
    
        }
    }
    
    

逻辑运算符

  • 与 : a&&b 逻辑与 运算:两个变量都为真,结果为真

  • 或 :a||b 逻辑或 运算:两个变量有一个为真,结果为真

  • 非 :! (a&&b) 逻辑非 运算:两个变量都为假,结果为真

    package operator;
    
    //逻辑运算符
    public class Demo05 {
        public static void main(String[] args) {
            boolean a = true;
            boolean b = false;
    
            System.out.println("a&&b:"+(a&&b));//输出 a&&b:false
            System.out.println("a||b:"+(a||b));//输出 a||b:true
            System.out.println("!(a&&b):"+!(a&&b));//输出  !(a&&b):false
    
    
            //短路运算
            System.out.println("a&&b:"+(b&&a));//b一上来就假,短路直接返回假
    
    
            int c = 5;
            boolean d = (c<4)&&(c++<4);//c<4=false,后面不执行
            System.out.println(d);//毫无疑问输出false,
            System.out.println(c);//在c<4处短路,所以后面的c++不再执行,此时c无自增,所以c输出5
        }
    }
    
  • 短路运算

    • 判断逻辑与时,若前面先被判断为false,则不执行后面的代码
    package operator;
    
    //逻辑运算符
    public class Demo05 {
        public static void main(String[] args) {
            boolean a = true;
            boolean b = false;
    
            //短路运算
            System.out.println("a&&b:"+(b&&a));//b一上来就假,短路直接返回假
            
            int c = 5;
            boolean d = (c<4)&&(c++<4);//c<4=false,后面不执行
            System.out.println(d);//毫无疑问输出false,
            System.out.println(c);//在c<4处短路,所以后面的c++不再执行,此时c无自增,所以c输出5
        }
    }
    
  • 对照

image-20220707201932680

  • 输出结果

image-20220707201416532


位运算

  • 位运算效率极高,其也是比较与或非关系

  • 左移与右移

    首先了解一下二进制

image-20220707161046333

​ << 左移(箭头指向左) 数字*2

​ <<右移(箭头指向右) 数字/2

package operator;

public class Demo06 {
    public static void main(String[] args) {
        /*
        A = 0011 1100
        B = 0000 1101
        -------------------------------------------------------------------
        A&B=0000 1100  位运算,0假1真,&运算:全1为真,其余为假(指上下对应的)
        A|B=0011 1101                        有1为真,全0则假
        A^B=0011 0001  亦或 相同为0,不同为1
        ~B =1111 0010  取B的完全相反,与A无关

        -----------------------------------------------
        2*8=16   2*2*2*2

        位运算效率极高!
        << 左移(箭头指向左)  数字*2
        在二进制     代表
        0000 0000    0
        0000 0001    1
        0000 0010    2         0000 0011    3
        0000 0100    4
        0000 1000    8
        0001 0000    16

        >> 右移(箭头指向右)  数字/2


         */
        System.out.println(2<<3);//16
        System.out.println(16>>4);//1,除四次2
    }
}


字符串连接符

  • 在+两侧出现String类型(即字符串类型)就会把另一个类型都转换成String类型然后连接起来
  • 可以在拼接输出时使用
  • 注意点、
    • System.out.println(a+b+"");//这个会先运行a+b,不会被转换成String类型输出
package operator;

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


        //字符串连接符
        //拼接输出时候使用
        // +  在+两侧出现String类型(即字符串类型)就会把另一个类型都转换成String类型然后连接起来
        System.out.println(a+b);//30
        System.out.println(""+a+b);//1020 把a和b连接起来了
        System.out.println(a+b+"");//30 先运行了+
        System.out.println(a+"爱你"+b);//10爱你20
    }
}

image-20220707203648456


三元运算符

package operator;

public class Demo08 {
    public static void main(String[] args) {
        //三元运算符
        /*   x ? y :z
             如果x==true,则结果为y,否则结果为z

         */
        int score1 = 80;
        int score2 = 59;
        String type1 = score1 < 60 ? "不及格" : "及格";
        String type2= score2 < 60?"不及格":"及格";//:也分中西文
        System.out.println(type1);//及格
        System.out.println(type2);//不及格


    }
}

posted @ 2022-07-07 20:41  来自土木的一员  阅读(42)  评论(0)    收藏  举报