JAVA中的运算符

Java语言支持如下运算符:

算术运算符:

算数运算符包括:
+ 加法运算,字符串连接运算
- 减法运算
* 乘法运算
/ 除法运算
% 取模运算,两个数字相除取余数
++ -- 自增自减运算

赋值运算符:=

关系运算符:

比较运算符包括
== 比较符号两边数据是否相等,相等结果是true。
< 比较符号左边的数据是否小于右边的数据,如果小于结果是true。
> 比较符号左边的数据是否大于右边的数据,如果大于结果是true。
<= 比较符号左边的数据是否小于或者等于右边的数据,如果小于结果是true。
>= 比较符号左边的数据是否大于或者等于右边的数据,如果小于结果是true。
!= 不等于符号 ,如果符号两边的数据不相等,结果是true。
Instanceof

逻辑运算符:

逻辑运算符包括:
&& 短路与 1. 两边都是true,结果是true 2. 一边是false,结果是false 短路特点:符号左边是false,右边不再运算
`
取反 1. ! true 结果是false 2. ! false结果是true

位运算符:&|^~>><<>>>(了解!!!)

条件运算符:?

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


算术运算符

自增运算符:+``+

自减运算符:--

以上两种运算符可以称为一元运算符(因为他们可以一个数进行加减的变化)

  • ++/--:执行代码前,先自增,再赋值。
  • ++/--:先赋值,代码执行后,再自增。
public static void main(String[] args) {
        int a=3;
        int b=a++;
        //执行这行代码后,先给b赋值,再自增。
        System.out.println(a);//4
        int c=++a;
        //执行这行代码前,先自增,再给b赋值。
        System.out.println(a);
        //a=5
        System.out.println(b);
        //b=3
        System.out.println(c);
        //c=5
    }						

扩展:很多运算,我们都会使用一些工具类来操作。

double pow = Math.pow(2,3);
//Math.pow 幂运算
System.out.println(pow);//8 2^3

注意:

再多个操作中,有一个数为比int大的数据类型,则数据结果就为改类型,如果没有比int打的数据类型大的数,结果都为int.

小建议:当整数相除的时候,建议把其中一个整数转换成double类型

   public static void main(String[] args) {
        long a=123456789L;
        int  b=123;
        short c=10;
        byte d=8;
        System.out.println(a+b+c+d);//long
        System.out.println(b+c+d);//int
        System.out.println(c+d);//int
    }

关系运算符

关系运算符的结果为:false,true 是一个布尔值

    public static void main(String[] args) {
        //关系运算符返回的结果:正确,错误 布尔值
        int a=10;
        int b=20;
        int c=20;

        System.out.println(a>b);//fasle
        System.out.println(a<b);//true
        System.out.println(b==c);//rue
    }

逻辑运算符

&&(与),||(或),!(非:取反)

逻辑与运算&&:两个变量都为真,结果才为true

逻辑或运算||:两个变量其中一个为真,则结果才为真

取反:结果如果是真,则为假,如果是假则为真

   public static void main(String[] args) {
        boolean a=true;
        boolean b=false;

        System.out.println("a&&b:"+(a&&b));
        System.out.println("a==b:"+(a==b));
        System.out.println("!(a&&b):"+!(a&&b));
    }

注意事项

  1. 与“&&”和或“||”有短路效果:如果根据左边已经可以判断出最终结果,那么右边的代码将不会执行
  2. 逻辑运算符只能用于boolean值。
  3. 与、或需要左右各一个布尔值,但是取反只要有一个的一个布尔值即可。
  4. 与、或、两种运算符,如果多个条件,可以连续写。
int  c=5;
boolean d=(c<4)&&(c++<4);
System.out.println(d);//false
System.out.println(c);//5

位运算符:

&:需要都为1结果才是1,否则就为0

|:有一个为1结果就是1,其他时候为0

^:相同为0,不相同为1

public static void main(String[] args) {
    /*A=0011 1100;
      B=0000 1101;

    A&B=0000 1100
    A|B=0011 1101;
    A^B(异或)=0011 0001;
    
    ~B(取反)=1111 0010
    */
}
面试题:

2*8怎么运算最快

答:int a=2<<3

>>左移 /2
<<右移 *2

扩展赋值运算符

不建议使用

public static void main(String[] args) {
    int a=10;
    int b=20;

    a+=b;//a=a+b;
    a-=b;//a=a-b;
    System.out.println(a);
}

扩展:

字符串连接符:+

在加号的两侧只要出现了String类型,他就会其他都转换成String再进行连接

  • 如果String是在前面,后面的会拼接,
  • 如果String在后面,前面的就不会进行拼接,该干嘛干嘛
面试题

System.out.println(a+b+"");和System.out.println(""+a+b);有什么区别?

public static void main(String[] args) {
        int a=10;
        int b=20;
        a+=b;//a=a+b;
        a-=b;//a=a-b;
        System.out.println(a);
        System.out.println("=====");
        System.out.println(a+b);
        System.out.println(""+a+b);//1020
        System.out.println(a+b+"");//30
        //1.在加号的两侧只要出现了String类型,他就会其他都转换成String再进行连接
        //2.如果String是在前面,后面的会拼接,
        //  如果String在后面,前面的就不会进行拼接,该干嘛干嘛
 }

三元运算符

  • 三元运算符格式:
   int    i     =   (1==2 ?   100 : 200);
数据类型  变量名   =  布尔表达式? true: flase

三元运算符计算方式:

  1. 布尔类型表达式结果是true,三元运算符整体结果为结果1,赋值给变量。
  2. 布尔类型表达式结果是false,三元运算符整体结果为结果2,赋值给变量。
public static void main(String[] args) { 
    int i = (1==2 ? 100 : 200); 
    System.out.println(i);//200 
    int j = (3<=4 ? 500 : 600); 
      //条件判断语句? true:flase
    System.out.println(j);//500 
}
posted @ 2020-05-21 20:13  DL50  阅读(262)  评论(0编辑  收藏  举报