知识回顾-基本运算符
Java语言支持如下运算符: 运算符 中的括号"()"为 优先级,可多次使用。
算数运算符:+,-,*,/,%,++,–
赋值运算符:=
关系运算符:>,<,>=,<=,==(Java的等于是两个等号),!=(不等于) instanceof
逻辑运算符:&&,||,! (与或非)
(以下三个了解就可以)
位运算符:&,|,^,~,>>,<<,>>>
条件运算符:?、:
扩展赋值运算符: +=,-=,*=,/=
算数运算:
public class Demo01 {
public static void main(String[] args) {
//二元运算符
//idea软件快捷键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/(double)b);//此处需要强转一下类型,否则会输出为0
}
}
输出结果:
赋值运算:
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 任意非long整数所运算,结果总是int
}
}
输出结果:
关系运算:
public class Demo03 {
public static void main(String[] args) {
//关系运算符返回的结果:正确,错误 是用布尔值表示
//if
int a = 10;
int b = 20;
int c = 21;
//取余,模运算
System.out.println(c%a);//c/a 21/10=2...1,取余,模运算
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a==b);
System.out.println(a!=b);
}
}
输出结果:
算数运算:自增,自减
public class Demo04 {
public static void main(String[] args) {
//++自增, --自减 一元运算符
int a = 3;
int b = a++;//执行完这行代码后,先给b赋值(此时b=3),再自增(a++)
//a++ a = a + 1;
System.out.println(a);//a=a+1=4
/*
b = a++ 是执行完这行代码后,先给b赋值,再自增
先给b赋值意思是 可以理解为b=原始a,所以b=3
再自增意思是 执行一次a=a+1,
所以此时System.out.println(a);输出结果是4
*/
System.out.println("===============================");
//++a a=a+1;
int c = ++a;//执行完这样代码前,先自增(++a),再给c赋值(此时c=5)
/*
c = ++a 执行完这样代码前,先自增,再给c赋值
先自增意思是 执行a=a+1,因已经执行过一次a++(即a=a+1),所以此时a=(a+1)+1=5
再给c赋值,此时的a=5,所以c=5
*/
System.out.println(a);//两轮自增a++ ++a ,此时a=5
System.out.println(b);
System.out.println(c);
System.out.println("===============================");
//自减同理
//test
int d = 5;
int e = d--;//e=5,此时d=d-1=4
int f = --d;//d=d-1-1=3,f=3
System.out.println(d);//两轮自减,此时d=3
System.out.println(e);//5
System.out.println(f);//3
System.out.println("===============================");
//幂运算, 2*2*2=8 很多运算,我们会使用工具类来操作
double pow = Math.pow(2, 3);
System.out.println(pow);
}
}
输出结果:
逻辑运算:
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));//如果是真,则变为false,如果是假的则变为true
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<4);//c<4已经是false,不会再执行(c++<4),所以输出d直接是fase
System.out.println(d);
System.out.println(c);//c<4已经是false,不会再执行(c++<4),所以c还是5
}
}
输出结果:
位运算:
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就为1
A^B = 0011 0001 异或:相同为0,相异为1
~B = 1111 0010 取反
2*8 = 16 2*2*2*2 后者适合计算机
后者适合计算机,效率高
<<左移就是 *2
>>右移就是 /2
0000 0000 0
0000 0001 1
0000 0010 2
0000 0100 4
0000 1000 8
0001 0000 16
*/
//示例
System.out.println(2<<3);//二进制下移位3次 2*2*2*2
System.out.println(4<<2);//4*2*2
}
}
输出结果:
条件运算:
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+(a=a+b=30)
又 a-,(a=a-b=30-20)
故a=10。
*/
//字符串连接符 + ,String
System.out.println(""+a+b);//""是空的字符串在前面,此时的+是字符串连接符,后面的a+b转换成了String类型,拼接输出结果是1020
System.out.println(a+b+"");//""字符串在后面,先算数运算a+b,再与""进行字符链接,所以结果为30
}
}
输出结果:
扩展赋值运算:
package com.kuang.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);
}
}
输出结果: