运算符
Java支持如下运算符:优先级( )
算术运算符:+、-、*、/、%(取余,模运算)、++(自增)、–(自减)
赋值运算符:=
关系运算符:>、<、>=、<=、==(就是等于)、!=(不等于)、instanceof
逻辑运算符:&&、||、!(与、或、非 )
位运算符:&、|、^、~、>>、<<、>>>(了解!!!)
条件运算符?:
扩展赋值运算符:+=、-=、*=、/=
二元运算符:
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/(double)b);//a/b计算结果为小数,需要进行类型转换
}
}
public class Demo02 {
public static void main(String[] args) {
long a=1212121213L;
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类型时,所有非int类型都会转为int类型)此为自动转换;同理,若数值里有double类型,则输出结果必为double类型
}
}
关系运算符以及取余:
public class Demo03 {
public static void main(String[] args) {
//关系运算符返回的结果:true正确、false错误,即为布尔值boolean
int a=10;
int b=20;
int c=21;
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a==b);
System.out.println(a!=b);//==为等于,!=不等于
System.out.println(c%a);// %取余数即为模运算 c/a=21/10=2.1,余1
}
}
自增自减,一元运算符:
public class Demo04 {
public static void main(String[] args) {
//++、-- 自增、自减(一元运算符)
int a=3;
int b=a++;//先给b赋值a,然后a再自增,即a++,先加后使用
//a++,即为a=a+1
System.out.println(a);//输出结果为4
//++a,即为a=a+1
int c=++a;//执行这行代码前,先给a自增,再给c赋值,即a++先使用后加
System.out.println(a);//输出结果为5,连续两次++,故a结果为5
System.out.println(b);//输出结果为3,因先将a赋值给b后,再进行的a++,故b输出的就是3
System.out.println(c);//输出结果为5,前一次a++,为4,后++a为5,再将5赋值给c
//幂运算 2^3 很多运算,我们可以使用一些工具类操作
double d=Math.pow(2,3);//输出结果为8.0
System.out.println(d);
}
}
逻辑运算符
//逻辑运算符
public class Demo05 {
public static void main(String[] args) {
// 与and、或or、非(取反)
boolean a=true;
boolean b=false;
System.out.println("a&&b:"+(b&&a));//逻辑与运算:两个变量都为真,结果才为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);//当运行到c<4时,已经可以判定输出结果为false,则其后的代码不会再继续运行,即c++不会被执行了
System.out.println(c);//结果还为5
}
}
位运算:
// 位运算
public class Demo06 {
public static void main(String[] args) {
/*以下为二进制数字
A = 0011 1100
B = 0000 1101
A&B=0000 1100 &与
A|B=0011 1101 |或
A^B=0011 0001 ^异或:相同则为0,不同则为1
~B =1111 0010 ~取反
面试真题:2*8如何最快计算
<< :左移一位,结果乘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);//结果为16
}
}
扩展赋值运算符
public class Demo07 {
public static void main(String[] args) {
int a=10;
int b=20;
a+=b; //a=a+b,输出结果为30
// a-=b; //a=a-b
System.out.println(a);
//字符串连接符 + ,“”为String类型,+两侧连解String和其他类型,其输出结果都会转化为String类型进行连解
System.out.println(a+b);
System.out.println(""+a+b); //输出结果为3020
System.out.println(a+b+""); //输出结果为50,注意“”String类型所在加号的什么位置
}
}
三元运算符(条件运算符)
//三元运算符
public class Demo08 {
public static void main(String[] args) {
// x ? y : z
//若x==true,则结果为y,否则结果为z
int score=90;
String type =score <60?"不及格":"及格"; //必须掌握!!!!
System.out.println(type);
}
}