【Java】 条件与选择

news2024/9/22 1:45:47

文章目录

    • 1.关系操作符
    • 2.逻辑操作符
    • 3.if语句
      • 3.1常见的问题
      • 3.2 两个浮点数值的相等测试
      • 3.3 简化布尔赋值
    • 4.switch语句
    • 5.三元操作符

1.关系操作符

Java 提供六种关系操作符(relational operator)(也称为比较操作符(comparison operator))

操作符名称
<小于
<=小于等于
>大于
>=大于等于
==等于
!=不等于

比较的结果是一个布尔值:true(真)或false(假)。

保存布尔值的变量称为布尔变量(boolean variable),boolean数据类型用于声明布尔型变量。
boolean型变量可以是以下这两个值中的一个:true和false。
true 和fa1se 都是字面值,就像10这样的数字一样。它们被当作保留字一样,不能用做程序中的标识符。

boolean a = true;
boolean b = false;

2.逻辑操作符

有时候,是否执行一条语句是由几个条件的组合来决定的。可以使用逻辑操作符组合这些条件。
逻辑操作符(logical operator)也称为布尔操作符(boolean operator),是对布尔值进行的运算,它会创建新的布尔值。

操作符名称
!
&&
||
^异或

运算符执行顺序
在这里插入图片描述
如果优先级相同的操作符相邻,则结合规则(associativity)决定它们的执行顺序。赋值操作符是右结合的(right-associative)。其他二元操作符都是左结合的(left-associative)。

3.if语句

// if - else if - else结构
if(score >=90)
	System.out("厉害");
else if(score >=80)
	System.out("好");
else if(score >=60)
	System.out("ok");
else{
	// 嵌套if
	if(isHardworking)
		System.out("没关系");
	else
		System.out("hehe");
}

3.1常见的问题

/*冗余的条件*/
if(a==true){};
// 应该用下面这个:
if(a){};

/*错误使用赋值语句*/
if(a=true){}; // 先赋值再判断,所以永远是true

3.2 两个浮点数值的相等测试

浮点数具有有限的计算精度;涉及浮点数的计算可能引人舍人错误。因此,两个浮点数值的相等测试并不可靠。

doublex=1.0-0.1-0.1-0.1-0.1-0.1;
System.out.printin(x==0.5);
//这里,x并不是精确等于0.5,而是0.5000000000000001。

虽然不能依赖于两个浮点这里,x并不是精确等于0.5,而是0.5000000000000001。可以通过测试两个数的差距小于某个阈值,来比较它们是否已经足够接近。也就是,对于一个非常小的值ε,如果|x-y<ε,那么x和y非常接近。
通常,将ε设为10-14来比较两个double类型的值,而设为10-7来比较两个float类型的值。

final double EPSILON = 1E-14;
double x = 1.0 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1;
if(Math.abs(x - 0.5) < EPSILON)
	System.out.printin(x+"is approximately 0.5");

3.3 简化布尔赋值

boolean even;
if (number % 2 == 0)
	even = true;
else 
	even = false;
// 应该简化为:
boolean even = (number % 2 == 0)

4.switch语句

switch(status){
	case 0:{};
		break;
	case 1:{};
		break;
	case 2:{};
		break;
	default:{};
}
  • switch 表达式必须能计算出一个 char、byte、short、int或者 String型值,并且必须用括号括住
  • case后面都是常量表达式
  • 当 switch 表达式的值与 case语句的值相匹配时,执行从该 case 开始的语句,直到遇到一个break语句或到达该switch语句的结束。break是可选的。break语句会立即终止 switch 语句。
  • 默认情况(defau1t)是可选的,当没有一个给出的case与switch 表达式匹配时
    则执行该操作。
// 落空行为(fall-through behavior)
switch (day){
	case 1:
	case 2:
	case 3:
	case 4:
	case 5: System.out.println("Weekday");break;
	case 6:
	case 0: System.out.println("Weekday");break;
}

5.三元操作符

// y是a b中的最大值
int y = (a > b) ? a : b;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1925443.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

张雪峰高考志愿填报

