Java基础之运算符
2.7 运算符
运算符的分类
2.7.1 算数运算符
+、-、*、/、%、++、–
一、一元运算符的运算规则
m = l++;先给m赋值,再自增;
m = ++l;先自增,再给m赋值;
int l = 3;
int m = ++l;//先自增,再给m赋值
System.out.println("l="+l+'\n'+"m="+m);//结果分别为4、4
l = 3;
m = l++;//先给m赋值,再进行自增
System.out.println("l="+l+'\n'+"m="+m);//结果分别为4、3
运行结果:
二、二元运算符+、-、、/、%的运算规则
1、整形运算
⭐有一个数为long时,结果为long
⭐没有long时其他的整形都为int
2、浮点数运算
⭐有一个为double则都是double
⭐只有两个都是float才为float
3、取余运算
一般情况下用整形,也可以用浮点数,符号与左边操作数相同
2.7.2 赋值运算符以及扩展赋值运算符
=、-=、+=、=、/=、%=
一、a=3,将3赋值给a
二、扩展运算符
//测试赋值运算符
int n = 3;
int o = 4;
n+=3;
System.out.println("n="+n);
n-=3;
System.out.println("n="+n);
n*=3;
System.out.println("n="+n);
n/=3;
System.out.println("n="+n);
n%=3;
System.out.println("n="+n);
n = 1;
n*=o+1;//相当于n=n*(o+1),将右侧看作为一个部分
System.out.println("n="+n);
运行结果:
2.7.3 关系运算符:==、!=、>、<、>=、<=
关系运算符运算的结果是布尔值
==、!=可以被基本数据类型和引用数据类型使用,>、>=、<、<=仅仅针对数值类型+字符类型
字符型显示数值的两种办法:①0+···②强制转化
/**
* 测试关系运算符
* @author 14323
*
*/
public class TestOperator02 {
public static void main(String[] args) {
int a = 3;
System.out.println(3==a);
System.out.println(3!=a);
System.out.println(a<5);
System.out.println(a>1);
char b = 'a';
char c = 'b';
System.out.println(0+b);
System.out.println((int)b);
System.out.println(b>c);
}
}
2.7.4 逻辑运算符:&、&&、|、||、!、^
逻辑运算符是用来操作布尔值
&两侧都为真,则为真,否则是false,且左侧为false时仍然会执行右侧代码;
|从左到右都要是真,则才是真。若左侧为真,则也会执行右侧代码
&&左边是假,则直接返回假,右侧不验证;||左边是真,则直接返回真,右侧不验证
此为逻辑与的测试
此为逻辑或的测试
此为短路与的测试
此为短路或的测试
2.7.5 位运算符:~(取反)、&(按位与)、|(按位或)、^(按位异或)、<<(位左移)、>>(位右移)
位运算符是对数字做按位运算
3 0011 ~:1100
4 0100 ~:1011
&: 0000=0
|: 0111=7
^: 0111=7
(>>:2*2则可以表示为2<<1)
(<<:4/2则可以表示为4>>1)
/**
* 测试位运算符
* @author 14323
*
*/
public class TestOperator04 {
public static void main(String[] args) {
System.out.println(3&4);//测试按位与
System.out.println(3|4);//测试按位或
System.out.println(3^4);//测试按位异或
System.out.println(~3);//测试取反
//移位测试
System.out.println(4<<1);//相当于4*2
System.out.println(12>>2);//相当于12/4
}
}
2.7.6 字符串连接符:+
字符串连接符不是基本数据类型,二是一种对象
3+4=7 //作为数值运算
3+”4“=34//作为字符串连接符
⭐只有在碰到字符串时”+“才会变成字符串连接符
/**
* 测试字符串运算符
* @author 14323
*
*/
public class TestOperator05 {
public static void main(String[] args) {
String a = "345";
int b = 4;
int c = 5;
char d = 'a';
System.out.println(a+b+c);//先碰到字符串变为字符串连接符
System.out.println(b+c);//数值运算符
System.out.println(b+c+a);//先为运算符,再碰到字符串变为字符串连接符
System.out.println(b+c+a+c);
System.out.println(d+1);//字符型在进行运算时使用字符集数值
}
}
2.7.7 条件运算符:x?y:z
x:布尔表达值 y:当x为true的情况下 z:当x为false的情况下
/**
* 测试条件运算符
* @author 14323
*
*/
public class TestOperator06 {
public static void main(String[] args) {
int score = 80;
int x = -100;
String type = score<60?"不及格":"及格";
System.out.println(type);
//实质上就是以下选择结构
if(score<60) {
System.out.println("不及格");
}else {
System.out.println("及格");
}
//拓展测试,结果为-1;
System.out.println(x>0?1:(x==0?0:-1));
}
}
2.7.8 运算符优先级问题
⭐逻辑与、或、非之间有优先级区别!其中逻辑非>逻辑与>逻辑或,例如a||b&&c运算结果是
a||(b&&c),而不是(a||b)&&c
右结合性举例:a=b=3 ==> a=(b=3)
⭐以上课堂笔记及心得均来自于高淇大哥的讲课内容!!!后面捎带一句对不起高老大我天天在B站上白嫖你的视频!!!