目录
算数运算符
运算符与表达式
运算符:对常量或变量进行操作的符号
表达式:用运算符把常量或变量连接起来符号java语法的式子就叫表达式,不同运算符连接的表达式体现的是不同类型的表达式
| 符号 | 作用 |
|---|---|
| + | 加 |
| - | 减 |
| * | 乘 |
| / | 除 |
| % | 取余 |
public class OperatorDemo01{
public static void main(String[] args){
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);
System.out.println(a%b);
//除法得到的是商,取余得到的是余数
//整数相除只能得到整数,要想得到小数,就必须有浮点数的参与
}
}字符
字符的加法操作
拿字符在计算机底层的数值来进行计算的
| 字符 | 数值 | |
|---|---|---|
| A | 65 | A-Z连续 |
| a | 97 | a-z连续 |
| 0 | 48 | 0-9连续 |
算数表达式中包含多个基本数据类型的值的时候,整个算数表达式的类型会自动进行提升。
提升规则:
byte类型,short类型和char类型将被提升到int
整个表达式的类型自动提升到表达式中最高等级操作数同样的类型
等级顺序:byte,short,char----->int------>long----->fliat------>double
public class OperatorDemo02{
public static void main(String[] args){
int i=10;
char c='A';//A是65
c='a';
c='o';
System.out.println(i+c);
//char ch=i+c;
//char类型会自动提升为int类型
int j=i+c;
System.out.println(j);
//int k=c+0.12; //提升double
double k=c+0.12;
}
}字符串的"+"操作
public class OperatorDemo02{
public static void main(String[] args){
System.out.println("我是"+"谁");
System.out.println("我"+6+6);
System.out.println(99+1+"我");
}
}当"+" 操作中出现字符串,这个"+"是字符串连接符,而不是算数运算符
"我"+666
在"+"操作中,如果出现了字符串,就是连接运算符,否则就是算术运算。当连续进行"+"操作时,从左到右逐个执行
99+1+"我"
赋值运算
| 符号 | 作用 | 说明 |
|---|---|---|
| = | 赋值 | a=10,将10赋值给a |
| += | 加后赋值 | a+=b,将a+b的值赋值给a |
| -= | 减后赋值 | a-=b,将a-b的值赋值给a |
| *= | 乘后赋值 | a*=b,将a*b的值赋值给a |
| /= | 除后赋值 | a/=b,将a/b的商赋值给a |
| %= | 取余后赋值 | a%=b,将a/b的余数赋值给a |
案例
public class Operatorbea{
public static void main(String[] args){
//将10赋值给int类型的变量i;
int i=10;
System.out.println(i);
//+=把左边和右边的数据做加法操作,结果赋值给左边
//i+=20;
i=i+20;
System.out.println(i);
//注意 扩展的赋值运算符底层隐含了强制类型转换
short s=10;
s+=20;
//s=s+20;//类型不兼容
System.out.println(s);
}
}注意:扩展的赋值运算符底层隐含了强制类型转换
自增运算符
| 符号 | 作用 | 说明 |
|---|---|---|
| ++ | 自增 | 变量的值加1 |
| -- | 自减 | 变量的值减1 |
public class OperatorDemo{
public static void main(String[] args){
int i =10;
System.out.println("i:"+i);
//单独使用
//i++;
//++i;
//System.out.println("i++:"+i);
//参与操作使用
//int j=i++;
int j =++i;
System.out.println("i:"+i);
System.out.println("j:"+j);
}
}注意事项:
++和--可以放在变量的后面,也可以放在变量的前面
单独使用时,无论放在变量的前面或后面,结果都一样。
参与操作时,如果放在变量的后面,先拿变量来操作,然后在++或--
参与操作时,如果放在变量的前面,先拿++或--来操作,然后在对变量操作。
常见用法:单独使用
关系运算符
| 符号 | 说明 |
|---|---|
| == | a==b,判断a和b是否相等,成立为true,不成立为false |
| =! | a=!b,判断a和b是否不相等,成立为true,不成立为false |
| > | a>b,判断a是否大于b,成立为true,不成立为false |
| >= | a>=b,判断a是否大于或等于b,成立为true,不成立false |
| < | a<b,判断a是否小于b,成立为true,不成立为false |
| <= | a<=b;判断a是否小于或等于b,成立为true,不成立false |
案例
public class OperatorDemo{
public static void main(String[] args){
int i=10;
int j=20;
int k=10;
//==
System.out.println(i==k);
System.out.println(i==j);
//=!
System.out.println(i=!k);
System.out.println(i=!j);
//
}
}注意事项:
关系运算符的结果都是boolean类型,要么是true,要么是false
逻辑运算符
逻辑运算符概述
在数学中,一个数据x,大于3,小于6,可以写成3<x<6。
在java中,需要将上面的式子拆解,再进行合并表达
先拆解 x>3 和 x<6
合并后 x>3&&x<6
&&是逻辑运算符,逻辑运算符是用来连接关系表达式的运算符,逻辑运算符也可以直接连接布尔类型的常量或变量
逻辑运算符
| 符号 | 作用 | 说明 |
|---|---|---|
| & | 逻辑与 | a&b,a和b都是true,结果true,否则为false |
| | | 逻辑或 | a|b,a和b都为false,结果为false,否则为true |
| ^ | 逻辑异或 | a^b,a和b不同为true,相同为false |
| ! | 逻辑非 | !a ,结果和a的结果相反 |
public class OperatorDemo01{
public static void main(String[] agrs){
int i=10;
int j=20;
int k=30;
//& 有false则false
System.out.println((i>j)&(i>k)); //false & false
System.out.println((i<j)&(i>k)); //true & false
System.out.println((i>j)&(i<k)); //false & true
System.out.println((i<j)&(i<k)); //true & true
//| 有true则true
System.out.println((i>j)|(i>k)); //false | false
System.out.println((i<j)|(i>k)); //true | false
System.out.println((i>j)|(i<k)); //false | true
System.out.println((i<j)|(i<k)); //true | true
// ^相同为false,不同为true
System.out.println((i>j)^(i>k)); //false ^ false
System.out.println((i<j)^(i>k)); //true ^ false
System.out.println((i>j)^(i<k)); //false ^ true
System.out.println((i<j)^(i<k)); //true ^ true
// !
System.out.println((i>j)); //false
System.out.println(!(i>j)) //!false
System.out.println(!!(i>j)); //!!false
System.out.println(!!!(i>j)); //!!!false
}
}
短路逻辑运算符
| 符号 | 作用 | 说明 |
|---|---|---|
| && | 短路与 | 作用和&相同,但是有短路效果 |
| || | 短路或 | 作用和|相同,但是有短语效果 |
注意事项:
逻辑与&,无论左边真假,右边都要执行。
短路与&&,如果左边为真,右边执行,如果左边为假,右边不执行。
逻辑或|,无论左边真假,右边都要执行。
短路或||,如果左边为假,右边执行,如果左边为真,右边不执行。
位运算符
| 符合 | 作用 |
|---|---|
| ~ | 按位取反 |
| & | 按位与 |
| | | 按位或 |
| ^ | 按位异或 |
| << | 按位左移 |
| >> | 按位右移 |
| >>> | 按位无符号右移 |
三元运算符
格式:关系表达式 ? 表达式1:表达式2;
例如:a>b ? a : b;
计算规则
首先计算关系表达式的值
如果值为true,表达式1的值就是运算结果
如果值为false,表达式2的值就是运算结果
public class javaclass {
public static void main(String[] agrs){
int a=10;
int b=30;
int main =a>b ? a : b;
System.out.println(main);
}
}