算数运算符 + - * / % ++ --
比较运算符 == != > < >= <=
赋值运算符 += -= *= /= %=
逻辑运算符 & | ! ^ && ||
条件运算符
位运算
算数运算符 + - * / % ++ --
加法:数值+数值 数值+字符(十进制编码) ,'a'为char类型,自动转为int类型
字符串连接 :字符串+字符串 数值+字符串
+ - / % ++ --
数值+数值 数值+字符
++ 自增1 在混合运算时,++在后 先运算 后++, ++在前面 先++, 后运算
-- 自减1
package day2;
public class Demo4 {
public static void main(String[] args) {
int a = 10;
int b = 5;
System.out.println(a+b);//15
System.out.println(a+'a');//107 数值+字符(十进制编码) 'a'为char类型,自动转为int类
System.out.println(a+"abc");//aabc
System.out.println(a-"abc");//错的,不能减
System.out.println(a-'a');
int x=5;
// x++;//x=x+1
// ++x;//x=+1
//System.out.println(x);//7
// int y = x++ + 1; 在混合运算时,++在后 先运算 后++
int y = ++x + 1; //++在前面 先++, 后运算
System.out.println(y);//6 7
System.out.println(x);//6 6
}
}
比较运算符 == != > < >= <= == !=
数值与数值,数值与字符, 逻辑值与逻辑值, 引用类型与引用类型
< >= <=
数值与数值 数值与字符
比较运算符的结果都是boolean类型,要么是true,要么是false
注意:比较运算符的==,不能写成=
package day2;
public class Demo5 {
public static void main(String[] args) {
int a = 10;
int b = 5;
System.out.println(a>b);//true
System.out.println(a>'a');//数值 与 数值 数值与字符,false
System.out.println(a==b);
System.out.println(a!=b);
boolean c = true;
boolean d = false;
System.out.println(c==d);//false
System.out.println(c!=d);//true
String s = "abc";
String s1 = "abc";
System.out.println(s==s1);//true
System.out.println(s!=s1);//false
}
}
逻辑运算 逻辑值与逻辑值 & | ! && || ^(异或)
& | ^ ! 既可以参与逻辑运算 也可以参与位运算
“&”和“&&”的区别:
- &时,左边无论真假,右边都进行运算;
- &&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算
- “|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。
package day2;
public class Demo6 {
public static void main(String[] args) {
int a = 10;
int b = 5;
int c = 7;
// false & 后面的表达式需要继续执行
System.out.println(a>b);//0 不是逻辑运算,进入到位运算
System.out.println(a>b & b<c);//true & true = true
System.out.println(a>b & b>c);//true & false = false
System.out.println(a<b & ++b>c);//false & false = false
System.out.println(b);
// false &&(短路) 后面其他表达式就不执行
System.out.println(a>b && b<c);//true && true = true
System.out.println(a>b && b>c);//true && false = false
System.out.println(a<b && ++b>c);//false && false = false
System.out.println(b);
// true | 后面的其他表达式仍需要执行
// true ||(短路) 后面的其他表达式不需要执行 结果直接是true
//! 取反
//System.out.println(!(a>b));
//^ 相同为false 相异为true
System.out.println(a>b ^ b<c); //true ^ true =false
System.out.println(a>b ^ b>c); //true ^ false = true
System.out.println(a<b ^ b>c); //false ^ false = false
}
}
赋值运算符+= -= *= /= %=
注意:= 右边的值赋给左边 注意数据类型 经常写 == 写成=
条件运算符
语法: (条件表达式)? 表达式1:表达式2;
条件表达式结果为true,运算后的结果是表达式1; 为false,运算后的结果是表达式2
package day2;
public class Demo7 {
public static void main(String[] args) {
int a = 10;
byte b = (byte)a;
a += b; //a=a+b
System.out.println(a);
short s = 3;
//s=s+2; //报错, s= s(short类型) + 2(int)
s += 2; // 隐式转换
int score = 70;
String res=(score>=60)?"及格":"不及格";
System.out.println(res);
}
}