描述 张雪峰&#xff0c;一个富有才华的老师&#xff01; 对于大家的学习有不可多得的帮助。 内容 目前主要的内容以自愿填报为主&#xff0c;对于学习自愿填报有比较大的帮助&#xff01; 但是网络上面错综复杂&#xff0c;很多老旧的版本影响学习&#xff01; 而这里我整…

现在有哪些微服务解决方案?

Dubbo&#xff1a;是一个轻量级的Java微服务框架&#xff0c;最初由阿里巴巴在2011年开源。它提供了服务注册与发现、负载均衡、容错、分布式调用等。Dubbo更多的被认为是一种高性能的RPC框架&#xff08;远程过程调用&#xff09;&#xff0c;一些服务治理功能依赖第三方组件完…

极速狂飙,激情重燃 ——《极品飞车:集结》删档公测,你准备好了吗?

亲爱的赛车迷们&#xff0c; 当引擎的轰鸣声再次响起&#xff0c;我的心脏仿佛被注入了肾上腺素&#xff0c;那一刻&#xff0c;我知道——属于我们的时刻到了&#xff01;《极品飞车&#xff1a;集结》删档公测的消息如同一道闪电&#xff0c;划破了平凡的日子&#xff0c;将…

爬虫管理:开启企业大数据时代的智能信息搜集

摘要 在数据驱动的时代&#xff0c;精准高效的信息搜集成为企业决策的黄金钥匙。本文深入探讨爬虫管理如何助力企业开启大数据智能搜集的新篇章&#xff0c;通过优化策略、技术实践与成功案例&#xff0c;揭示其对企业发展的重大意义。我们不仅会探讨其技术实现的奥秘&#xf…

【机器学习】精准农业新纪元:机器学习引领的作物管理革命

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀目录 &#x1f50d;1. 引言&#x1f4d2;2. 精准农业的背景与现状&#x1f341;精准农业的概念与发展历程&#x1f342;国内外精准农业实践案…

Milvus 核心设计 (3) ---- metric及index原理详解与示例(1)

目录 背景 Floating point embeddings 特点 适用场景 丈量方式 Euclidean distance (L2) Inner product (IP) Cosine similarity (COSINE) 代码写法 索引类型 In-Memory FLAT 索引 IVF_FLAT IVF_FLAT的工作流程 平衡准确性与速度 性能考虑 代码写法 IVF_SQ8 …

Linux下的C++编程(2)——动态库

为什么要使用动态库&#xff1f; 在实际工作工作&#xff0c;常常需要给予其他人自己的库文件&#xff0c;但是&#xff0c;我们只想让其他人使用我们的库文件&#xff0c;而不想让其他人知道我们具体代码&#xff0c;所以就引入了动态库的概念&#xff0c;使用动态库可以让使…

C++编程小游戏------斗罗大陆(1)魂力测评和武魂觉醒

#include <bits/stdc.h> #include <windows.h> using namespace std; string name,wh; int hl,wh1; int gj50,fy50,jy5000,hp60; int main() { // 共十个武魂["昊天锤","蓝电霸王龙","七杀剑","火凤凰","尖尾雨燕&qu…

Python爬虫:基础爬虫架构及爬取证券之星全站行情数据!

爬虫成长之路&#xff08;一&#xff09;里我们介绍了如何爬取证券之星网站上所有A股数据&#xff0c;主要涉及网页获取和页面解析的知识。爬虫成长之路&#xff08;二&#xff09;里我们介绍了如何获取代理IP并验证&#xff0c;涉及了多线程编程和数据存储的知识。此次我们将在…

YOLOv8-OBB 旋转目标检测训练自己的数据

数据集制作 标注工具&#xff1a;X-AnyLabeling https://github.com/CVHub520/X-AnyLabeling 下载链接&#xff1a;https://pan.baidu.com/s/1UsnDucBDed8pU1RtaVZhQw?pwd5kel 数据标注可以参考&#xff1a;https://zhuanlan.zhihu.com/p/665036259 1. 选择导出方式为…

用户登陆实现前后端JWT鉴权

