算术,赋值,比较,逻辑运算符,移位,三目(元)运算符

 运算符

  算术运算符 (+,-,*,/,%,++,--)

  赋值运算符 (=,+=,-=,*=,/=,%=,&=,|=,^=,>>=,<<=)

  比较(关系运算符) (==,<,>,<=,>=,!=):运行的结果为boolean类型

  逻辑运算符 &,|,^,!,&&,||:用于连接左右两边都是布尔值或布尔表达式

  位运算符: (针对的是二进制)&,|,^,~,>>,<<,>>>

  三目(元)运算符 ------返回的一定是结果值

 

算术运算符(+,-,*,/,%,++,--)

  字符常量或者字符变量与其他相加会转成对应的编码值,除了boolean,引用类型

class test{
    public static void main(String[] args){
        int a = 10;
        char c = 'a';
        //输出为   107,c转化为编码值进行相加
        //字符常量或者字符变量与其他相加会转成对应的编码值,除了boolean,引用类型
        System.out.println(a+c);
​
    }
}

 

+(字符串拼接符),见到字符串时才拼接

 

除(/)

  如果参与运算的数都是整数,结果就是整数

class test{
    public static void main(String[] args){
        //输出结果为0
        System.out.println(2/3);
    }
}
class test{
    public static void main(String[] args){
        //输出结果为0.6666666...
        System.out.println(2*1.0/3);
    }
}

 

ArithmeticException -----算术异常

class test{
    public static void main(String[] args){
        //ArithmeticException -----算术异常
        System.out.println(2/0);
    }
}

 

Java允许除小数除0

class test{
    public static void main(String[] args){
        //运行结果为Infinity----正无穷大
        //分子不变,分母无限趋向于0,则接近无限
        System.out.println(1.0/0);
        //运行结果为-Infinity----负无穷大
        System.out.println(-1.0/0);
        //运行结果为NaN---------不是一个数
         System.out.println(0.0/0);
    }
}

 

取余(%):取余结果的正负号与取余符号左边值的正负号一致
class test{
    public static void main(String[] args){
        //结果为-3
         System.out.println(-3%-6);
    }
}

 

++,--:单独操作,参与运算
class test{
    public static void main(String[] args){
        int a=1//如果++或--在操作数之前,先自加/减,再传值
        System.out.println(++a);
        //如果++或--在操作数之后,先传值,再自加/减
        System.out.println(a++);  
    }
}

 

赋值运算符(=,+=,-=,*=,/=,%=,&=(按位与等),|=(按位或等),^=(按位异或等),>>=(右移等),<<=(左移等))

class test{
    public static void main(String[] args){
        byte a=1;
        a+=2  //与a=(byte)(a+2)等价,底层会进行强转
        System.out.println(a);  
    }
}

 

比较(关系运算符)(==,<,>,<=,>=,!=):运行的结果为boolean类型
逻辑运算符(&:逻辑与,|:逻辑或,^:逻辑异或,!:逻辑非,&&:短路与,||:短路或):用于连接左右两边都是布尔值或布尔表达式

  ^:逻辑异或—----相同结果为(true true,false false)false,结果不同(true false)结果为true

  &&:只有左边为true时,才继续向下执行,如果左边结果值为false,结果就为false,右边默认不执行

  &:先执行语句再进行判断

  ||:只有左边为false时,才继续执行,如果左边结果值为true时,结果就为true,右边默认不执行。

  |:先执行语句再进行判断

当&&和||同时出现: true&&false||true 先看true,再看false,看true&&false,再看true

 

移位运算符:(针对的是二进制)
三目(元)运算符

 

移位运算符:(针对的是二进制)

  需要将数据转成二进制的补码形式才能进行运算

  &(按位与),|(按位或),^(按位异或),~(按位取反),>>(右移),<<(左移),>>>(无符号右移)

class test{
    public static void main(String[] args){
        int a=5//&(按位与),遇0则0
        //用于:1&任意整数==1,这个整数为奇数,一个正数&任意数==值,这个值为正数
        System.out.println(a&2);    //  结果 0    
            
        //|(按位或),遇1则1
        System.out.println(a|2);    //结果 7
            
        //^(按位异或),相同则0,不同则1 
        //a^a==0,a^b^a=b,一个整数。按位异或其他整数两次,结果就是他本身
        //作用:可以用于两个数据值的交换   a=a^b b=a^b a=a^b
        System.out.println(a^2);    //结果 7
            
        //~(按位取反,包括符号位)
        System.out.println(~a);     //结果 -6
    }
}

交换两个整数

  按位异或(只能针对整数):a=a^b ;b=a^b ;a=a^b

  求和(一般适用于整数):a=a+b;b=a-b;a=a-b;

  效率:按位异或>求和>中间变量(开发中常用适用于任意数据)

 

(右移)>>,<<(左移),>>>(无符号右移),移动的位数,先对32位取余,余数就是要移动的位数

右移(>>):如果是正数,右移几位就在最左边加上几个0,如果是负数就在最左边加上几个1

左移(<<):无论正负数,左移几位就在最右边加上几个0

无符号右移(>>>)::无论正负数,右移几位就在最左边加上几个0

class test{
    public static void main(String[] args){
        int a = -12;
        
        System.out.println(a>>2);       //结果 -3
        
        System.out.println(a<<2);       //结果 -48
        
        System.out.println(a>>>2);      //结果 1073741821
    }
}

 

 

三目(元)运算符------返回的一定是结果值

格式:

  表达式?表达式1:表达式2;

执行流程:

  先计算出表达式的值,如果是true,则返回表达式1,如果是false,则返回表达式2

 

 

键盘录入

步骤

  1.导包:      import java.util.Scanner;

  2.获取Scanner:  Scanner sc = new Scanner(System.in);

  3.获取数据:

int num = sc.nextInt(); ​ 
String s = sc.next(); ​
System.out.println(num+s);

 

posted @ 2020-08-18 16:24  minnersun  阅读(286)  评论(0编辑  收藏  举报