运算符指明对操作数的运算方式。组成表达式的Java操作符有很多种。运算符按照其要求的操作数数目来分,可以有单目运算符双目运算符和三目运算符,它们分别对应于1个、2个、3个操作数。

  1. 赋值运算符 赋值运算符即“=”,是一个二元运算符(即对两个操作数进行处理),其功能是将右方操作数所含的值赋值给左方的操作数,语法如下所示:
    变量类型 变量名 = 所赋的值;
int  assignmentOperator = 10;//将10赋值给 变量assignmentOperator

其他赋值运算符:+=   -=   *=    /=   %=   &=   ^=  |=   <<=   >>=

  1. 算术运算符 Java中的算术运算符主要有+(加号)、-(减号)、*(乘号)、/(除号)和%(求余),它们都是二元运算符。
int  a = 2;
		int  b = 3;
		int c = a + b;
		System.out.println("+ (加号) 的运算结果是:"+c);
		
		c = a - b;
		System.out.println("- (减号) 的运算结果是:"+c);
		
		c = a * b;
		System.out.println("* (乘号) 的运算结果是:"+c);
		
		c = a / b;
		System.out.println("/ (除号) 的运算结果是:"+c);
		
		c = a % b;
		System.out.println("% (求余) 的运算结果是:"+c);

运算结果如下:

java 键盘上输入两个数 java输入两个数和运算符_System

  1. 自增和自减运算符 "++"   "--"
    自增、自减运算符是单目运算符,可以放在操作元之前,也可以放在操作元之后。
    操作元必须是一个整型或浮点型变量。
    放在操作元前面的自增、自减运算符,会先将变量的值加1(减1),然后再使该变量参与表达式的运算;
    放在操作元后面的自增、自减运算符,会先使变量参与表达式的运算,然后再将该变量加1(减1) 。
int  a = 10;
		int  b = a++;//此时将a的值赋给b的时候,a的值还是10
		int f = a;//此时将a的值赋给f的时候,a的值才自增为 11 
	
		a = 10;
		int  c = a--;//此时将a的值赋给c的时候,a的值还是10
		int g = a;//此时将a的值赋给g的时候,a的值才自减为 11 
		
		a = 10;
		int  d = ++a;//第一次赋值给d时,a就已经运算自增为11
		
		a = 10;
		int  e = --a;//第一次赋值给e时,a就已经运算自减为9
		
		System.out.println("b 运算结果是:"+b);
		System.out.println("c 运算结果是:"+c);
		System.out.println("d 运算结果是:"+d);
		System.out.println("e 运算结果是:"+e);
		System.out.println("===========");
		System.out.println("f 运算结果是:"+f);
		System.out.println("g 运算结果是:"+g);
		
	}
  1. 运算结果如下:
  2. 比较运算符
    ==(等于符号)
    !=(不等于符号)
    >(大于符号)
    <(小于符号)
    >= (大于等于符号)
    <=(小于等于符号) 比较运算符属于二元运算符,
    用于程序中的变量和变量之间、变量和常量之间以及其他类型的信息之间的比较。
    比较运算符的运算结果是boolean型,当运算符对应的关系成立时,运算结果是true,否则结果是false。
    比较运算符通常用在条件语句中来作为判断的依据。
  3. 逻辑运算符 逻辑运算符包括&&(逻辑与)、||(逻辑或)和!(逻辑非),返回值为布尔类型的表达式,操作元也必须是boolean型数据。
    和比较运算符相比,逻辑运算符可以表示更加复杂的条件,例如连接几个关系表达式进行判断。
    在逻辑运算符中,除了“!”是一元运算符之外,其余的都是二元运算符。
