运算符
算术运算符
-
-
- / % ++ –
-
- 运算符有优先级,不确定加小括号,优先级提升
public class Lianxi5
{
public static void main(String[] args){
int i=10;
int j=3;
System.out.println(i+j);
System.out.println(i-j);
System.out.println(i*j);
System.out.println(i/j);
System.out.println(i%j);
//自加运算符++
int k=10;
k ++;//自加1
System.out.println(k);//++运算符可以出现在变量前,也可以出现在变量后,运算结束,变量就自加1
int a=100;
int b=a ++;//++出现在变量后,先将a赋值给b,在对a进行自加运算
System.out.println(a);//101
System.out.println(b);//100
int m=20;
int n=++m;//++出现在变量前,先进行自加1,再赋值
System.out.println(m);//21
System.out.println(n);//21
int xx=500;
System.out.println(xx);
System.out.println(--xx);
System.out.println(xx++);
}
}
关系运算符
= < <= == !=
关系运算符的运算结果一定是布尔类型,true/false
关系运算符比较的是变量的值
public class Lianxi6
{
public static void main(String[] args){
int a=10;
int b=10;
System.out.println(a==b);//true
System.out.println(a>b);//false
System.out.println(a>=b);//true
System.out.println(a<b);//false
System.out.println(a<=b);//true
System.out.println(a!=b);//false//比较的是a和b里面保存的值
}
}
逻辑运算符
& 逻辑与(两边的算子都是真,结果是真);
| 逻辑或(两边的算子有一个是真,结果是真);
!逻辑非(取反)
^ 逻辑异或(两边的算子只要不一样,结果就是真);
&& 短路与(短路与和逻辑与的运算结果相同,只不过存在短路现象);
|| 短路或(短路或和逻辑或的运算结果相同,只不过存在短路现象);
逻辑运算符要求两边的算子必须是布尔类型,并且运算完之后的结果也是布尔类型
public class Lianxi6
{
public static void main(String[] args){
System.out.println(5 > 3 & 5 > 2);//true
System.out.println(5 > 3 & 5 > 6);//false
System.out.println(5 > 3 | 5 > 6);//true
//逻辑与和短路与
int x=10;
int y=8;
System.out.println(x < y & ++x < y);//逻辑与
System.out.println(x);//11
int a=10;
int b=8;
System.out.println(a < b && ++a < b);//短路与,由于运行a<b以后结果已经是false,则后边的++a<B不再运算,电路没有运行,所以最后输出a是10。如果第一个表达式运行结果是true,则执行短路或。
System.out.println(a);//10
}
}
赋值运算符
1.基本赋值运算符
2.扩展的赋值运算符
+= -= *+ /+ %=
扩展类的赋值运算符不改变运算结果 类型,假设最初这个变量的类型是byte类型,无论怎么进行追加或追减,最终该变量的数据类型还是byte 类型。
public class Lianxi7
{
public static void main(String []args){
int i=10;
i=i+5;
i+=5;//追加,等同于i=i+5
System.out.println(i);//20
i-=5;
System.out.println(i);//15
i*=2;
System.out.println(i);//30
i/=4;
System.out.println(i);//7
i%=2;
System.out.println(i);//1
byte b=10;
//b=b+5;编译错误,大容量int 向小容量byte 转换,需要加强制类型转换符
b=(byte)(b+5);
System.out.println(b);
byte x=10;
x+=5;//编译通过,不等同于x=x+10,等同于x=(byte)(x+5)
System.out.println(x);
byte z=0;
z+=128;
System.out.println(z);//-128损失精度
}
}
字符串连接运算符
当“+”运算符两边都是数字的话,一定进行加法运算。
当“+”运算符两边只要有一个数据是字符串,一定会进行字符串连接运算,并且,连接以后的数据还是一个字符串类型。
在没有添加小括号的前提下,从左至右依次进行运算
public class Lianxi7
{
public static void main(String []args){
int a=20;
int b=20;
//要求以动态方式输出
System.out.println(10+20+"30");//3030,第一个加号是求和,第二个加号是字符串连接运算符
System.out.println(10+(20+"30"));//102030
System.out.println("10+20="+a+b);//"10+20=30"
System.out.println("a+20="+a+b);
System.out.println(a+"+20="+(a+b));//10+20=30
System.out.println(a+"+"+b+"="+(a+b));//10+20=30,动态,可改变ab的值
String username = "nibaba";
System.out.println("欢迎"+ username +"回来");
}
}
一定要明白"+"什么时候是字符串连接运算符,什么时候是加法运算符
三目运算符
1.语法规则:布尔表达式?表达式1:表达式2
2.三元运算符的执行原理
当布尔表达式的结果是true时,选择表达式1作为整个表达式的执行结果
当布尔表达式的结果是false时,选择表达式2作为整个表达式的执行结果
public class Lianxi7
{
public static void main(String []args){
boolean sex=false;
char c=sex?'男':'女';
System.out.println(c);
}
}