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中运算符的优先级