package operator;
public class Demo01 {
public static void main(String[] ages){
//二元运算符
//Ctrl+D 复制当前行到下一行
int a=10;
int b=20;
int c=30;
int d=30;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/(double)b); //有一个double类型,则输出double类型
}
}
package operator;
public class Demo02 {
public static void main(String[] args) {
long a = 121221212333455L;
int b = 123;
short c = 12;
byte d = 2;
double e = 10.55;
System.out.println(a+b+c+d); //Long
System.out.println(b+c+d); //int
System.out.println(c+d); //int
System.out.println(c+e); //double
}
}
package operator;
public class Demo03 {
public static void main(String[] args) {
//关系运算符反回的结果:正确,错误 布尔值
int a = 10;
int b = 20;
int c = 21;
System.out.println(a>b); //输出 false
System.out.println(a<b); //输出 true
System.out.println(a==b); //等于 false
System.out.println(a!=b); //不等于 true
//取余,模运算
System.out.println(c%a); // c / a 21 / 10 = 1 ... 1 输出余数 1
}
}
package operator;
public class Demo04 {
public static void main(String[] args) {
//++ -- 自增,自减 一元运算符
int a = 3;
int b = a++; //执行完这行代码后,先给b赋值,再自增
//a = a + 1;
System.out.println(b);
System.out.println(a);
//a = a + 1;
int c = ++a; //执行完这行代码前,先自增,再给c赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
/*
//++ -- 自增,自减 一元运算符
int a = 3;
int b = a--; //执行完这行代码后,先给b赋值,再自减
//a = a - 1;
System.out.println(b);
System.out.println(a);
//a = a - 1;
int c = --a; //执行完这行代码前,先自减,再给c赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
*/
//幂运算 2^3 2*2*2 = 8 很多运算,我们会使用一些工具类来操作!
double pow = Math.pow(2, 3);
System.out.println(pow);
}
}
package operator;
//逻辑运算符
public class Demo05 {
public static void main(String[] args) {
// 与(and) 或(or) 非(取反)
// && || !
boolean a = false;
boolean b = true;
System.out.println("a && b: "+(a&&b)); //逻辑与运算:两个变量都为真,结果才为true
System.out.println("a || b: "+(a||b)); //逻辑或运算:两个变量有一个为真,则结果才为true
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 operator;
public class Demo06 {
public static void main(String[] args) {
/*
A = 0011 1100
B = 0000 1101
-------------------
位运算:
A与B A&B = 1100 1100 相同位 如果都是 1,结果为 1,否则为 0
A或B A|B = 0011 1101 相同位 如果有 1 ,结果为 1,否则为 0
异或 A^B = 0011 0001 相同位 如果相同,结果为 0,否则为 1
取反 ~B = 1111 0010 相同位 如果是 0,则为 1; 如果是 1,则为 0
2*8怎么算最快?
2*8 = 16 2*2*2*2
位运算 好处 : 效率极高!!!!!
<< (左移) 相当于把数字 *2
>> (右移) 相当于把数字 /2
移位 2进制 遇 2 进 1
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 0101 5
0000 0110 6
0000 0111 7
0000 1000 8
...
0001 0000 16
* */
System.out.println(2<<3); //2*2*2*2 向左移几位就乘以几个2
System.out.println(16>>3); //16/2/2/2 向右移几位就除以几个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
System.out.println(a); // 10
//字符串链接符 + 运算符两侧,只要 + 前方出现了 String(字符串)类型,
// 就会把 + 后面所有操作组都转换成 String 再进行连接
System.out.println(a+b); // 30
System.out.println(""+a+b); // 1020
System.out.println(a+b+""); // 30
System.out.println(a+b+""+b); // 3020
}
}
package operator;
//三元运算符
public class Demo08 {
public static void main(String[] args) {
// x ? y : z
//如果 x==true,则结果为 y ,否则结果为 z
int score = 50;
String type = score < 60 ? "不及格" : "及格"; //必须掌握
// if
System.out.println(type);
}
}