int a = 10;
		int b = 20;
		int c = 30;
		int d = 40;
		
		boolean logicalAND1 = a<b&&c<d;//逻辑与,两边操作元判断都为true时,返回true。
		boolean logicalAND2= a>b&&c<d;//有一边判断为false时,返回false。

		boolean logicalOR1 = a<b||c<d;//逻辑或,其中一边操作元判断都为true时,返回true。
		boolean logicalOR2 = a>b||c<d;//两边判断都为false时,返回false
		
		
		boolean logicalNegation = !true;//返回相反的判断值
		 
		System.out.println("logicalAND1返回值是:"+logicalAND1);
		System.out.println("logicalAND2返回值是:"+logicalAND2);
		System.out.println("logicalOR1返回值是:"+logicalOR1);
		System.out.println("logicalOR2返回值是:"+logicalOR2);
		System.out.println("l5返回值是:"+logicalNegation );
  1. 输出结果如下:
  2. 位运算符 与(&)、非(~)、或(|)、异或(^)
    &:双目运算符,运算时均把运算数转换为二进制再做比较,规则:当相同的位上均为1时结果为1,否则结 果为0.如:1010&1101,转为二进制:1111110010&10001001101,比较结果为:1000000转为十进制: 64。所以1010&1101=64;
    | :当两边操作数的位有一边为1时,结果为1,否则为0。如1100|1010=1110
    ~:0变1,1变0
    ^:两边的位不同时,结果为1,否则为0.如1100^1010=0110
    位运算符用于处理整型和字符型的操作数,对其内存进行操作,数据在内存中以二进制的形式表示。
    例如:int型变量7的二进制表示是00000000 00000000 00000000 00000111,
    -8的二进制表示是111111111 111111111 1111111 11111000,
    最高位是符号位,0表示正数,1表示负数。
    示例代码如下:
int a = 7;//int型变量7的二进制表示是00000000 00000000 00000000 00000111
int b = ~a; //进行非运算后,0变1,1变0。结果是:111111111 111111111 1111111 11111000。换算成十进制就是-8
System.out.println("~非运算的结果是:"+b);
		
int c = a^b;//两边的位不同时,结果为1,否则为0。 7和-8二进制数异或的结果为:111111111 111111111 1111111 11111111。换算成十进制则为:-1
System.out.println("^异或的运算结果是:"+c);
  1. 运行结果如下:
  2. 三元运算符 三元运算符是Java中唯一一个三目运算符,
    其操作元有三个,第一个是条件表达式,其余的是两个值,条件表达式成立时运算取第一个值,不成立时取第二个值,示例代码如下所示:
    boolean b = 20 < 45 ? true : false;

    这整个运算符包括一个比较运算符(可以是“>”"<""!="等等),一个“?”,一个“:”,冒号前后需要有两个表达式或者是值或者是对象。
int a = 10<20?666:888;// 由于10<20条件表达式成立,所以运算后a取第一个值666,如果不成立时取第二个值888
System.out.println("a的值为:"+a);
  1. 运行结果如下:

java 键盘上输入两个数 java输入两个数和运算符_java_02

  1. instanceof
    该运算符是双目运算符,
    左面的操作元是一个对象,右面是一个类或接口。当左面的对象是右面的类(或右边类的子孙类)创建的对象、或者是右边接口的实现类(或实现类的子孙类)的对象时,该运算符运算结果是true,否则是false。
OperatorDemo od = new OperatorDemo();
   if(od instanceof OperatorDemo){
   System.out.println("od是属于OperatorDemo类的对象");
	}
  1. 输出结果结果如下:
od是属于OperatorDemo类的对象
  1. 位移运算符
    << 带符号左移 >>带符号右移 >>> 无符号右移
    JAVA左移:<<
    带符号右移:>>
    无符号右移:>>>
    位移运算符只对int值进行操作,如果不是int,编译器会报错。在Java中,一个int的长度始终是32bit,也就是4个字节
int m=-7;
System.out.println("m的二 进 制码是:"+Integer.toBinaryString(m));
System.out.println("m>>2的二进制码是:"+Integer.toBinaryString(m>>2));//右移>>2位在进行正整数运算时,和/2的2次方  效果一样。右移>>1位和/2的1次方  效果一样
System.out.println("(m>>2)="+(m>>2));
System.out.println("m<<2的二进制码是:"+Integer.toBinaryString(m<<2));//左移<<2位和*2的2次方  效果一样。右移<<1位和*2的1次方  效果一样但比算术运算符,位移运算效率更高
System.out.println("(m<<2)=:"+(m<<2));
System.out.println("m>>>24的二进制码是:"+Integer.toBinaryString(m>>>24));
System.out.println(" m>>>24 :"+ (m>>>24));
  1. 运算结果如下:
m的二 进 制码是:11111111111111111111111111111001
m>>2的二进制码是:11111111111111111111111111111110
(m>>2)=-2
m<<2的二进制码是:11111111111111111111111111100100
(m<<2)=:-28
m>>>24的二进制码是:11111111
 m>>>24 :255
  1. 运算符优先级


    优先级从高到低排列如下:
    [ ] ( ) ++ -- ! ~ instanceof * / % + - << >> >>> <> < = > \ == != &^& & ||   ? :=   =
    没有必要去记忆运算符号的优先级别,在编写程序时可尽量的使用括号来实现你想要的运算次序