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/b);//应该等于0.5,但都是int值,四舍五入等于0
System.out.println(a/(double)b);//强制转换后就可以了
注意:运算类型跟着大的走,意思就是运算符的结果是根据最高运算符来决定的:运算中有一个double,那么结果就是double类型,最低的类型为int类型。(如下解释)
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类型
System.out.println(b+c+d);//int类型
System.out.println(c+d);//int类型
//运算中有Long类型结果都为Long类型,(同理有更高级的类型结果就为更高级的类型,比如double)其余情况都为int类型
}
自增自减运算符(重要)
public class Demo04 {
public static void main(String[] args) {
//++(自增) --(自减) 也叫做一元运算符
int a = 3;
int b = a++; //a++就相当于a=a+1 //执行完这行代码后,先给b赋值,再自增
//隐藏执行a=a+1
System.out.println(a);
int c = ++a;//++a a=a+1 //执行完这行代码前,先自增,再给b赋值
// 隐藏执行a++ a=a+1
System.out.println(a);
System.out.println(b);
System.out.println(c);
关系运算符
public class Demo03 {
public static void main(String[] args) {
//关系运算符返回结果,正确或错误-->java中用布尔值表示
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);
}
}
幂运算
/幂运算 2^3=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));//逻辑与运算:两个变量都为真,结果才为真
System.out.println("a||b:"+(a||b));//逻辑或运算:两个变量有一个真,则结果为真;两个都为假,结果才为假
System.out.println("!(a&&b):"+!(a&&b));//如果是真,则变为假;如果是假,则变为真
//短路运算:与运算中,前一个为假,那么后一个的真假就不看了,直接输出false
int c = 5;
boolean d = (c<4)&&(c++<10);
System.out.println(d);
System.out.println(c);
}
}
补充:System.out.println("a&&b:"+(a&&b));
//通过加号把字符串与结果拼接起来
位运算符
package operator;
public class Demo06 {
public static void main(String[] args) {
/*
A = 0011 1100
B = 0000 1101
=========================================================
A&B= 0000 1100(两个都是1才为1)与
A|B= 0011 1101(两个都是0才为0)或
A^B= 0011 0001(两个数相同为0,不同为1)非
~B= 1111 0010(对于B取反)
==========================================================
*/
面试题
/面试题;2*8如何算最快?2*2*2*2
// >>右移(相当于/2) <<左移(相当于*2)
// (箭头指向哪边就向哪边移)
System.out.println(2<<3);
//为什么?
/*二进制中 0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16
*/
}
}
扩展赋值运算符
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);
}
}
面试题
/面试题
//字符串连接符 + 若出现String(字符串)类型,后面的类型都转换成String再进行连接
System.out.println(a+b);
System.out.println(""+a+b);//字符串在前面才连接
System.out.println(a+b+"");//在后面就不行
条件运算符
//三元运算符(条件运算符)
public class Demo08 {
public static void main(String[] args) {
//x ? y : z
//如果x=true,则结果为y;否则结果为z
int score = 80;
String type = score <60 ?"不及格":"及格";//必须掌握
System.out.println(type);
}
}