Day08运算符
2022-04-10 16:22 rebirthhhh 阅读(4) 评论(0) 编辑 收藏 举报运算符
算数运算符:+,-,*,/,++,--
赋值运算符=
关系运算符:>, <, >=, <= ,==, !=instanceof
这三种必须掌握。
package operator;
public class Demo01 {
public static void main(String[] args) {
//ctrl + D :复制当前行到下一行
int a =10;
int b =20;
int c =25;
int d =25;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/b);//输出了0,本来得0,5,自动取成了0,所以我们要转换为double
System.out.println((double) a/b);//输出0.5,正确
}
}
package operator;
public class Demo02 {
public static void main(String[] args) {
long a = 123123123123123L;
int b = 123;
short c = 10;
byte d = 8;
System.out.println(a + b + c + d); //long
System.out.println(b + c + d); //int
System.out.println(c + d); //int
//计算时,有一个为long,结果为long(double也是)
//没有long时,结果都为int(无论你有没有int)
}
}
package operator;
public class Demo03 {
public static void main(String[] args) {
//关系运算符返回的结果:正确,错误 布尔值
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);// c / a 21/10=2 ... 1
//输出1 余数为1 (模运算)
}
}
package operator;
public class Demo04 {
public static void main(String[] args) {
//++ -- 自增 自减 (一元运算符)
int a = 3;
int b = a++;//a++ a = a + 1 执行完这行代码后,先给b赋值,再自增
//a = a + 1
System.out.println(a);//4
//a = a + 1
int c = ++a;//++a a = a + 1 执行完这行代码前,先自增,再给c赋值
System.out.println(a);//5
System.out.println(b);//3
System.out.println(c);//5
//幂运算2^3 2*2*2 = 8 java中没有^
double pow = Math.pow(2,3);//2的3次方
System.out.println(pow);
//很多运算,我们会使用一些工具类来操作
}
}
逻辑运算符:&&,||,!
位运算符:&,|,^, <<, >>, >>>
条件运算符?:
拓展赋值运算符:+=, -=, *=, /=
package operator;
//逻辑运算符
public class Demo05 {
public static void main(String[] args) {
//与(and) 或(or) 非(取反)
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);//false 前面是错的 后面的就不会执行了
System.out.println(d);
System.out.println(c);//输出的5不是6 c++没有执行
}
}
package operator;
//位运算
public class Demo06 {
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 两个相同则为0 其他则为1 异或
~A = 1100 0011 取反
~B = 1111 0010
2*8 = 16 2*2*2*2 2*8怎么运算最快 (面试题)
<< >> 左移 右移
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16 逢2进1 翻一倍 1向左移一位
所以! << *2 >> /2
这些经常用来和二进制打交道的 效率极高
*/
System.out.println(2<<3); //16 2乘3个2
}
}
package operator;
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
//字符串链接符 + ,String
System.out.println(a+b);
System.out.println(""+a+b);//1020
System.out.println(a+b+"");//30
//面试题 这两个有什么区别
//如果字符串""在前面 则会拼接 字符串""在后面,前面的a+b依旧进行运算
}
}
package operator;
//三元运算符 虽然是偷懒的 但必须掌握 以后会很常见。更加精简和便于理解
public class Demo08 {
public static void main(String[] args) {
// x ? y :z
//如果x==true,则结果为y 否则结果为z。
int score = 80;
String type = score <60 ? "不及格":"及格";
//小于60则及格 否则及格
System.out.println(type);
}
}
优先级()