Java中的运算符

一、Java中运算符表

  • 算术运算符:+,-,*,l, %,++,–
  • 赋值运算符=
  • 关系运算符:>,<,>=,<=,==,!= , instanceof
  • 逻辑运算符: &&,||,!
  • 位运算符: &,|,^,~,>>,<<, >>>(了解!! ! )
  • 条件运算符?∶
  • 扩展赋值运算符:+=,-=,*=,/=

二、Java中运算符实例

  • 算术运算符
//二元运算符
//ctrl + D:复制当前行到下一行
int a = 10;
int b = 20;
int c = 25;
int d = 25;
System.out.println(a+b);   //30
System.out.println(a-b);    //-10
System.out.println(a*b);    //200
System.out.println(a/b);    //0  因为a、b均是int 型数据,相除之后,结果0.5,自动舍去
System.out.println(a/(double)b);  //  0.5

System.out.println("====================");
long a1 = 123123123123123L;
int b1 = 123;
short c1 = 10;
byte d1 = 8;
System.out.println( a1+b1+c1+d1); //Long   有long为 long类型
System.out.println(b1+c1+d1); //Int        有int为 int
System.out.println(c1+d1); //Int          无int 为int 类型

System.out.println("=================================");

//取余  模运算
System.out.println(a2%b2);  //  a/b 余数为结果  10
System.out.println(c2%a2);  //  c2/a2  余数为结果  1

System.out.println("=================================");
// ++ --自增,自减     只有一个数值参与运算,因此被称为一元运算符
int x = 3;
int y = x++;    //先把x的值,赋给了y, 然后自增到 4 ,因此 y 为 3 、 x 为 4
System.out.println("执行完x++  后,x 的值  " + x );

int z = ++x;    //先自增到5 ,然后把值 赋给 z ,因此,z 为 5 、 x 为 5
System.out.println(x);
System.out.println(y);
System.out.println(z);

System.out.println(x++ + ++z);  // 11
System.out.println(x + ++z);    //11
System.out.println(x++ + z);    //10
  • 关系运算符
//关系运算符返回的结果:正确,错误布尔值
// if
int a2 = 10;
int b2 = 20;
int c2 = 21;
System.out.println(a2>b2);   //false
System.out.println(a2<b2);    //true
System.out.println(a2==b2);   //false
System.out.println(a2!=b2);    //true
  • 幂运算
//幂运算  2^3      很多运算,我们会使用一些工具类来操作
double m1 = Math.pow(3,3);  // 27.0  3的三次方
System.out.println(m1);
int m2 = 3^3;  //   结果为 0 ,因为这里是疑惑运算
System.out.println(m2);

System.out.println(m1 == m2);
  • 逻辑运算符
/**
 * 逻辑运算
 *  与(and)  或(or)   非(取反)
 */

boolean a = true;
boolean b = false;

System.out.println("a && b: "+(a&&b));  //逻辑与运算:两个变量都为真,结果才为true
System.out.println("a ll b: "+(a||b));  //逻辑或运算:两个变量有一个为真,则结果才为true&b));
System.out.println(" !(a && b) : "+ ! ( a&&b) );   //如果是真,则变为假,如果是假则变为真

//短路运算
int c = 5;
boolean d =( c<4)&&( c++<4);
System.out.println(d);  
//  false  由于 5 不小于 4 ,所以一假则假,并且直接判定为假,不再进行后面的运算
System.out.println(c);  
//  由于一假则假,直接判定为假,不再进行后面的运算,即C++ 没有执行,所以C仍为5
  • 位运算
/**
 * 位运算
 *
 *  A  = 0011 1100
 *  B  = 0000 1101
 * A&B = 0000 1100   // & 与运算 ,同真则真,两个 1 才得 1
 * A|B = 0011 1101   // | 或运算 ,一真则真,一个 1  就得 1
 * A^B = 0011 0001   // ^ 异或运算 ,同零异一,相同位置,两数相同则为 0,两数不同,则为 1
 * ~B = 1111 0010   // ~ 非运算 , 真假颠倒, 1 变 0 ,0 变 1
 */

/*
    怎样计算 2 * 8 = 16 最快
    2*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

    所以对于,位运算而言,就是左移三位,跟底层直接关联,运算效率很高
*/
System.out.println(2<<3);
  • 扩展赋值运算符
/**
 * 扩展赋值运算符
 */
int a = 10;int b = 20;
a+=b; //a = a+b
System.out.println(a);     //30

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

//字符串连接符  + String
System.out.println( ""+a+b ); 
// 1020 由于在字符串在前面拼接,所以变为拼接字符串,而不是加法

System.out.println(a+b+"");   
//  30 字符串拼接在后,故,为加法运算
  • 三元运算符
/**
 * 三元运算符
 */
//   x ? y : z
//   如果x==true,则结果为y,否则结果为z
int score = 50;
String type = score <60 ?"不及格":"及格";
// 不及格,五十小于六十,条件为真,执行前面的    必须掌握
// if
System.out.println(type);

三、Java中运算符的优先级

java 对象运算符 java运算符总结_java