目录 一、JWT介绍 二、前端配置 三、后端配置 四、实战 一、JWT介绍 1.1 什么是jwt JWT&#xff08;JSON Web Token&#xff09;是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;用于在各方之间以安全的方式传输信息。JWT 是一种紧凑、自包含的信息载体&…

【论文速读】《面向深度学习的联合消息传递与自编码器》,无线AI的挑战和解决思路

这篇文章来自华为的渥太华无线先进系统能力中心和无线技术实验室&#xff0c;作者中有大名鼎鼎的童文。 一、自编码架构的全局收发机面临的主要问题 文章对我比较有启发的地方&#xff0c;是提到自编码架构的全局收发机面临的主要问题&#xff1a; 问题一&#xff1a;基于随…

godis源码分析——database存储核心1

前言 redis的核心是数据的快速存储&#xff0c;下面就来分析一下godis的底层存储是如何实现&#xff0c;先分析单机服务。 此文采用抓大放小原则&#xff0c;先大的流程方向&#xff0c;再抓细节。 流程图 源码分析 现在以客户端连接&#xff0c;并发起set key val命令为例…

深度加速器 为游戏而生

使用深度加速器的基本步骤如下 首先&#xff0c;访问深度加速器的官方网站或授权下载渠道&#xff0c;下载最新版本的深度加速器客户端。 下载完成后&#xff0c;电脑版直接双击打开免安装&#xff0c;将深度加速器安装到您的计算机或移动设备上。 注册与登录&#xff1a; 打…

t-SNE降维可视化并生成excel文件使用其他画图软件美化

t-sne t-SNE&#xff08;t-分布随机邻域嵌入&#xff0c;t-distributed Stochastic Neighbor Embedding&#xff09;是由 Laurens van der Maaten 和 Geoffrey Hinton 于 2008 年提出的一种非线性降维技术。它特别适合用于高维数据的可视化。t-SNE 的主要目标是将高维数据映射…

java《ArrayList篇》--ArrayList全套知识点总结及其配套习题逐语句分析(附带全套源代码)

一、前言 来不及悼念字符串了&#xff0c;接下来登场的是集合&#xff0c;集合和数组的用法差不多&#xff0c;不同之处就在于存储的内容&#xff0c;数组是固定的长度的&#xff0c;集合的长度不固定。学习的过程中可以参照数组 今天已经是学习java的第八天了&#xff0c;接下…

怎么安装Manim库在Windows环境下的Jupyter Notebook上

Manim 是解释性数学视频的动画引擎。 您可以使用它来制作数学视频&#xff08;或其他字段&#xff09;。也许你们会在有有些平台上会看过特别好看的数学动画&#xff0c;例如 3Blue1Brown等。这些动画特别好看&#xff0c;还特别丝滑&#xff0c;基本找不到太大的毛病。 我当初…

BasicSR项目(通用图像超分、修复、增强工具库)介绍

项目地址&#xff1a;https://github.com/XPixelGroup/BasicSR 文档地址&#xff1a;https://github.com/XPixelGroup/BasicSR-docs/releases BasicSR 是一个开源项目&#xff0c;旨在提供一个方便易用的图像、视频的超分、复原、增强的工具箱。BasicSR 代码库从2018年4月20日…

【QT】Qt事件

目录 前置知识 事件概念 常见的事件描述 进入和离开事件 代码示例&#xff1a; 鼠标事件 鼠标点击事件 鼠标释放事件 鼠标双击事件 鼠标滚轮动作 键盘事件 定时器事件 开启定时器事件 窗口相关事件 窗口移动触发事件 窗口大小改变时触发的事件 扩展 前置知识…

知识改变命运 第七集(下):Java中数组的定义与使用

4. 数组练习 4.1 数组转字符串 import java.util.Arrays int[] arr {1,2,3,4,5,6}; String newArr Arrays.toString(arr); System.out.println(newArr); // 执行结果 [1, 2, 3, 4, 5, 6]使用这个方法后续打印数组就更方便一些. Java 中提供了 java.util.Arrays 包, 其中包含…