该笔记主要记录浙江大学翁恺的java入门与进阶课程的学习笔记,主要包括第2小节的比较、关系运算和判断等相关知识
1 比较
import java.util.Scanner;
public class compare {
public static void main(String[] args) {
System.out.print("请投入一定金额的货币:");
Scanner in = new Scanner(System.in);
int amount=in.nextInt();
System.out.println(amount>=10);
}
}
上述的比较,print的结果是true/false,这就可以利用其进行比较了
2 关系运算
上述关系运算可以计算两个变量之间的关系,如果关系满足,那么结果就是true,反之则是false。
为了保证关系运算符的优先级和正常结果一致,关系运算符一般优先级都比较低,且判断是否相等的一般比其他关系运算符更低
一些小的tips:
6>5>4 ❌
6>5的结果是true,无法实现true>4的关系运算
a==b>false ❌
这是因为b不能和false进行比较大小
判断两个浮点数是否相等一般不能直接用==
,这是因为在java中浮点数的计算是有误差的,一般计算都是用两者之差的绝对值小于1e-6来判断是否合适
double a=1.0;
double b=0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1;
System.out.println(Math.abs(a-b)<1e-6);
3 判断
上述的比较运算符只有判断的结果,但是没有对于不同判断结果没有后续的操作
需要注意的是,if的格式是:
if (condition){
operation;
}
else{
operation;
}
需要注意的是,condition的括号后面是不需要加分号的
4 级联和嵌套的判断语句
上述的用于对两个数大小的判断是绰绰有余了,但是对于三个数来说就很难说了:
假设有x,y,z三个数,先判断x ?> y 如果true则判断x?>z, 如果false
则需要则说明y>x,那么需要判断y?>z
对于这种多个if
相嵌套的情况,else
总是和最接近的if
进行匹配,如果要和更远的if匹配的话那么需要用大括号。
所以建议if后面始终有大括号,大括号后面再跟else
除此之外,还有更多级的判断 else if 语句:
if (condition){
operation;
}
else if (condition){
operation
}
else{
operation;
}
对于这种多个情况的时候,单一的出口而不是每个if
下的operate都print相对来说会更加方便后续维护
5 多路分支
对于上述的多层的else if
的语句可以将其改造成switch
语句
switch(type){
case 1:
operation;
break;
case 2:
operation;
break;
default:
operation;
}
如果任何的case
都不匹配就会用default
的内容,switch
会不断执行case
后面的内容,直到遇到break
为止。break
实质上做的是跳出switch
这件事,如果没有break
则不会跳出switch
:
例如上图里就是输入1之后,由于case1
和case2
都没有break
,所以执行完case1
的内容之后不会跳出switch
而是继续执行case2
的内容,直到到了default
里有break
才结束switch
6 常见的错误
6.1 未加大括号
6.2 if后面加上了分号
if
后面加上分号意味着如果符合 if
后面的条件之后,分号结束了 if
的内容
6.3 =和==误用
需要注意,判断相等用的是==
,而赋值是=