java学习day02_运算符
Java语言支持如下运算符:
-
算数运算符: + , - , * , / , % , ++ , - - ;
-
赋值运算符: = ;
-
关系运算符: > , < , >= , <= , == , != , instanceof ;
-
逻辑运算符: && , || , ! ;
-
位运算符: & , | , ^ , ~ , >> , << , >>> ( 了解! ! ! ) ;
-
条件运算符(三目运算符或三元运算符): 条件? 语句一 : 语句二(条件为true执行语句一,反之执行语句二)
-
扩展赋值运算符: += , -= , *= , /= ;
package Operator; public class Demo01 { public static void main(String[] args) { //二元运算符 int a = 10; int b = 20; int c = 30; int d = 40; System.out.println(a+b);//30 System.out.println(a-b);//-10 System.out.println(a*b);//200 System.out.println(a/b);//0 //注:在Java中a/b表示整除,所以在结果可能会产生小数的时候一定要转换为 //double类型 //以下两种方式都可以实现: System.out.println(1.0*a/b);//0.5 System.out.println((double)a/b);//0.5 } }
package Operator; public class Demo02 { public static void main(String[] args) { long a = 12312313213213213L; int b = 123; short c = 10; byte d = 8; System.out.println(a+b+c+d);//12312313213213354,long System.out.println(b+c+d);//141,int System.out.println(c+d);//18,int } }
package Operator; public class Demo03 { public static void main(String[] args) { //关系运算符返回的结果: true或者false int a = 10; int b = 20; System.out.println(a > b);//false System.out.println(a < b);//true System.out.println(a == b);//false System.out.println(a != b);//true int c = 21; System.out.println(c % a);//1 //c%a表示:c除以a的余数(模运算) } }
package Operator; public class Demo04 { public static void main(String[] args) { //++(自增) --(自减) 一元运算符 int a = 3; int b = a++;//a++:先赋值给b,在进行++运算 //a = a + 1; 注:int b = a++;相当于后面隐藏了一行 a = a + 1; System.out.println(b);//结果为:3 System.out.println(a);//结果为:4 System.out.println("============="); //a = a + 1; int c = ++a;//++a先进行++运算再赋值 //注:int c = ++a;相当于在前面一行隐藏了一行 a = a + 1; System.out.println(c);//结果为:5 System.out.println(a);//结果为:5 System.out.println("============="); } }
result:
package Operator;
public class Demo05 {
public static void main(String[] args) {
//幂运算:2^3 2*2*2
double result1 = Math.pow(2,3);
double result2 = Math.pow(3,2);
System.out.println(result1);//8.0
System.out.println(result2);//9.0
//在Java中很多特殊的运算会用到常用工具类:Math
}
}
package Operator;
//逻辑运算符
public class Demo06 {
public static void main(String[] args) {
//与(and):&&(短路与),&(非短路与):两个都为真结果才为真
// 或(or):||(短路或),|(非短路或):其中一个为真结果就为真
// 非(取反):!true = false, !false = true
/*
注:短路的意思就是:
以&&(短路与为例):a&&b->当a为false时结果一定为false,此时程序不会
继续向下执行
*/
boolean a = true;
boolean b = false;
System.out.println("a && b:"+(a&&b));//false
System.out.println("a || b:"+(a||b));//true
System.out.println("!(a && b):"+!(a&&b));//true
//短路运算
int c = 5;
boolean d = (c < 4)||(c++ < 4);
/*
注意:c++ < 4相当于:
c < 4;
c = c + 1;
这样两行代码
*/
System.out.println(d);//false
System.out.println(c);//5
}
}
package Operator;
//位运算
public class Demo07 {
public static void main(String[] args) {
/*
A = 0011 1100
B = 0000 1101
==================================================
A&B = 0000 1100;//运算规则:1&1 = 1,1&0 = 0,0&0 = 0;
A|B = 0011 1101;//运算规则:1|0 = 1,1&1 = 1,0|0 = 0;
A^B(异或) = 0011 0001;//运算规则:相同为0.不相同为1
~B(按位取反) = 1111 0010//1->0 0->1
面试题:2*8怎么运算最快?
2*8 = 2*2*2*2;
<< 左移 左边的数字删除,末尾补充若干个0
>> 右移 右边的数字删除,开头部分补充若干个0
位运算是与底层打交道,运算效率极高
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);
}
}
package Operator;
//三元运算符
public class Demo09 {
public static void main(String[] args) {
//x? y:z
//如果x为true,则结果为y否则结果为z
int score = 80;
String str = score < 60? "不及格":"及格";//必须掌握
System.out.println(str);//及格
}
}