运算符
(接下来的文章都是根据b站up主 狂神说视频整理)后面就不写这个了;
++a, a++
public static void main(String[] args) {
// ++ -- 自增,自减 一元运算符
int a = 3;
int b = a++; //可以理解为 先把a赋值给b 然后 a 在自增1
System.out.println(a); //结果为 4
System.out.println(b); //结果为 3
}
下面这个结果貌似不是先赋值后加, 暂时没搞懂(大家可以帮我看看)
public static void main(String[] args) {
// ++ -- 自增,自减 一元运算符
int a = 3;
a = a++;
System.out.println(a); //结果为 3
}
幂运算
//幂运算 2^3 2*2*2=8 很多运算,会用到工具类操作!
double pow = Math.pow(2,3);
System.out.println(pow); //运算结果:8.0
逻辑运算 与 (and)或 (or)非(取反)
public static void main(String[] args) {
// 与(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a&&b" + (a&&b)); //逻辑与运算,两个变量都为真,结果才为true;
System.out.println("a||b"+(a||b)); //逻辑与运算,有一个变量都为真,结果才为true;
System.out.println("!(a&&b)" + !(a&&b)); //如果是真,则变为假,如果是假则变为真; (a&&b)的结果为false 然后!取反就是true;
//短路运算
int c = 4 ;
boolean d = (c < 4)&&(c++ < 4);
System.out.println("d:" + d);
System.out.println("c:" + c);
}
*位运算(面试有时会问)
public static void main(String[] args) {
/*
a = 0011 1100;
b = 0000 1101;
a&b = 0000 1100; // 与 都为1则为1 否则都是0;
a|b = 0011 1101; // 或 都为0则为0 否则为1;
a^b = 0011 0001; // 异或 不相同则为1 否则为0;
~b = 1111 0010 //非 取反
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); // 2左移三位 看上面的2的二进制(0000 0010 2)
// 向左边移动三位就是(0001 0000 16) 值就是16
}
扩展赋值运算符 及 字符串拼接
public static void main(String[] args) {
int a = 2;
int b = 3;
a += b; //a = a + b
a -= b; //a = a - b
System.out.println(a);
//字符串拼接 + ,String
System.out.println(""+a+b); //输出为23; 因为当最前面有String类型时候 后面的变量会自动转化为字符串类型 并进行拼接;
System.out.println(a+b+""); //输出为5; 只有最前面有字符串类型时候才会转换并拼接,在后面不影响;
}
三元运算符
public static void main(String[] args) {
int a = 2;
int b = 3;
a += b; //a = a + b
a -= b; //a = a - b
System.out.println(a);
//字符串拼接 + ,String
System.out.println(""+a+b); //输出为23; 因为当最前面有String类型时候 后面的变量会自动转化为字符串类型 并进行拼接;
System.out.println(a+b+""); //输出为5; 只有最前面有字符串类型时候才会转换并拼接,在后面不影响;
}