三元运算符,小结
昨天已经学过了逻辑运算符和位运算符,今天呢,就讲剩下偷懒的条件运算符以及扩展附值运算符
条件运算符:? ,:
扩展运算符:+= ,-= ,*= ,/=
扩展运算符
条件运算符就一个问号一个冒号,我们等下再讲,先讲这扩展运算符
我们直接进IDEA,创建一个新的class,名为Demo07写个main方法,
我们先设个变量,int个a等于10,复制下来b等于20,然后在下面写一个a+=b,然后输出一下a,看看什么意思
结果是30,然后我们在看看这个a+=b,这意思是不是a=a+b, 那a-b怎么表达呢,是不是用**-=**来表示
这都是用来偷懒的,这样一看是不是我们的工作量减少很多,但是,我们在学习的时候还是不要偷懒,等熟悉以后,再偷懒也不迟
这里还要给大家扩展一个字符串连接符,
我们之前学过,用输出指令进行加减运算,
System.out.println(a+b)
System.out.println(""+a+b)
那如果我们在前面加个空的字符串,输出一下会怎么样
我们可以看到得出来的结果是30和1020,
没加空字符串的是正常运算,而加了空字符串 **“ ”**的,它没有去运算,直接输出了,a跟b的结果是连起来的
我们这个加号两侧,只要有一边出现了string类型就是空的字符串 “ ”,它就会把另外的操作输出都转换为string再进行连接
这里就会有一道面试题了
首先,输出 a+b+" ",和输出 “ ”+a+b,他会问你,这两个会有什么区别
可以看到,结果是1020和30,那为什么呢,要知道,这都是有顺序的,一个是先拼接,在计算,一个是先计算,在拼接,
字符串后面的才会被拼接,前面的会被计算
三元运算符
讲完扩展运算符,接下来我们将三元运算符,再先创一个Demo08,写一个main方法
我们前面学的都是一元,二元运算符,那我们来学学三元运算符,在刚刚的条件运算符中我们看到是有一个问号和冒号
这是什么意思呢,一句话概括
x ? y : z
如果x==true,则结果为y,否则结果为z
相当于x是个布尔值,或者运算符,如果x等于true,那结果就是y,如果x等于false,那结果就是z
这三元运算符也是个偷懒的,那我们先做个测试
先int一个score等于80,再往下照着上面的格式写,
int score = 80;
score < 60 ? “不及格” : “及格”;
如果score小于60,就输出不及格,如果score大于60,就输出及格,
然后在前面加上String的类,加上变量名:type,然后再输出一下type,看看会怎么样
那有人问了,为什么要加上String,加别的不可以吗,要注意,后面的及格合不及格是文字,当然要用字符串输出啦,不然你用int试一下,或者用char
结果输出了及格,可以看到这个格式是没错的,那如果把score改成50,那是不是就输出不及格了呀,逻辑是差不多的
等到我们学习到流程控制的时候,会学到if,这两个和之前学的布尔值扩展是一个道理的,只是这个比较偷懒,在学习的时候是不建议去用的,
虽然比较偷懒,不建议去用,但是我们必须掌握,包括上面的扩展运算符,因为在工作中是比较常用到的,而且这个可以让代码更加精简,便于理解
学完这些,我们再回到运算符
我们再小学的时候都学习过,运算的优先级,先乘除后加减
在java里,等级最高的是一元运算符,过了就是加减乘除,然后一级一级往下
在使用的时候,大家就会发现,不需要去刻意的记住,表达式里面,有就优先使用括号来组织,为了大家方便只用,多打一点括号不影响对代码的理解,反而会更清楚
这个优先级就当做作业,有时间就一个一个去试,看一下a+b,a-b会先出来什么东西的,我们一般都会使用括号,弄得明明白白