零基础学Java笔记-浙大MOOC翁恺-第2周 判断

本文详细介绍了Java中的关系运算符,包括相等、不等、大于、小于及其优先级。强调了在进行浮点数比较时的注意事项,以及如何避免比较中的误差。此外,还讲解了if语句的基本用法和嵌套,以及switch语句的执行逻辑。通过实例展示了判断语句的常见错误和解决方案,帮助读者深入理解条件控制在编程中的应用。
摘要由CSDN通过智能技术生成

第2周 判断

2.1 比较

注释

用来区分代码块,可读性更高,//单行注释,/* */多行注释或行内注释

关系运算

  • 智能并非多高级,能做一些判断就是智能

运算符意义
==相等
!=不相等
>大于
>=大于等于
<小于
<=小于等于
  • 运算结果:true/false

  • 运算符的优先级

    1. 所有的关系运算符(== >=)的优先级低于算术运算(+ -),高于赋值运算(=)
    2. ==和!=的优先级低于其他关系运算符
    3. 连续的关系运算从左到右
    例子结果
    5 > 3 == 6 > 4先比较大小再判断是否相等,true
    6 > 5 > 4true > 4无法比较
    a == b == true先算a==b,得到true/false再判断是否与true相等
    a == b == 6先算a==b,得到true/false,true/false == 6无法比较
    a == b > false先算b > false,b为浮点数或布尔值,不能比较
    (a == b) > false先算a == b为true/false,true和false无大小关系,无法比较
  • int与double比较

int a =5;
double b = 5.0;
System.out.println(a==b);
//true
  • double与double比较
double a = 1;
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(a==b);
//false

浮点数在计算机内部表达有误差,double与double的比较不能简单地用==,应该用如下方式:

Math.abs(f1-f2)<1e-5

double a = 1;
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);
//true

2.2 判断

根据比较的结果,决定做、还是不做某些动作,就要用到if语句。

一个基本的if语句由一个关键字if开头,跟上在括号里的一个表示条件的逻辑表达式,然后是一对大括号“{}”之间的若干条语句。如果表示条件的逻辑表达式的结果为true,那么就执行后面跟着的这对大括号中的语句,否则就跳过这些语句不执行,而继续下面的其他语句。

有的时候我们希望在条件成立的时候做一件事情,而在条件不成立的时候做另外一件事情。这可以在if语句后面跟上一个else子句,形成一个if-else语句。

if (条件)
{
	动作;
}
//if和{}一起组成一个完整的句子,{}里的句子后面加;
if (条件)
{
	动作;
}
else
{
  动作;
}

2.3 分支

嵌套

if ()
{
  if(){
    
  }else{
    
  }
}
else
{
   if(){
    
  }else{
    
  }
}

else总是和最近的那个if匹配

级联

if( x<0 ){
  f = -1;
}
else if( x==0 )
{
  f = 0;
}
else
{
  f = 2*x;
}
System.out.println(f);
//单一出口,程序只在一个地方有输出

多路分支

switch( 控制表达式 )
{
case 常量:
    语句
    ...
case 常量:
    语句
    ...
default: 	
    语句
    ...  
}
  • 控制表达式type只能是整数型的结果
  • 常量可以是常数,也可以是常数计算的表达式
  • 根据表达式的结果,寻找匹配的case,并执行case后面的语句,一直 到break为止
switch( type )
{
case 1:
case 2:
    System.out.println("你好");
  	break;
case 3:
  	System.out.println("晚上好");   
case 4:
  	System.out.println("再见"); 
    break;
default: 	
    System.out.println("啊?说啥?"); 
    break;   
}

switch语句可以看作是一种基于计算的跳转,计算控制表达式的值后,程序会跳转到相匹配的case (分支标号)处。
分支标号只是说明switch内部位置的路标,在执行完分支中的最后一条语句后,如果后面没有break,就会顺序执行到下
面的case里去,直到遇到一个break,或者switch结束为止。

2.4 判断语句常见错误

问题分析/解决
忘了大括号,缩进对java无意义永远在if和else后面加大括号,即使只有一句话
if后面加分号if语句结束了
错误使用==和=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值