运算符
Java语言支持如下运算符:
算术运算符
+ (加),- (减),* (乘),/ (除),%(取余,模运算)
public class Demo01 {
public static void main(String[] args) {
// 二元运算符
//ctrl + D :复制当前行到下一行
int a = 10;
int b = 20;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/(double)b); //强制转换
}
}
public class Demo02 {
public static void main(String[] args) {
long a = 123456789L;
int b = 21;
short c = 10;
byte d = 8;
int e = 10;
//运算符和类转换应用
System.out.println(a+b+c+d); //自动转换为long类型 低~高
System.out.println(b+c+d); //自动转换为int类型 低~高
System.out.println(c+d); //自动转换为short类型 低~高
System.out.println((double) c+d); //可以执行强制转换成自己想要的类型
System.out.println(b%e); //取余、模运算 b / e = 21 / 10 = 2.1 ,余1
}
}
++ (自增),-- (自减)
public class Demo04 {
public static void main(String[] args) {
// ++ -- 自增 自减 ,一元运算符
// a++ 先给a赋值,再自增 , ++a 先自增,再给a赋值
//同理可得, a-- 先给a赋值,再自减 , --a 先自减,再给a赋值
int a = 3;
int b = a++; // 执行完这行代码后,先给b赋值,再自增
// a = a + 1;
System.out.println(a);
int c = ++a; //执行完这行代码后,先自增,再给c赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
//幂运算 很多运算,我们会使用一些工具类来进行运算
double pw = Math.pow(3,2); //3 * 3 ,Math类:提供了很多科学工程计算的方法,和常数以及特殊的运算方法
System.out.println(pw);
}
}
赋值运算符
=
public class Demo {
public static void main(String[] args) {
//赋值运算
int a =10; // 把10赋给a
int b =20; // 把20赋给b
System.out.println(a);
System.out.println(b);
//输出得到赋给a、b的值
}
}
关系运算符
> (大于),< (小于),>= (大于或等于),<= (小于或等于),== (等于),!=instanceof (不等于)
public class Demo03 {
public static void main(String[] args) {
//关系运算符返回的结果: 正确,错误 通过布尔值来表示: true false
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 正确
System.out.println(a==b);
//输出结果 false 错误
System.out.println(a!=b);
//输出结果 true 正确
}
}
逻辑运算符
&& (逻辑与算),|| (逻辑或算),! (逻辑非算)
//逻辑运算符
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
System.out.println("!(a && b):"+(a && b)); //逻辑非运算:如果是真,则变为假,如果是假则变为真
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d);
System.out.println(c);
// 通过短路运算得到,逻辑与运算在运算中得到一个变量为假,则另一个变量不会再去运算
}
}
位运算符
& (位与算),| (位或算),^ (位异或算),~ (位反算),>> (左移:乘二),<< (右移:除二),>>> (右移, 无论正负,都在最高位插入0)
/*
位运算
&: 位与算 |:位或算 ^:位或算 ~:位反算
<<:左移:乘二 >>:右移:除二
*/
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 位或算:同位数有1则为1;否则都为0
A^B = 0011 0001 位异或算:同位数相同则为0,否则都为1
~A = 1100 0011 位反算:同位数为1则为0,同位数为0则为1
~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 0101 5
0000 0110 6
0000 0111 7
0000 1000 8
0001 0000 16
*/
System.out.println(2<<3);
//输出结果 8
System.out.println(16>>2);
//输出结果 4
}
}
条件运算符
? ,:
//三元运算
public class Demo08 {
public static void main(String[] args) {
//x ? y : z
//如果x==true,则结果为 y,否则结果为z
//定义一个变量、赋值
int score = 80;
//如果 typa为真则输出:"不及格",为假则输出:"及格"
String typa = score <60 ?"不及格":"及格"; //相似方法 if
//必须掌握 开发中十分常见,可以让代码更加精简
System.out.println(typa);
//输出结果:typa为假,不及格
//如果ta为真则输出:及格,为假则输出:不及格
String ta =score >=60?"及格":"不及格";
System.out.println(ta);
//输出结果:ta为真,及格
}
}
扩展赋值运算符
+=,-=,*=,/=
//扩展赋值运算
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);
a*=b; // a = a * b
a/=b; // a = a / b
System.out.println((double)a);
//字符串连接符 + ,只要有一方出现 String 类型,它就会把另一个操作数或其他操作数转换成 String 类型
System.out.println(""+a+b); //字符串在前面,则进行拼接 ""为 String 类型
System.out.println(a+b+""); //字符串在后面,则进行运算
}
}
字符串连接符
public class Demo {
public static void main(String[] args) {
int a =10;
int b =20;
//字符串连接符 + ,只要有一方出现 String 类型,它就会把另一个操作数或其他操作数转换成 String 类型
System.out.println(""+a+b); //字符串在前面,则进行拼接 ""为 String 类型
System.out.println(a+b+""); //字符串在后面,则进行运算
}
}