java07_java运算符:
java运算符:
1,基本运算符:加减乘除自加自减,+-*/,++,--
public class Day1 {
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
System.out.println(a/(double)b);//0.5
System.out.println("**************");
int num1 = 1;
int num2 = num1++;
int num3 = ++num1;
System.out.println(num1);//3
System.out.println(num2);
//1 ++在变量num1的后面,先执行num2 = num1 ,然后再执行num1 = num1+1,num2 = 1,num1 = 2;
System.out.println(num3);
//3 ++在变量num1的前面,先执行num1 = num1+1,num1 = 3 ,然后再执行num3 = num1 = 3;
System.out.println("**************");
int num4 = 3;
int num5 = num4--;
int num6 = --num4;
System.out.println(num4);//1
System.out.println(num5);//3
System.out.println(num6);//1
System.out.println("**************");
//数学工具类
System.out.println(Math.pow(2,3)); // 返回的数字为double类型。
}
}
2,逻辑运算符:与或非 ,&&, ||, !
public class Day3 {
public static void main(String[] args) {
//与(and),或(or),非(取反)
//&&, ||, !
boolean a = true;
boolean b = false;
System.out.println(a&&b);//false
System.out.println(a||b);//true
System.out.println(!(a&&b));//true
System.out.println("#########");
//短路运算
int c = 5;
System.out.println((c>10)&&(c++<4));//false
System.out.println(c );//5
// 这里就是一个短路运算,
// 在&&与运算里面,在确定第一个条件为假的时候,忽略第二个条件,直接得出false结果,
// 后面的运算不予执行,因此c++被忽略,c依然是5。
System.out.println("#########");
}
}
3,位运算
public class Day4 {
public static void main(String[] args) {
//位运算
int A = 0b00111100;//60
int B = 0b00001101;//13
System.out.println(A&B);
//A = 0b00111100
//B = 0b00001101 ,& 指的是二进制位上,当两个数都为1的时候,结果在这一位上才取1.
//A&B = 0b00001100 , 12
System.out.println(A|B);
//A = 0b00111100
//B = 0b00001101 ,| 指的是二进制位上,当两个数有一个为1的时候,结果在这一位上就取1.
//A&B = 0b00111101 ,61
System.out.println(A^B);
//A = 0b00111100
//B = 0b00001101 ,^ 指的是二进制位上,当两个数相同的时候,结果取0,当两个数结果不相同的时候,结果取1.
//A&B = 0b00110001 ,49
System.out.println(~B);
//B = 0b00001101 ,~ 指的是二进制位上, 对后面的数取反。
//A&B = 0b11110010 ,-14
//对2*8进行快速运算 (<<,>>)左移,右移。
System.out.println(2<<3);//16
//0b0000 0010 左移三位,得到0b0001 0000.
System.out.println(2>>1);//1
//0b0000 0010 右移一位,得到0b0000 0001.
//位运算是与底层二进制打交道的,速度快,效率高。
}
}
4,扩展赋值运算符,+=,-=,*=,/=
public class Day5 {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println(a+=b);
// a+=b;
// a = a+b;
System.out.println(a-=b);
// a-=b;
// a = a-b;
System.out.println("************");
//字符串连接符 +
System.out.println(a+b); //30
System.out.println(""+a+b); //1020,加法里出现字符串的时候,同化后面各项。
System.out.println( a+b+""+a+b); //301020,字符串+前面的还是正常运算,字符串+后面的被同化为字符串。
System.out.println((a+b)+"*"+(a+b)); //30*30,()可以提高运算的优先级。
}
}
5,条件运算符:三元运算符 ?:
public class Day6 {
public static void main(String[] args) {
int score = 80;
String type = score <60 ?"不及格":"及格";
//x?y:z
//如果x为true,结果为y,否则为z。
System.out.println(type);
}
}
重点:
- 搞清楚++,--因位置的前后导致的计算顺序的不同。
- 了解Math工具类的一些功能。
- 理解短路运算。
- 适当的使用位运算,可以提高效率。
- 当输出结果里面进行加法运算,并且存在字符串的时候,分清规律。