package operator;
public class Demo01 {
public static void main(String[] args) {
//二元运算符
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,a/b=0.5,因为是int所以取0了
System.out.println(a/(double)b);//输出0.5
}
}
package operator;
public class Demo02 {
public static void main(String[] args) {
long a = 123123123123L;
int b = 123;
short c = 10;
byte d = 8;
System.out.println(a+b+c+d);//Long,有long结果为long
System.out.println(b+c+d);//Int
System.out.println(c+d);//Int 18
System.out.println((double)c+d);//18.0 有double结果为double
//System.out.printf((String) (c+d)); 报错
}
}
package operator;
public class Demo03 {
public static void main(String[] args) {
//关系运算符返回的结果:正确,错误 布尔值
//if
int a = 10;
int b = 20;
int c = 21;
//取余,模运算
System.out.println(c%a);//1 c/a的余数 21/10=2...1
System.out.println(a>b);//false
System.out.println(a<b);//true
System.out.println(a==b);//false
System.out.println(a!=b);//true
}
}
package operator;
public class Demo04 {
public static void main(String[] args) {
//++ -- 自增,自减 只需要一个数,一元运算符
int a = 3;
int b = a++;//执行完这行代码后,先给b赋值,再自增 int b = a,接着a = a + 1
//相当于先让b等于之前的a,然后让a=a+1
//a = a + 1
System.out.println(a);//4
System.out.println(b);//3
//a++ a = a + 1
int c = ++a;//执行完这行代码前,先自增,再给c赋值 c=5是因为a经过a++已经等于4了
System.out.println(a);//5
System.out.println(b);//3
System.out.println(c);//5
for (int i = 0; i < ; i++) {}//以后会常用
//幂运算 2^3 2*2*2 =8 很多运算,我们会使用一些工具类来操作
double pow = Math.pow(2,3);
System.out.println(pow);//8.0
}
}
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));//逻辑与运算:两个变量都为真,结果才为true
System.out.println("a || b:"+(a||b));//逻辑或运算:两个变量有一个为真,结果为true
// 逻辑与运算:两个变量都为假,结果才为flase
System.out.println("!(a && b):"+!(a&&b));//如果是真,则变为假,如果是假,则变为真
//短路运算
System.out.println("b && a:"+(b&&a));//b为假,就不会再去执行后面
//与运算前面错后面不执行
//或运算前面对后面不执行
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d);
System.out.println(c);//输出5
}
}
package operator;
public class Demo06 {
public static void main(String[] args) {
/*
A = 0011 1100
B = 0000 1101
A&B = 0000 1100 两个都是1才得1 0是false 1是true
A|B = 0011 1101 两个都是0得0 有一个1就为1
A^B = 0011 0001 异或,相同为0,不同为1
~B = 1111 0010 取反
2*8怎么运算最快 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左移3位 输出16
}
}
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);
//字符串连接符 +
//在+运算符两侧,只要有一方出现了String字符串类型“”,
// 它就会把其他操作数都转换成String再进行连接
System.out.println(a+b);
System.out.println(""+a+b);//1020 其中“”是字符串
//如果字符串在前面,它后面的会拼接
System.out.println(a+b+"");//30
//如果字符串在后面,它前面的会进行运算,运算出30后30变成字符串
}
}
package operator;
//三元运算符
public class Demo {
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);
}
}
优先级:() 一元运算符 +-*/ 位于