运算符分为以下几种:
赋值运算符:=
赋值运算符就是=,这里需要注意的是我们日常生活中以为的“=”在java中是==,java中的=的含义是将=右边的数据赋值给左边。
算数运算符:+ - * / % ++ --
加号:连接符号、加法运算、正号
当+左右两边有一个操作数是String类型的时候,此时+就是连接符号。会将两个值拼接到一起,组成一个新的字符串String。
// 测试算数运算符
public class ArithmeticOperator{
public static void main(String[] args) {
// 1:+ 号
int n = +5;
System.out.println(n);
// 2: 加法运算
int sum = 1 + 2;
System.out.println(sum);
// 3: 连接符号
int age = 18;
// "" 字符串 专门的类型 String 一组字符序列
// "我叫阳光,我今年18"
System.out.println("我叫阳光,我今年"+age);
int n1 = 1;
int n2 = 1;
// 打印输出 1+1=1+1==》 1+1=2
System.out.println(n1+"+"+n2+"="+(n1+n2));
// 声明一个字符串变量
//int n = 10;
String str = "你好呀!";
System.out.println(str);
}
}
++ --
++ 和 -- 不具备原子性,也就是说虽然只写了一行代码,但是在执行过程中它是可以被再分的。会被分割位多行执行,可能会出发数据不安全的问题。
/ 测试算数运算符
public class ArithmeticOperator03{
public static void main(String[] args) {
// ++ --
int num = 10;
// ++ -- 单目运算符
++num; // +1
System.out.println(num);
// 重新给num赋值
num = 10;
int result = num++;
System.out.println("result:"+result+",num:"+num); //result:10,num:11
num = 10;
result = ++num;
System.out.println("result:"+result+",num:"+num); //result:11,num:11
int n = 5;
int m = 4;
int res = n++ + ++n + m++ ;
System.out.println("n="+n+",m="+m+",res="+res);
int n = 5;
int m = 4;
int res = n++ + ++n + --n - --m + m++ + m--;
System.out.println("n="+n+",m="+m+",res="+res);
}
}
如果是单独的一条语句: num++; --num;
前后没有区别,++ 自增1 -- 自减1
如果不是单独的一条语句:int res = n++ + ++n + --n - --m + m++ + m--;
前加、前减: 先递增、递减 再使用
后加、后减: 先使用,再递增、递减
关系运算符:> < >= <= == != instanceof
> < >= <= 只能比较基本数据类型中除了boolean之外的
== != 全部都可以比较
instanceof只能比较引用该类型
关系运算符最后的结果是一个boolean类型的值
// 测试关系运算符
public class RelationOperator01{
public static void main(String[] args) {
//1: 测试 > < >= <=
boolean flag = 5>4;
System.out.println(5<4);
System.out.println("测试小数是否可以进行判定:"+(5.4<4.9));
System.out.println("测试char是否可以进行判定:"+('a'<'0')); // char类型比较会转换为数值
//System.out.println("测试boolean是否可以进行判定:"+(true<false));// boolean不能进行比较
// 声明两个String类型的变量
String str1 = "abc";
String str2 = "abc";
//System.out.println("测试String(引用类型)是否可以进行判定:"+(str1<str2));
//2: 测试 == !=
System.out.println("测试整数是否可以进行判定:"+(5==4));
System.out.println("测试boolean是否可以进行判定:"+(true==false));
System.out.println("测试String(引用类型)是否可以进行判定:"+(str1==str2));
//3: instanceof 只能比较引用类型
// 判定某个变量或者是值 是否是 某个具体的类型
System.out.println("判定str1这个变量是否是String类型:"+(str1 instanceof String));
System.out.println("判定呵呵这个值是否是String类型:"+("呵呵" instanceof String));
}
}
逻辑运算符: & | && || ^ !
左右两边的操作数是一个boolean类型的值
请说明&和&&的区别和联系。请说明|和||的区别和联系
&& 如果第一个操作数是false 则整个表达式的结果是false此时第二个操作数不参与运算;
|| 如果第一个操作数是true 则整个表达式的结果是true 此时第二个操作数不参与运算;
& | ^ 基本上看到的都是位运算符 而不是 逻辑运算符
// 测试逻辑运算符
public class LogicOperator{
public static void main(String[] args) {
// 测试
System.out.println("逻辑&运算符的结果");
System.out.println(true & true);
System.out.println(true & false);
System.out.println(false & false);
System.out.println(false & true);
System.out.println("短路&&运算符的结果");
System.out.println(true && true);
System.out.println(true && false);
System.out.println(false && false);
System.out.println(false && true);
System.out.println("逻辑|运算符的结果");
System.out.println(true | true);
System.out.println(true | false);
System.out.println(false | false);
System.out.println(false | true);
System.out.println("短路||运算符的结果");
System.out.println(true || true);
System.out.println(true || false);
System.out.println(false || false);
System.out.println(false || true);
System.out.println("逻辑^ 亦或运算符的结果");
System.out.println(true ^ true);
System.out.println(true ^ false);
System.out.println(false ^ false);
System.out.println(false ^ true);
System.out.println("逻辑! 非 运算符的结果");
System.out.println(!true);
System.out.println(!false);
}
}
扩展运算符:算数运算符+赋值运算符 位运算符+赋值运算符
// 测试扩展运算符 a = a*b ==》 a*=b
public class ExtendsOperator{
public static void main(String[] args) {
// += -= *= /= %=
// 需求: 声明两个学生的分数,然后计算这两个学生的分数之和。
int zhangScore = 44;
int liScore = 22;
// 声明一个变量 存储累加的和
int total = 0;
// 累加1个
total = total + zhangScore; // total += zhangScore
total = total + liScore;
System.out.println("这个班级的学生的分数之和是:"+total);
// 编写一下代码
int n = 10;
byte b = 0;
b += n; // b = b+n
//b = (byte)(b+n);
System.out.println(b);
}
}
位运算符:&,|,^,>>,<<
了解即可。位运算执行效率高,基于二进制直接进行计算的。