关于java所有运算符的详细说明

关于java运算符的详细说明

java中有很多运算符号,称之为运算符(operator),这篇文章主要针对运算符进行说明内容会稍微多一些,可以反复看一下。

一、算术运算符

  • 加+

  • 减-

  • 乘*

  • 除/

  • 取余%

1、如上所示,前5个是基本的算术符号,分别为加、减、乘、除、取余。

PS:本人用的开发环境工具是Idea,这里面有一个快捷键用法,Ctrl键+D,复制当前行到下一行(光标点在要复制的代码行上),这样写重复的代码时候可以不用再手写一遍,可以提升工作效率,如果是初学者的话还是建议取多写一写加深印象

public class Demo{
    public static void main(String[] args){//这行代码在Idea中直接输入psvm,然后回车可以直接生成
        //二元运算符
        int a=10;
        int b=20;
        int c=30;
        int d=40;
        
        //这行代码输入sout按回车可以直接生成
        System.out.println(a+b);//输出的值为30
        System.out.println(a-b);//输出的值为-10
        System.out.println(c*d);//输出的值为1200
        System.out.println(a/b);//输出的值是0
        
    }
}

上述代码中,我们可以看到正常的运算都没有问题,但是到除法那里,正常是0.5,但是这里面运算后,是0,是因为0.5是double类型的,变量c和d都是int类型的,这时候,就可以运用我上一篇文章讲述的类型转换。

关于java的类型转换

public class Demo{
    public static void main(String[] args){
        
        int a=10;
        int b=20;
  
        System.out.println(a/b);//输出的值是0
        
        System.out.println(a/(double)b);//因为从低到高,要强制转换,所以这回输出的值是0.5
        
    }
}

2、拓展一下刚刚说过的算术运算符。

public class Demo{
    public static void main(String[] args){
        
        long a=123123123123L;
        int b=123;
        short c=10;
        byte d=8;
        
        System.out.println(a+b+c+d);//输出结果为123123123264  类型为long
        System.out.println(b+c+d);//输出结果为141  类型为int整型
        System.out.println(c+d);//输出结果为18  类型为int
                
    }
}

上述就可以说明,运算的类型中,包括long的,输出的结果一定是long类型,其他都为int类型,浮点数同理。

3、下面隆重介绍(++、- -)!!这两个符号也属于算术运算符,可能初次接触有些许的难理解,需要反复的去思考一下

  • ++ 自增
  • – 自减(两个减号)
public class Demo{
    public static void main(String[] args){
        //一元运算符
        int a=3;
        int b=a++;
        int c=++a;
        
        System.out.println(a);//输出的值为5
        System.out.println(b);//输出的值为3
        System.out.println(c);//输出的值为5
                
    }
}

我们通过上述的代码中,可以看到,输出的a,并不是开始的a值,b的值为什么比a值小,c的值为什么和a值一样?

这是因为

  • ++在后边的话,是先赋值,再自增加1。(=等号是赋值符,下面会说到)
  • – 在前面的话,是先自增1,再赋值。
  • 我们把程序中隐藏的部分,通过注释写出来,让大家更好的理解。
public class Demo{
    public static void main(String[] args){
        int a=3;
        int b=a++;
        //因为++在后,=在前,所以先赋值,后自增,所以b是3
        //a=a+1; 所以到这里,a目前的值是4
        int c=++a;
        //因为++在前,=在后,所以先自增,再赋值
        //a=a+1; 所以在这里,a目前的值是5,把值赋给c,所以c是5
        
        System.out.println(a);//输出的值为5
        System.out.println(b);//输出的值为3
        System.out.println(c);//输出的值为5
        
    }
}

– 自减也是同理

public class Demo{
    public static void main(String[] args){
        int a=3;
        int b=a--;
        //因为--在后,=在前,所以先赋值,后自减,所以b是3
        //a=a-1; 所以到这里,a目前的值是2
        int c=--a;
        //因为--在前,=在后,所以先自减,再赋值
        //a=a-1; 所以在这里,a目前的值是1,把值赋给c,所以c是1
        
        System.out.println(a);//输出的值为1
        System.out.println(b);//输出的值为3
        System.out.println(c);//输出的值为1
        
    }
}

3、幂运算

正常在我们学过的数学里面,假如想计算2的3次方,在数学中为2^3

在程序中可以写为2 * 2 * 2 但是这种写法只是用幂数少的情况,并且很low,这个时候,可以用java中封装好的数据工具类,有点类似生活中的科学计算器。这个类就是Math类

