Java课程学习笔记3

2025-03-20

该笔记主要记录浙江大学翁恺的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 关系运算

image-20250320203558300

上述关系运算可以计算两个变量之间的关系,如果关系满足,那么结果就是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 判断

上述的比较运算符只有判断的结果,但是没有对于不同判断结果没有后续的操作

image-20250320204827024

需要注意的是,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

image-20250320215427521

例如上图里就是输入1之后,由于case1case2都没有break,所以执行完case1的内容之后不会跳出switch而是继续执行case2的内容,直到到了default里有break才结束switch

6 常见的错误

6.1 未加大括号

image-20250320215856941

6.2 if后面加上了分号

if 后面加上分号意味着如果符合 if后面的条件之后,分号结束了 if 的内容

6.3 =和==误用

需要注意,判断相等用的是==,而赋值是=

7 关于代码风格

image-20250320220141004