本篇文章将介绍运算符相关知识。



分类
  • Java语言支持如下运算符:
  • 算数运算符:+,-,*,/,%,++,--
  • 赋值运算符:=
  • 关系运算符:>,<,>=,<=,==,!=,instanceof
  • 逻辑运算符:&&,||,!
  • 位运算符:&,|,^,~,>>,<<,>>>(了解即可)
  • 条件运算符:?:
  • 扩展赋值运算符:+=,-=,*=,/=
二元运算符
  • 二元运算符的运算

public class Demo1 {
public static void main(String[] args) {
//二元运算符
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);
}
}

  • Java基础:基本运算符_自增
  • 运算中,不同类型的数据先转化为同一类型,然后进行计算(向表示范围大的类型转化,相同类型不变)

public class Demo2 {
public static void main(String[] args) {
long a=123434533545334L;
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
}
}

关系运算符
public class Demo3 {
public static void main(String[] args) {
//关系运算符返回的结果:布尔值(true/false)
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);
}
}

Java基础:基本运算符_运算符_02

取余运算符
public class Demo3 {
public static void main(String[] args) {
//取余/模运算
int a=10;
int b=20;
int c=22;
System.out.println(c%a);//c/a=21/10=2...1
}
}

Java基础:基本运算符_自增_03

自增与自减
public class Demo4 {
public static void main(String[] args) {
//自增与自减(一元运算符)
int a=3;
int b=a++; //执行完这行代码后,先将a的值赋给b,a再自增
//a++,a=a+1
System.out.println(a);
//++a,a=a+1
int c=++a; //执行完这行代码后,a先自增,再将a的值赋给b
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}

幂运算
//幂运算 2^3  2^2^2=8
double pow=Math.pow(2,3); //Math.pow()属于工具类
System.out.println(pow);

逻辑运算符
package operator;
//逻辑运算符
public class Demo5 {
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)); //如果是真,则变为假,如果是假,则变为真

//短路运算
int c=5;
boolean d=(c<4)&&(c++<4);
System.out.println(d);
System.out.println(c);
}
}

Java基础:基本运算符_逻辑运算符_04

位运算符
package operator;

public class Demo6 {
public static void main(String[] args) {
/*
A= 0011 1100
B= 0000 1101

A&B=0000 1100 //与运算
A/B=0011 1101 //或运算
A^B=0011 0001 //异或运算
~B =1111 0010 //非运算
*/

/*
例题:2*8怎么运算最快?
2*8=2*2*2*2=16
<<(左移) 等价于*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);
}
}

Java基础:基本运算符_赋值运算符_05

扩展赋值运算符
package operator;

public class Demo7 {
public static void main(String[] args) {
int a=10;
int b=20;
a+=b; //a=a+b
System.out.println(a);
}
}

Java基础:基本运算符_逻辑运算符_06

字符串连接符
//字符串连接符 +
a=10;
b=20;
System.out.println(a+b);
System.out.println(""+a+b); //在+两侧,只要出现String,就会进行连接操作

//""+a+b 与 a+b+"" 的区别
System.out.println(""+a+b);
System.out.println(a+b+""); //若字符串在前,则会进行拼接;若字符串在后,则会先进行运算

三元运算符
package operator;
//三元运算符
public class Demo8 {
public static void main(String[] args) {
//x?y:z
//如果x==true,这结果为y,否则结果为z
int score=80;
String type=score<60?"不及格":"及格";
System.out.println(type);
}
}

Java基础:基本运算符_逻辑运算符_07

运算符优先级

! > 算术运算符 > 关系运算符 > && > || > 赋值运算符