Day12
自增自减运算符
int b = a++; //先给b赋值,再自增
int c = ++a; //先自增,再给b赋值
package operater;
public class Demo04 {
public static void main(String[] args) {
//++ -- 自增,自减 一元运算符 只有一个未知数
int a = 3;
int b = a++;
int c = ++a;
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
初识Math类
//幂运算2^3 2*2*2 =8 很多运算,我们会使用一些工具类来操作
double pow = Math.pow(2, 3);
System.out.println(pow);
逻辑运算符
短路运算:对于与运算如果前面一个变量是假,那后面的变量就不会进行判断是真是假
package operater;
public class Demo05 {
public static void main(String[] args) {
//与(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a && b:"+(a&&b));
//逻辑与运算:两个变量都为真,结果才为ture
System.out.println("a || b:"+(a||b));
//逻辑或运算:两个变量有一个为真,则结果才为ture
System.out.println("!(a && b):"+!(a&&b));
//如果是真,则为假,如果为假,则变为真
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d);
System.out.println(c);
}
}
位运算符
package operater;
public class Demo06 {
public static void main(String[] args) {
/*
A = 0011 1100
B = 0000 1101
--------------------------------------------------------
A&B 对应位置的数进行比较,如果这两个数都为1,结果才为1,否则就是0
A&B = 0000 1100
A|B 如果对应位置的数都是0,结果就是0,否则就直接为1
A|B = 0011 1101
A^B 如果这两个位置的数都相同就为0,否则就位1
A^B = 0011 0001
~B 和B完全相反
~B = 1111 0010
*/
}
}
面试题:
2*8 怎么算最快
效率极高的方法
<< *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);
输出
扩展赋值运算符
package operater;
public class Demo07 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a+=b; //a=a+b
a-=b; //a=a-b
System.out.println(a);
}
}
package operater;
public class Demo07 {
public static void main(String[] args) {
//面试题
//字符串连接符 + ,String
System.out.println(""+a+b);
//如果字符串在前面,那么就凭借,如果字符串在后面,前面就会依旧进行运算
System.out.println(a+b+"");
}
}
三元运算符
package operater;
public class Demo08 {
public static void main(String[] args) {
//x ? y : z
//如果x==true,则结果为y,否则结果为z
int score=80;
String type = score <60?"不及格":"及格"; //必须掌握
System.out.println(type);
}
}