Java学习笔记1——编程基础
一、整数类型变量
注意:每个字符型常量占两个字节
二、自动类型转换和强制类型转换
三、算术运算符
四、赋值运算符
五、比较运算符
六、逻辑运算符
七、运算符的优先级
运算符的优先级可以通过以下口诀来记忆:
括号优先,单目次之,乘除先于加减,移位关系逻辑,三目赋值最后。
详细解释:
括号优先:括号内的运算总是最先执行。
单目次之:单目运算符(如
+
、-
、!
、~
、++
、--
)优先级较高。乘除先于加减:
*
、/
、%
的优先级高于+
和-
。移位运算符:
<<
、>>
、>>>
的优先级高于关系运算符。关系运算符:
<
、>
、<=
、>=
、==
、!=
的优先级高于逻辑运算符。逻辑运算符:
&
、|
、^
的优先级高于三目运算符。三目运算符:
? :
的优先级高于赋值运算符。赋值最后:
=
、+=
、-=
等赋值运算符优先级最低。
逻辑运算符的优先级划分
以下是逻辑运算符的优先级顺序,从高到低排列:
逻辑非 (
!
)
优先级最高,用于对布尔值取反。按位与 (
&
)
优先级次之,用于按位与操作。按位异或 (
^
)
优先级低于&
,用于按位异或操作。按位或 (
|
)
优先级低于^
,用于按位或操作。短路与 (
&&
)
优先级低于|
,用于短路与操作(仅当第一个操作数为true
时,才会计算第二个操作数)。短路或 (
||
)
优先级最低,用于短路或操作(仅当第一个操作数为false
时,才会计算第二个操作数)。总结优先级顺序:
! > & > ^ > | > && > ||
注意事项:
短路运算符(
&&
和||
) 的特点是,它们会根据第一个操作数的值决定是否计算第二个操作数。例如:
a && b
:如果a
为false
,则不会计算b
,直接返回false
。
a || b
:如果a
为true
,则不会计算b
,直接返回true
。按位运算符(
&
、|
、^
) 会计算两个操作数的所有位,而不会短路。
八、if……else……条件语句
在 Java 中,if...else
是一种条件选择语句,用于根据条件的真假来执行不同的代码块。以下是 if...else
语句的详细介绍和用法:
1、if...else
语句的基本结构如下:
if (条件) {// 条件为 true 时执行的代码块
} else {// 条件为 false 时执行的代码块
}
条件 是一个布尔表达式(返回
true
或false
)。如果条件为
true
,则执行if
后的代码块。如果条件为
false
,则执行else
后的代码块。
2、if...else if...else
多分支结构
当需要根据多个条件进行判断时,可以使用 if...else if...else
结构:
if (条件1) {// 条件1 为 true 时执行的代码块
} else if (条件2) {// 条件2 为 true 时执行的代码块
} else if (条件3) {// 条件3 为 true 时执行的代码块
} else {// 所有条件都不满足时执行的代码块
}
程序会从上到下依次检查每个条件,一旦某个条件为
true
,就执行对应的代码块,并跳过后续的条件检查。如果所有条件都不满足,则执行
else
后的代码块。
3、 嵌套的 if...else
if...else
语句可以嵌套使用,即在一个 if...else
块中再包含另一个 if...else
语句。
4、 注意事项
条件必须是布尔表达式
if
后的括号中必须是一个返回true
或false
的表达式,不能是其他类型(如整数)。大括号
{}
的使用
如果
if
或else
后的代码块只有一行,可以省略大括号。但为了代码的可读性和避免潜在错误,建议始终使用大括号。
缩进和代码格式
为了提高代码的可读性,建议使用适当的缩进。
5、 总结
if...else
语句是 Java 中最基本的条件判断语句,用于根据条件的真假执行不同的代码块。它支持单分支(if
)、双分支(if...else
)和多分支(if...else if...else
)结构,还可以嵌套使用以处理更复杂的逻辑。
九、三元运算符
在 Java 中,三元运算符(也称为条件运算符)是一种简洁的条件表达式,用于根据条件的真假返回不同的值。它的语法结构非常紧凑,适合在简单的条件判断中使用。
三元运算符的语法
条件表达式 ? 表达式1 : 表达式2
条件表达式:一个返回
true
或false
的布尔表达式。表达式1:当条件表达式为
true
时,返回的值。表达式2:当条件表达式为
false
时,返回的值。
三元运算符的返回值
三元运算符会根据条件表达式的值返回 表达式1
或 表达式2
的值。返回值的类型由 表达式1
和 表达式2
的类型决定。
三元运算符的优缺点
优点:
代码简洁,适合简单的条件判断。
可以在一行代码中完成条件判断和赋值。
缺点:
当嵌套使用时,代码可读性会降低。
对于复杂的逻辑,建议使用
if...else
结构以提高可读性。
十、switch条件语句
在 Java 中,
switch
是一种条件语句,用于根据变量的值执行不同的代码块。它提供了一种比if...else
更清晰的方式来处理多个条件分支。以下是switch
语句的详细介绍和用法。
1. 基本语法
switch
语句的基本结构如下:
switch (表达式) {case 值1:// 当表达式等于值1时执行的代码块break;case 值2:// 当表达式等于值2时执行的代码块break;...default:// 当表达式不匹配任何case时执行的代码块
}
表达式:
switch
后的括号中是一个表达式,其值用于匹配case
后的值。case:每个
case
后跟一个值,表示一个分支条件。break:用于终止当前分支,避免代码继续向下执行(即避免“贯穿”到下一个
case
)。default:可选分支,当表达式的值不匹配任何
case
时执行。
2. 支持的数据类型
switch
语句支持以下数据类型:
int
和char
(基本数据类型)
String
(从 Java 7 开始支持)枚举类型(
enum
)
注意:C语言中switch不支持字符串
3、示例:
String
类型的 switch
(Java 7 及以上)
String fruit = "apple";
switch (fruit) {case "apple":System.out.println("这是一个苹果");break;case "banana":System.out.println("这是一个香蕉");break;case "orange":System.out.println("这是一个橙子");break;default:System.out.println("未知水果");
}
// 输出:这是一个苹果
嵌套的 switch
switch
语句可以嵌套使用,即在一个 switch
块中再包含另一个 switch
语句。
int day = 3;
String time = "morning";switch (day) {case 1:switch (time) {case "morning":System.out.println("周一早上");break;case "afternoon":System.out.println("周一下午");break;case "evening":System.out.println("周日晚上");break;}break;case 2:System.out.println("周二");break;default:System.out.println("其他时间");
}
4、注意事项
break
的重要性
- 如果没有
break
,程序会继续执行下一个case
的代码,直到遇到break
或switch
结束。- 这种行为称为 贯穿(fall-through),通常需要避免,除非是故意设计的逻辑。
default
是可选的
- 如果没有
default
分支,当表达式的值不匹配任何case
时,switch
语句不会执行任何代码。
case
的顺序
case
的顺序会影响程序的执行结果,因为switch
会从上到下依次检查每个case
。
switch
的性能
switch
语句的执行效率通常高于多个if...else
语句,尤其是在分支较多的情况下。
相关文章:
Java学习笔记1——编程基础
一、整数类型变量 注意:每个字符型常量占两个字节 二、自动类型转换和强制类型转换 三、算术运算符 四、赋值运算符 五、比较运算符 六、逻辑运算符 七、运算符的优先级 运算符的优先级可以通过以下口诀来记忆: 括号优先,单目次之&am…...
CMD/DOS和批处理入门知识汇总
0、前言: 在工作中,有时候需要涉及到window系统更底层的一些东西,所以需要学习一些cmd指令和dos命令,来完成高效批处理任务,或者自动化办公。还有想要对系统中文件管理有更细致的认识,便于请理磁盘文件。后…...
Visual Studio 2019 Qt QML 项目环境搭建常见问题处理方法
在 Visual Studio 2019 运行 Qt/QML 项目比直接使用QtCreator环境麻烦,主要是有qmake 的一些配置项不能在 Visual Studio中设置。下面整理一些常见问题的处理方法,供参考: 搭建VS Qt 环境,在Visual Studios 2019下面安装 Qt Vis…...
Python-Django入手
18.1 建立项目 18.1.1 制定规范 - 定义项目目标:明确应用的核心功能 - 创建项目文档:用README.md记录技术栈和开发流程 - 规划目录结构:建议遵循Django官方推荐的项目布局 18.1.2 建立虚拟环境 在命令行执行: python -m ven…...
SakuraCat(2)Endpoint
Endpoint 功能概述 监听指定端口(默认是 8080)的客户端连接。接受客户端连接后,为每个连接创建一个新的线程进行处理。使用 Processor 类来处理客户端的请求和响应。 package com.SakuraCat.connector.protocolHandler;import com.SakuraC…...
19914 最小生成树2
19914 最小生成树2 ⭐️难度:中等 🌟考点:最小生成树 📖 📚 import java.util.*;public class Main {static class Edge{int u,v,w;Edge(int u,int v,int w){this.u u;this.v v;this.w w;}}static ArrayList<…...
SSE服务器主动推送至浏览器客户端,让你不再需要websocket
Server-Sent Events(SSE)是一种服务器向客户端推送实时更新的技术,基于HTTP协议。客户端通过EventSource API来接收事件流,而服务器则保持一个长连接,持续发送数据。这与传统的请求-响应模式不同,允许服务器…...
C++中的搜索算法实现
C中的搜索算法实现 在编程中,搜索算法是解决各种问题的基础工具之一。C作为一种功能强大的编程语言,提供了多种实现搜索算法的方式。本文将详细介绍两种常见的搜索算法:线性搜索和二分搜索,并通过代码示例展示它们的实现。 一、…...
OSI 七层模型和四层模型(TCP/IP 模型)
文章目录 前言一、OSI 七层模型二、TCP/IP 四层模型三、运行协议及设备1. OSI 七层模型2. TCP/IP 四层模型3. 运行协议4. 各类设备的作用 总结 前言 OSI 七层模型和四层模型(TCP/IP 模型)是两种常见的网络协议分层架构,它们的主要区别如下&a…...
将代理连接到 Elasticsearch 使用模型上下文协议
作者:来自 Elastic Jedr Blaszyk 及 Joe McElroy 让我们使用 Model Context Protocol 服务器 与 你的 数据 在 Elasticsearch 中聊天。 如果与你的数据交互像与同事聊天一样轻松,会怎样?想象一下,你只需简单地问:“显…...
前端调试实践与案例场景
前端调试实践与案例场景 前端开发中,调试是一项必不可少的技能。以下是一些常见的前端调试实践和相应的案例场景: 1. 浏览器开发者工具 案例场景:布局问题 用户报告在移动设备上页面布局错乱。使用 Chrome DevTools 的设备模拟功能和 Ele…...
安卓的布局方式
一、RelativeLayout 相对布局 特点:每个组件相对其他的某一个组件进行定位。 (一)主要属性 1、设置和父组件的对齐: alignParentTop : 设置为true,代表和父布局顶部对齐。 其他对齐只需要改变后面的Top为 Left、Right 或者Bottom&…...
计算机网络面经(一)
以下为个人总结,图源大部分会来自网络和JavaGuide 网络分层模型 OSI七层模型 各层的常见协议 应用层 用户接口 HTTP, FTP, SMTP, DNS表示层 数据格式转换 SSL/TLS, JSON, JPEG会话层 会话管理 NetBIOS, RPC, SSH传输层 端到端通信 TCP, UDP, QUIC网络层 路由寻址…...
k8s日志管理
k8s日志管理 k8s查看日志查看集群中不是完全运行状态的pod查看deployment日志查看service日志进入pod的容器内查看日志 管理k8s组件日志kubectl logs查看日志原理 管理k8s应用日志收集k8s日志思路收集标准输出收集容器中日志文件 k8s查看节点状态失败k8s部署prometheus监控 k8s…...
Netty源码—10.Netty工具之时间轮二
大纲 1.什么是时间轮 2.HashedWheelTimer是什么 3.HashedWheelTimer的使用 4.HashedWheelTimer的运行流程 5.HashedWheelTimer的核心字段 6.HashedWheelTimer的构造方法 7.HashedWheelTimer添加任务和执行任务 8.HashedWheelTimer的完整源码 9.HashedWheelTimer的总结…...
Baklib激活企业知识管理新动能
Baklib核心技术架构解析 Baklib的底层架构以模块化设计为核心,融合知识中台的核心理念,通过分布式存储引擎与智能语义分析系统构建三层技术体系。数据层采用多源异构数据接入协议,支持文档、音视频、代码片段等非结构化数据的实时解析与分类…...
CSP-J/S冲奖第21天:插入排序
一、插入排序概念 1.1 生活中的类比 • 扑克牌排序:就像整理手中的扑克牌,每次将一张牌插入到已排好序的牌中合适位置 • 动态演示: 初始序列:[5, 2, 4, 6, 1, 3] 排序过程: → [2, 5, 4, 6, 1, 3] → [2, 4, 5, 6, …...
Jest系列二之基础实践
Jest基础实践 官方文档地址:https://jest.nodejs.cn/docs 生命周期 在 Jest 中,生命周期方法大致分为两类:下面所罗列的生命周期方法,也是全局方法,不需要引入,直接就可以使用。 重复性的生命周期方法&…...
Scikit-learn全攻略:从入门到工业级应用
Scikit-learn全攻略:从入门到工业级应用 引言:Scikit-learn在机器学习生态系统中的核心地位 Scikit-learn作为Python最受欢迎的机器学习库,已成为数据科学家的标准工具集。根据2023年Kaggle调查报告,超过83%的数据专业人士在日常工作中使用Scikit-learn。本文将系统性地介…...
基于Python的图书馆信息管理系统研发
标题:基于Python的图书馆信息管理系统研发 内容:1.摘要 在数字化信息快速发展的背景下,传统图书馆管理方式效率低下,难以满足日益增长的信息管理需求。本研究旨在研发一款基于Python的图书馆信息管理系统,以提高图书馆信息管理的效率和准确性…...
Pytorch学习笔记(十七)Image and Video - Adversarial Example Generation
这篇博客瞄准的是 pytorch 官方教程中 Image and Video 章节的 Adversarial Example Generation 部分。 官网链接:https://pytorch.org/tutorials/beginner/fgsm_tutorial.html 完整网盘链接: https://pan.baidu.com/s/1L9PVZ-KRDGVER-AJnXOvlQ?pwdaa2m 提取码: …...
基于Arm GNU Toolchain编译生成的.elf转hex/bin文件格式方法
基于Arm GNU Toolchain编译生成的.elf转hex/bin文件格式方法 已经弃用的版本(Version 10.3-2021.10):gcc-arm-none-eabi:https://developer.arm.com/downloads/-/gnu-rmArm GNU Toolchain当前版本:https://developer.a…...
Ubuntu系统Docker安装失败
问题: 1. 删除错误的 Docker 源 sudo rm -rf /etc/apt/sources.list.d/docker.list sudo rm -rf /etc/apt/keyrings/docker.gpg 2. 重新添加 Docker 官方 GPG 密钥 sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | …...
鸿蒙学习手册(HarmonyOSNext_API16)_数据持久化②:键值型数据库
概述 键值型数据库就像一个大抽屉柜,每个抽屉都有一个唯一的标签(键),里面可以放任何东西(值)。当你需要存或取东西时,直接看标签拿对应的抽屉就行,不用管其他抽屉里有什么。这种简…...
多线程 - 线程安全 2 -- > 死锁问题
目录 小结复习: 线程安全: 如何解决线程安全问题? synchronized “死锁” 死锁的三种经典场景: 1. 一个线程,一把锁。 2.两个线程,两把锁。 3. N 个线程 M 把锁 完! 小结复习:…...
JavaScript函数详解
目录 一、函数的基础概念 1. 函数的定义方式 2. 函数的参数处理 3.匿名函数与立即执行函数 4.同名函数与函数提升 二、函数的作用域与闭包 1. 作用域(Scope) 2. 闭包(Closure) 三、高阶函数与函数式编程 1. 高阶函数 2…...
Python-八股总结
目录 1 python 垃圾处理机制2 yield3 python 多继承,两个父类有同名方法怎么办?4 python 多线程/多进程/协程4.1 多线程与GIL全局解释器锁4.2 多进程4.3 协程 5 乐观锁/悲观锁6 基本数据结构**1. 列表(List)****2. 元组࿰…...
整合分块请求大模型返回的测试用例及小工具显示bug修复
在之前的分块发送需求数据给大模型进行测试用例生成时,由于数据结构的改变,需要对分块的回复进行整合,正确的整合是保障系统稳定性和功能正确性的核心。随着测试需求的复杂化,这对测试工程师提出了更高的整合和管理要求。本文将为…...
记一道CTF题—PHP双MD5加密+”SALT“弱碰撞绕过
通过分析源代码并找到绕过限制的方法,从而获取到flag! 部分源码: <?php $name_POST[username]; $passencode(_POST[password]); $admin_user "admin"; $admin_pw get_hash("0e260265122865008095838959784793");…...
stm32F103RCT6 FLASH模拟EEPROM 读写32位数据
#include “stm32flash.h” #ifndef __STMFLASH_H__ #define __STMFLASH_H__ #include "main.h" #define</...
Spring Data审计利器:@LastModifiedDate详解!!!
🕒 Spring Data审计利器:LastModifiedDate详解🔥 🌟 简介 在数据驱动的应用中,记录数据的最后修改时间是常见需求。Spring Data的LastModifiedDate注解让这一过程自动化成为可能!本篇带你掌握它的核心用法…...
【SLURM】介绍
SLURM Slurm(Simple Linux Utility for Resource Management) 是一个用于管理和调度计算集群任务的开源作业调度系统。它主要用于高性能计算(HPC)环境,比如超算中心、大学的计算集群或企业的数据中心。 本文主要针对使…...
算法-贪心算法
圣诞老人的礼物-Santa Clau’s Gifts 现在有多箱不同的糖果,每箱糖果有自己的价值和重量,每箱糖果都可以拆分成任意散装组合带走。圣 诞老人的驯鹿雪橇最多只能装下重量W的糖果,请 问圣诞老人最多能带走多大价值的糖果。 输入 第一行由两个…...
Nginx — Nginx处理Web请求机制解析
一、Nginx请求默认页面资源 1、配置文件详解 修改端口号为8080并重启服务: 二、Nginx进程模型 1、nginx常用命令解析 master进程:主进程(只有一个) worker进程:工作进程(可以有多个,默认只有一…...
GAN随手笔记
文章目录 1. description2. code 1. description 后续整理 GAN是生成对抗网络,主要由G生成器,D判别器组成,具体形式如下 D 判别器: G生成器: 2. code 部分源码,暂定,后续修改 import nump…...
Java 8 时区与历法处理指南:跨越全球的时间管理
Java 8 的 java.time API 不仅修复了旧版日期时间 API 的设计缺陷,还提供了对时区和多历法的全面支持。无论是处理全球化应用的时区转换,还是适配不同文化的日历系统,Java 8 都能轻松应对。本文将深入解析其核心功能,并提供实用代…...
【STM32】对stm32F103VET6指南者原理图详解(超详细)
目录 一、原理图基本概念二、STM32F103VET6 的主要特性二、MCU模块三、电源模块四、时钟模块五、复位模块NRST 六、GPIO模块LED 七、调试模块JTAG 八、外设模块UARTSPII2CADC 九、其它模块BOOT 一、原理图基本概念 原理图/电路图通常由硬件工程师使用Altium Designer/ KiCad / …...
瑞芯微RKRGA(librga)Buffer API 分析
一、Buffer API 简介 在瑞芯微官方的 librga 库的手册中,有两组配置 buffer 的API: importbuffer 方式: importbuffer_virtualaddr importbuffer_physicaladdr importbuffer_fd wrapbuffer 方式: wrapbuffer_virtualaddr wrapb…...
移动端六大语言速记:第1部分 - 基础语法与控制结构
移动端六大语言速记:第1部分 - 基础语法与控制结构 本文将对比Java、Kotlin、Flutter(Dart)、Python、ArkTS和Swift这六种移动端开发语言的基础语法与控制结构,帮助开发者快速理解各语言间的差异与共性。 1. 基础语法 1.1 数据类型 各语言的基本数据…...
Java 大视界 -- Java 大数据在智能金融区块链跨境支付与结算中的应用(154)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
Python Playwright库全面详解
Playwright 是 Microsoft 开发的一个现代化的端到端测试和浏览器自动化库,支持 Chromium、WebKit 和 Firefox 浏览器。它提供了跨浏览器、跨平台的自动化能力,且具有高性能和可靠性。 一、核心特性 多浏览器支持: Chromium (Chrome, Edge)We…...
脑疾病分类的疑惑【6】:脑疾病分类比较适合使用具有哪些特点的模型?
脑疾病分类是一个复杂的任务,涉及医学影像、神经电生理信号、基因数据等多种信息类型。为了有效地进行脑疾病分类,选择合适的模型是至关重要的。以下是一些适合脑疾病分类的模型特点,您可以参考这些特点来选择合适的模型: 1. 深度…...
24_原型和原型链_this
目录 一、this关键字 修改this的指向 二、原型和原型链 三、创建对象 通过构造函数创建 (es5) 通过类创建 (es6) 四、浅拷贝和深拷贝 ctrlc 浅拷贝: 只拷贝一层 深拷贝: 可以拷贝多层 一、this关键字 每个函…...
自定义类型:结构体(1)
1.结构体回顾 结构是一些值的集合,这些值被称为成员变量。结构的每个成员可以是不同类型的变量。 1.1结构的声明 struct tag {member-list; }variable-list;例如描述一个学生: struct Stu {char name[20];int age;char sex[5]; }; 1.2结构体变量的创…...
Java进阶——Lombok的使用
Lombok可以通过注解的方式,在编译时自动生成 getter、setter、构造函数、toString 等样板代码,从而减少代码的冗余,提高开发效率。本文深入讲解Lombok在实际开发中的使用。 本文目录 1. Lombok 依赖添加2. 常用Lombok注解及使用场景2.1 Gette…...
饿了么 bx-et 分析
声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 逆向分析 import requests bx_et re…...
python黑科技:无痛修改第三方库源码
需求不符合 很多时候,我们下载的 第三方库 是不会有需求不满足的情况,但也有极少的情况,第三方库 没有兼顾到需求,导致开发者无法实现相关功能。 如何通过一些操作将 第三方库 源码进行修改,是我们将要遇到的一个难点…...
PGD对抗样本生成算法实现(pytorch版)
PGD对抗样本生成算法 一、理论部分1.1 PGD 原理(1) 数学形式(2) 核心改进1.2 PGD 与其他攻击对比1.3 注意事项二、代码实现2.1 导包2.2 数据加载和处理2.3 网络构建2.4 模型加载2.5 生成对抗样本2.6 对抗测试2.7 启动攻击2.8 效果展示一、理论部分 1.1 PGD 原理 PGD 是 BIM/I-…...
小智机器人相关函数解析,BackgroundTask::Schedule (***)将一个回调函数添加到后台任务队列中等待执行
以下是对 BackgroundTask::Schedule 函数代码的详细解释: void BackgroundTask::Schedule(std::function<void()> callback) {std::lock_guard<std::mutex> lock(mutex_);if (active_tasks_ > 30) {int free_sram heap_caps_get_free_size(MALLOC_…...
C++学习之路:深入理解变量
目录 编程的本质变量的本质内存模型、变量名与值以及地址的关系数据类型C数据类型数据类型别名数据类型转换 变量作用域总结 编程的本质 编程的本质是什么?虽然程序里能实现很多复杂的逻辑,但是从底层的硬件上来看,编程的本质就是数据的搬移。…...