算术运算符
- 二元运算符:+、-、*、/、%
- 一元运算符:++、–
整数运算:
如果两个操作数有一个是Long,则结果为long
没有long时,结果为int,即是操作数全部为short,byte,结果也为int
浮点运算
如果两个操作数有一个是double,则结果也为double
只有两个操作数都是float,则结果才为float。
a++:表示的是先使用,使用完了之后在自增。
++a:先自增a,再使用a;
public class virant {
public static void main(String[] args) {
byte a=1;
int b=2;
long b2=3;
//byte c=a+b;//结果应该为int型
int c=a+b;
//int c2=b2+b;//结果应该为long型
long c2=b2+b;
float f1=3.14f;
double d=b+b2;//正确
float d1=b+b2;//正确
//float d2=f1+d;//报错。结果应该为double型。
double d2=f1+d;//正确
System.out.println(-9/5);//输出的是整型的数
int a1=3;
int b1=a1++;
System.out.println("a1="+a1+'\t'+"b1="+b1);//a1=4,b1=3
int a3=3;
int b3=++a3;
System.out.println("a3="+a3+'\t'+"b3="+b3);
}
}
赋值运算符
=、+=、-=、/=、%=
关系运算符
==、!=、>,<.<=,>=(结果只能为true和false)
注意事项:
- =和==是两个完全不同的符号
- ==、!=是所有的(基本和引用)数据类型都可以使用的
-
,<,>=,<=是只有数值类型才可以使用的(byte/short/int/long/float/double/char)
char b='a';
char b2='c';
System.out.println(b<b2);//true
System.out.println((int)b;//97
System.out.println((int)b2);//99
System.out.println(0+b);//97,表示其中一个为整数类型,则会自动转化为int型
逻辑运算符
操作的是布尔值:&,|,!,~,^(异或),短路与&&,短路或||
短路与&&:表示一个为false,后面的则不会在判断。
短路或||:表示其中一个为true,则后面的表达式则不需要再进行计算
public class virant {
public static void main(String[] args) {
boolean b1=true;
boolean b2=false;
System.out.println(b1&b2);//false
System.out.println(b1|b2);//true
System.out.println(b1^b2);//true
System.out.println(!b2);//true
//短路的情况
//int c=3/0;
/*boolean b3=1>2&2<(3/0);
System.out.println(b3);//报错,两个表达式都会进行计算
*
*/
boolean b3=1>2&&2<(3/0);
System.out.println(b3);//false,只计算了1>2,后面的表达式没有计算,因此不会报错
}
}
位运算符
进行二进制位的计算,&,|,^,~,<<,>>
左移一位表示乘以2;
右移表示的是除以2;
public class virant {
public static void main(String[] args) {
int a=3;
int b=4;
System.out.println(a&b);
System.out.println(a|b);
System.out.println(~b);
System.out.println(a^b);
//移位操作
int c=a<<2;//左移两位相当于乘以4
int d=b>>2;//右移两位相当于除以4
System.out.println(c);
System.out.println(d);
}
}
字符串连接符
+:在左右两边有一个为字符串时,则表示的是连接符
条件运算符
x?y:Z(可以代替简单的if语句
x为真,表达式的值为y;
x为假时,表达式的值为Z;
public class virant {
public static void main(String[] args) {
int score=80;
String type=score>60?"及格":"不及格";
System.out.println(type);
}
}
运算符的优先级问题
括号运算符
一元运算符
位运算符
算术运算符
关系运算符
逻辑运算符
条件运算符
赋值运算符
在使用这些运算符的时候,需要注意的是运算符有些是从右往左,有些是从左往右。
在进行使用的时候,可以不用刻意去记,可以使用括号,更加清晰