JAVA基础--运算符
运算符
注意:()的优先级最高,因此可以多打一些()提高代码的可读性!!
算术运算符:
+、-、*、/、%(模:取余)、++(自增)、--(自减)
public class Demo1 {
public static void main(String[] args) {
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 / b);//10除20=0.5,但a,b均为int型,因此结果为0
System.out.println(a / (double)b);//将其中一个强制转为double型即可得出正确答案
System.out.println(b % a);//b对a取余数
}
}
注意类型转换问题:
public class Demo1 {
public static void main(String[] args) {
long a = 123456789L;
int b = 145;
short c = 15;
byte d = 5;
//a为long型,因此输出long类型的数值,若a为double型则输出double型数值
System.out.println(a+b+c+d);//输出123456954
System.out.println(b+c+d);//输出int型,165
System.out.println(c+d);//输出int型,20
自增、自减
public class Demo1 {
public static void main(String[] args) {
int a = 1;
int b = a++;//b=a=1,a=a+1=2(先赋值后自增)
int c = ++a;//a=a+1=2+1=3,c=a=3(先自增后赋值)
System.out.println(a);//输出3
System.out.println(b);//输出1
System.out.println(c);//输出3
}
}
赋值运算符:
//=并不表示等于,等于是==
a = b;//将b的值赋值给a
a == b;//表示a等于b
关系运算符
>、<、>=、<=、==、!=(不等于)、instanceof
注意:关系运算符返回的结果是一个布尔值,ture或false
public class Demo1 {
public static void main(String[] args) {
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
}
}
逻辑运算符
&&(与)、||(或)、!(非)
public class Demo1 {
public static void main(String[] args) {
boolean a = true;
boolean b = false;
System.out.println("a && b:"+(a&&b));//逻辑&&(与):两个变量为真则为真
System.out.println("a || b:"+(a||b));//逻辑||(或):一个变量为真则为真
System.out.println("!b:"+(!b));//逻辑非(!):若为真结果则为假,若为假结果则为真
}
}
运行结果如下:
注意:短路运算:在&&运算中,若前面的表达式为false,则后面的表达式不会执行
public class Demo1 {
public static void main(String[] args) {
int a = 1;
boolean b = (a>3)&&(a++>3);//a>3为假,短路运算原则:后面的表达式不执行
System.out.println(b);//输出false
System.out.println(a);//输出1,a还是为1
}
}
位运算符(注意笔试/面试)
与二进制关:&(与)、|(或)、^(异或)、~(取反)、>>(右移)、<<(左移)、>>>(了解即可)
&、|、^、~:
A = 1100 0110
B = 0011 1100
--------------------------------------------
A&B = 0000 0100 (与&:两个1则为1,其余为0)
A|B = 1111 1110 (或|:两个0则为0,其余为1)
A^B = 1111 1010 (异或^:两个相同则为0,不同则为1)
~A = 0011 1001 (取反~:若是1则为0,若是0则为1)
<<、>>:效率极高!!
public class Demo1 {
public static void main(String[] args) {
int a = 2;
int b =(a<<3);//2<<3 = 2*2*2*2(2左移3位)
System.out.println(b);//输出16
/*
2*8=16 //2*2*2*2=16(2的4次方)
<< : *2
>> : /2
----------------------------
//二进制移位,1向左移动一位等于*2
0000 0001:1
0000 0010:2
0000 0100:4
0000 1000:8
0001 0000:16 (2左移3位)
*/
}
}
条件运算符(三目运算符)
表达式1 ?表达式 2 :表达式 3
如果表达式1正确则输出表达式2,否则输出表达式3
int c = 10;
int d = 20;
//如果c等于d则e=c,若不等于则e=c+d
int e =(c==d) ? c :c + d;
System.out.println(e);//输出结果为30
扩展赋值运算符
+=、-=、*=、/=
例如:a+=b意为a=a+b
int c = 10;
int d = 20;
c += d;//c=c+d
System.out.println(c);//输出30
字符串连接符:+ (面试考题)
public class Demo1 {
public static void main(String[] args) {
//字符串连接符'+':若一方为String类型,则会将另一方转为String类再进行拼接
int a = 10;
int b = 20;
System.out.println(""+a+b);//输出1020
System.out.println(a+b+"");//输出30,因为String类型在后面,所以前面的a+b会先运算再进行拼接
}
}