public class Demo{
    public static void main(String[] args){
        
        double b=Math.pow(2,3);
        
        System.out.println(b);//输出的值为8.0
    }
}

Math类里面有很多计算方法,应用的时候,在类后边打一个点(.)就会列出这个类中的所有方法,上述的pow就是计算幂用的,为什么用double,是因为,这个方法中声明的变量是double类型的,所以要用double去接。

二、赋值运算符

  • =

这个我们上面有说到过,等于号,不是相等的意思,是将值赋给变量,比如

int a=10;//意思是把10赋值给a

三、关系运算符

  • 大于 >

  • 小于 <

  • 大于等于 >=

  • 小于等于 <=

  • 等于 ==

  • 不等于 !=

  • instance of (面向对象,后续说到面向对象的时候再进行说明)

关系运算符一般多用于判断(if esle)。

关系运算符返回的结果是布尔值,true和false。

public class Demo{
    public static void main(String[] args){
        
        int a=10;
        int b=20;
        int c=30;
        
        System.out.println(a>b);//输出的值为false
        System.out.println(a<b);//输出的值为true
        System.out.println(a==b);//输出的值为false
        System.out.println(a!=b);//输出的值为true
    }
}

四、逻辑运算符

  • 与 &&
  • 或 ||
  • 非 !

与或非大家应该并不陌生,与(and)或(or)非(!)。

1、逻辑与运算,两个结果都为真,结果为真。

2、逻辑与运算,两个结果其中一个为真,结果为真。

3、逻辑非运算,结果如果是真,则是假,结果如果是假,则是真。

public class Demo{
    public static void main(String[] args){
        
        boolean a=true;//真
        boolean b=false;//假
        
        System.out.println(a&&b);//输出的值为false,一个假,则为假
       
        System.out.println(a||b);//输出的值为true,一个真,则为真
        
        System.out.println(!(a&&b));//输出的值为true,结果是假,则为真
    }
}
  • 拓展:短路运算

短路算法就是,如果第一个条件是错的,就不继续向下执行了,所以叫做短路运算。

public class Demo{
    public static void main(String[] args){
        
        int c=5;
        boolean d=(c<4)&&(c++<10)
        
        System.out.println(d);//输出的值为fasle
       
        System.out.println(c);//输出的值为5,因为第一个条件已经是错误的了,所以不往下执行自增了。

    }
}

五、位运算符

  • 与 &
  • 或 |
  • 异或 ^
  • 取反 ~
  • 右移 >>
  • 左移 <<

位运算符是基于二进制运算的,0和1。

public class Demo{
    public static void main(String[] args){
       /*
       A = 0011 1100
       B = 0000 1101
       --------------
       A&B = 0000 1100 两个位数都为1的时候,结果取1,其他为0
       
       A|B = 0011 1101 两个位数其中有一个是1,结果就是1,其他为0
       
       A^B = 0011 0001 两个位数相同则为0,否则就为1
       
       ~B  = 1111 0010 取B的反向结果
       
       */

    }
}

有时候面试的时候会出一道题,2*8=16,怎么运算最快?用位运算效率极高!!

public class Demo{
    public static void main(String[] args){
		/*
		2 * 8 = 16
		2 * 2 * 2 * 2=16
		
		<<  *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
        
        System.out.println(2<<3); //二进制的1向左移动两位
		
		*/

    }
}

六、扩展运算符

  • +=
  • -=
  • *=
  • /=

扩展运算符又名==“偷懒运算符"==

public class Demo{
    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);//输出的结果为30
    }
}
  • 字符串连接符

只要连接中有String类型,如果字符串在前面,会把其他的值转为String类型,如果在后边,会先进行其他的运算。

public class Demo{
    public static void main(String[] args){
		int a=10;
        int b=20;
        
        System.out.println(a+b);//输出的结果为30
        System.out.println(""+a+b);//输出的结果为1020
        System.out.println(a+b+"");//输出的结果为30   
    }
}

七、条件运算符

  • : (英文冒号)

条件运算符也是一个“偷懒运算符”正常流程控制的时候用if else这种方式会让代码更加精简。

public class Demo{
    public static void main(String[] args){
    	//三元运算符
		//x?y:z
        //如果x==true,则结果为y,否则结果为z
        int source=100;
        String type = source > 120 ? "及格":"不及格";
        System.out.println(type);//输出的结果为不及格
    }
}

以上就是java中的运算符了,运算符中可以多去使用括号,括号的优先级高,会先计算括号内部的!欢迎大家点赞收藏,可以用来反复观看,哪里有不足的可以进行指出评论

你可能感兴趣的:(java,开发语言)