运算符
Java 语言支持如下运算符:
算术运算符: +,-,*,/(整除),%,++,--
public static void main(String[] args) {
int[] arr = new int[5];//创建数组
int number1 = 1;
int number2 = 2;
// +
System.out.println(number1 + number2);//3
// -
System.out.println(number2 - number1);//1
// *
System.out.println(number2 * number1);//2
// /
System.out.println(number2 / number1);//2
// % 取模
System.out.println(number2 % 2); //2/2 余数 0
//++ :先自增1,后运算
int a = 0;
arr[++a] = 10;
System.out.println("前++:" + a + "数组角标:" + arr[1]);
//++ :先运算,后自增1
int b = 0;
arr[b++] = 11;
System.out.println("后++:" + b + "数组角标:" + arr[0]);
//-- :先自减1,后运算
a = 2;
arr[--a] = 12;
System.out.println("前++:" + a + "数组角标:" + arr[1]);
//-- :先运算,后自减1
b = 0;
arr[b--] = 13;
System.out.println("后++:" + b + "数组角标:" + arr[0]);
//连接符:+:只能使用在String与其他数据类型变量之间使用。
String name = "Tom";
int age = 18;
String sum = name + ":" + age;
System.out.println(sum);
}
关系运算符: >,<,>=,<=,= =,!=
public static void main(String[] args) {
// ==
System.out.println(1 == 1);//true
System.out.println(1 == 2);//false
// !=
System.out.println(1 != 1);//false
System.out.println(1 != 2);//true
// >
System.out.println(1 > 2);//false
System.out.println(2 > 1);//true
// <
System.out.println(2 < 1);//false
System.out.println(1 < 2);//true
// >=
System.out.println(1 >= 1);//true
System.out.println(1 >= 2);//false
// <=
System.out.println(1 <= 1);//true
System.out.println(2 <= 1);//false
// instanceof
//判断对象是否属于要判断的类
Object o = new Object();
System.out.println(o instanceof Object);//true
String s = new String();
System.out.println(s instanceof Object);//true String 继承 Object
System.out.println(o instanceof String);//false
}
逻辑运算符: !,& , | , &&,||(短路与/或)
public static void main(String[] args) {
// & 和 && 与
int a = 0;
int b = 1;
if (a>100 & a--<0){
}
System.out.println(a);// &左边为false 右边正常执行 a = -1
System.out.println("--------------------");
if (a>100 && a--<0){
}
System.out.println(a);// &&左边为false 右边不会执行 a = -1
/*
& 与 && 的运算结果相同,当符号左边是true时,二者都会执行符号右边的运算
当符号左边是false时-,&继续执行符号右边的运算。&&不再执行符号右边的运算。
推荐使用&&
*/
// | 和 || 或
if (b<100 | b--<0){
}
System.out.println(b);// |左边为true 右边还会执行 b = 0
System.out.println("--------------------");
if (b<100 || b--<0){
}
System.out.println(b);// |左边为true 右边不会执行 b = 0
/*
| 与 || 的运算结果相同,当符号左边是false时,二者都会执行符号右边的运算
当符号左边是true时,|继续执行符号右边的运算,而||不再执行符号右边的运算
推荐使用||
*/
// !非
int c = 0;
if (!(1 == 1)){
c++;
}
System.out.println(c);//0 !作用让true变false,反转布尔值
// ^ 异或
System.out.println(true ^ false);// true
System.out.println(true ^ true);//false
System.out.println(false ^ true);//true
}
位运算符: &,|,^(异或),~(取反) , >>,<<,>>>(无符号右移,用 0填充)
public static void main(String[] args) {
// << 左移
int a = 2;
a = a << 1;
System.out.println(a);//每向左移1位,相当于 * 2 =4
a = -2;
a = a << 1;
System.out.println(a);//每向左移1位,相当于 * 2 =-4
// >> 右移
int b = 4;
b = b >> 1;
System.out.println(b);//每向右移1位,相当于 / 2 =2
b = -4;
b = b >> 1;
System.out.println(b);//每向右移1位,相当于 / 2 =-2
// >>> 无符号右移
int c = 4;
c = c >>> 1;
System.out.println(c);//每向右移1位,相当于 / 2,但是二进制最高位不是正负符号位了 =2
c = -4;
c = c >>> 1;
System.out.println(c);//涉及二进制补码
}
赋值运算符: =
这个就不多说了上面全是案例
扩展赋值运算符:+ =,- =,* =,/ =
public static void main(String[] args) {
// =
int a = 1;
System.out.println(a);//1
String a1 = "abc";
System.out.println(a1);//abc
String a2 = a1;
System.out.println(a2);//abc
// += :sum=sum+i的意思
int b = 1;
b += 2;//b = b + 2 =3
System.out.println(b);
// -= :sum=sum-i的意思
int c = 2;
c -= 1;//c = c - 1 =1
System.out.println(c);
// *= :sum=sum*i的意思
int d = 2;
d *= 2; //d = d * 2 =4
System.out.println(d);
// /= :sum=(int)(sum/i) 存在一个隐形的强制类型转换
int e = 4;
e /= 2; // e = e / 2 =2
System.out.println(e);
// %= :取余
int f = 4;
f %= 2; //f = f % 2 =0
System.out.println(f);
}
字符串连接运算符:+
1、+运算符在java语言当中有两个作用:
*加法运算,求和
*字符串的连接运算
2、当“+”运算符两边的数据都是数字的话,一定是运行加法运算。
3、当“+”运算符两边的数据只要有一个数据是字符串,一定是运行字符串连接运算。
并且,连接运算之后的结果还是一个字符串类型。
数字 + 数字 --->数字【求和】
数字 + ”字符串“ -->”字符串“【字符串连接】
4、在一个表达式当中可以出现多个”+“,在没有添加小括号的前提下,遵循从左至右的顺序依次运算。