JAVA学习记录4
文章为个人学习记录,仅供参考,如有错误请指出。
上期说到IDEA的安装,具体的使用方法就不记录了。这篇主要记录一些基础语法。
类型转换-自动类型转换
类型范围小的变量,可以直接赋值给类型范围大的变量。
在表达式中,小范围类型的变量,会自动转换成表达式中较大范围的类型,再参与运算。
由小到大:byte–>short / char–>int–>long–>float–>double
注意!表达式的最终结果类型由表达式中的最高类型决定;在表达式中,byte、short、char是直接转换成int类型参与运算的。
类型转换-强制类型转换
类型范围大的变量,不可以直接赋值给类型范围小的变量,会报错,需要强制类型转换。
格式:数据类型 变量2 = (数据类型)变量1、数据
注意!强制类型转换可能会造成数据(丢失)溢出,浮点型强转成整型,直接丢掉小数部分,保留整数部分返回。
基本的算术运算符
| 符号 | 作用 | 说明 |
|---|---|---|
| + | 加 | 相加 |
| - | 减 | 相减 |
| * | 乘 | 与“×”相同,相乘 |
| / | 除 | 与“÷”相同,相除,注意!在Java中两个整数相除结果还是整数 |
| % | 取余 | 获取两个数据做除法之后的余数 |
“+”符号在Java中的特殊用途:
“+”符号在有些情况下可以做连接符。
“+”符号与字符串运算时是用作连接符的,其结果依然是一个字符串。
注意!如何识别“+”符号是做运算,还是做连接:能算则算,不能算就连接在一起。
如,“abc” + 5 --> “abc5”;5 + 5 --> “10”。
自增自减运算符
| 符号 | 作用 |
|---|---|
| 自增++ | 放在某个变量前面或者后面,对变量自身的值加1 |
| 自减– | 放在某个变量前面或者后面,对变量自身的值减1 |
注意!++、–只能操作变量,不能操作字面量,如a++(✓),2++(×)。
赋值运算符
基本赋值运算符
就是“=”,从右边往左看。
扩展赋值运算符
| 符号 | 用法 | 作用 | 底层代码形式 |
|---|---|---|---|
| += | a+=b | 加后赋值 | a=(a的类型)(a+b) |
| -= | a-=b | 减后赋值 | a=(a的类型)(a-b) |
| *= | a*=b | 乘后赋值 | a=(a的类型)(a*b) |
| /= | a/=b | 除后赋值 | a=(a的类型)(a/b) |
| %= | a%=b | 取余后赋值 | a=(a的类型)(a%b) |
注意!扩展的赋值运算符隐含了强制类型转换。
关系运算符、三元运算符
| 符号 | 例子 | 作用 | 结果 |
|---|---|---|---|
| > | a>b | 判断a是否大于b | 成立返回true,不成立返回false |
| >= | a>=b | 判断a是否大于或者等于b | 成立返回true,不成立返回false |
| < | a<b | 判断a是否小于b | 成立返回true,不成立返回false |
| <= | a<=b | 判断a是否小雨或者等于b | 成立返回true,不成立返回false |
| == | a==b | 判断a是否等于b | 成立返回true,不成立返回false |
| != | a!=b | 判断a是否不等于b | 成立返回true,不成立返回false |
逻辑运算符
把多个条件放在一起运算,最终返回布尔类型的值:true、false。
| 符号 | 名称 | 例子 | 运算逻辑 |
|---|---|---|---|
| & | 逻辑与 | 2>1&3>2 | 多个条件必须都是true,结果才是true;有一个是false结果就是false |
| 逻辑或 | 2>1|3<5 | ||
| ! | 逻辑非 | !(2>1) | 取反,!truefalse、!falsetrue |
| ^ | 逻辑亦或 | 2>1^3>1 | 前后条件的结果相同,就直接返回false;前后条件的结果不同,才返回true |
| 符号 | 名称 | 例子 | 运算逻辑 |
|---|---|---|---|
| && | 短路与 | 2>10&&3>2 | 判断结果与“&”一样,过程不同:左边为false,右边则不执行 |
| | | 短路或 | 2>1| |
注意!在Java中,“&”、“|”:无论左边是false还是true,右边都要执行。由于“&&、||”运算效率更高,在开发中用的更多。
switch分支结构
通过比较值是否相等,来决定执行哪条分支。
switch分支的执行流程:
-
先执行表达式的值,再拿这个值去与case后的值进行匹配。
-
在哪个case后的值匹配为true就执行哪个case块的代码,遇到break就跳出switch分支。
-
如果全部case后的值与之匹配都是false,则执行default块的代码。
if、switch的比较:各自适合什么业务场景?
-
if在功能上远远强大于switch。
-
当前条件是区间的时候,建议使用if分支结构来实现。
-
当条件是与一个一个的值比较的时候,建议用switch更合适(格式良好,性能较好,代码优雅)。
注意!
-
表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String、不支持double、float、long。
-
case给出的值不允许重复,且只能是字面量,不能是变量。如case 1(✓),case a(×)。
-
正常使用switch的时候,不要忘记写break,否则会出现穿透现象。
break,continue
break:跳出并结束当前所在循环的执行。
continue:用于跳出当前循环的当次执行,直接进入循环的下一次执行。
注意!
break:只能用于结束所在循环或者结束所在switch分支的执行。
continue:只能在循环中进行使用。
死循环
可以一直执行下去的一种循环,如果没有干预不会停下来。通常用在服务器程序中。
写法:
for(;;){System.out.println("Hello World1");
}while(true){System.out.println("Hello World2");
}//经典写法do{System.out.println("Hello World3");
}while(true);
相关文章:
JAVA学习记录4
文章为个人学习记录,仅供参考,如有错误请指出。 上期说到IDEA的安装,具体的使用方法就不记录了。这篇主要记录一些基础语法。 类型转换-自动类型转换 类型范围小的变量,可以直接赋值给类型范围大的变量。 在表达式中&…...
手机网络性能测试仪器介绍
手机网络性能测试仪器是用于检测和评估手机网络性能的精密设备。这些仪器通常具备多种测试功能,以确保手机在不同网络环境下的表现都能得到准确评估。以下是对手机网络性能测试仪器的详细介绍: 一、主要类型 手机综合测试仪:如R&SCMU200…...
vue3+ts watch 整理
watch() 一共可以接受三个参数,侦听数据源、回调函数和配置选项 作用:监视数据的变化(和Vue2中的watch作用一致) 特点:Vue3中的watch只能监视以下四种数据: ref定义的数据。 reactive定义的数据。 函数返…...
【Elasticsearch入门到落地】6、索引库的操作
接上篇《5、安装IK分词器》 上一篇我们进行了IK分词器的安装与测试,本篇我们来学习ElasticSearch的索引库的操作,学习mapping映射属性以及CRUD操作。 一、前情回顾 我们在前几篇学习了ElasticSearch的基本概念,并动手搭建了ElasticSearch环…...
Java TCP可靠传输(1)
TCP 可靠传输 一. 确认应答 由发送方填充,再由接收方在序号的基础上1,填充到确认序号中,来表示已经接收到前面发送的,表明下一个从哪个位置发送。 二. 超时重传 数据在网络上传输时会经过很多网络设备,如果其中一个…...
ipad和macbook同步zotero文献附件失败的解决办法
背景:我所有的文献及其附件pdf都是在台式机(windows系统),想要把这些文献同步到云上,然后再从云上同步到平板和其他笔记本电脑比如macbook。文献同步虽已成功,但文献附件都无法打开。 平板报错如下…...
linux-ubuntu学习笔记碎记
~指/home/user_name这个目录 查看软件安装目录:whereis vim 查看当前路径:pwd 终端中键入ctrls会挂起终端,即终端不响应键鼠;ctrlq可以恢复。 和虚拟机开启共享文件夹互传文件 点击桌面,按ctrlaltt,开…...
RV1126+FFMPEG推流项目(11)编码音视频数据 + FFMPEG时间戳处理
本节介绍本章节主要讲解的是push_server_thread线程的具体处理流程, push_server_thread这个线程的主要功能是通过时间戳比较,来处理音频、视频的数据并最终推流到SRT、RTMP、UDP、RTSP服务器 push_server_thread:流程如下 上图,…...
人工智能的出现,给生命科学领域的研究带来全新的视角|行业前沿·25-01-22
小罗碎碎念 今天和大家分享一份白皮书,系统总结并陈述人工智能在生命科学领域的应用。 人工智能在生命科学领域的应用,具体包括——单细胞转录组、疾病诊疗、医疗文本处理、RNA结构预测等多个方面,通过这份报告,我们可以详细了解相…...
python注释格式总结
三个双引号的用于文件,类,函数注释。 没有统一的规定,以下是比较清晰的写法。 文件注释(文件顶部):文件用途空行作者信息(每行一个键:值) 类注释(类名下行)…...
Django实现数据库的表间三种关系
Django实现数据库的表间三种关系 1. 一对多(One-to-Many)关系示例:关系说明:查询示例: 2. 一对一(One-to-One)关系示例:关系说明:查询示例: 3. 多对多&#x…...
C++蓝桥真题讲解
本篇文章和大家一起来试试一些简单的蓝桥真题 注意:本篇文章将全程使用devc和蓝桥官网,如果有小伙伴找不到devc安装包的可以本篇文章中下载。 赛前必知点 1.正式比赛时,先从蓝桥官网下载题目文档,然后用devc进行编译,…...
【21】Word:德国旅游业务❗
目录 题目 NO1.2.3 NO4 NO5.6 NO7 NO8.9.10.11 题目 NO1.2.3 F12:另存为布局→页面设置→页边距:上下左右选中“德国主要城市”→开始→字体对话框→字体/字号→文本效果:段落对话框→对齐方式/字符间距/段落间距 NO4 布局→表对话框…...
如何分辨ddos攻击和cc攻击?
DDoS(分布式拒绝服务)攻击和 CC(Challenge Collapsar)攻击都属于网络攻击手段,主要通过消耗目标服务器资源使其无法正常提供服务,但它们在攻击原理、攻击特征等方面存在区别: 攻击原理 DDoS 攻…...
enum EPOLL_EVENTS详解
enum EPOLL_EVENTS 是 Linux 中 epoll 机制的核心定义之一,它定义了 epoll 支持的所有事件类型。每个事件类型对应一个唯一的位掩码(bitmask),通过按位或(|)可以组合多个事件类型,通过按位与&am…...
阿里前端开发规范
文章目录 1. 为什么前端写代码要规范?一、代码规范的必要性二、 规范带来的好处 2. 资源一、推荐 1. 为什么前端写代码要规范? 一、代码规范的必要性 可维护性 统一的代码风格便于理解和修改减少代码维护成本降低项目交接难度 团队协作 提高团队开发效…...
从函数式编程到响应式编程:现代开发中的范式转变
引言 随着软件开发领域的不断进化,编程范式也在经历着一场又一场的变革。从面向过程到面向对象,再到近年来流行的函数式编程和响应式编程,开发者正逐步适应不同的编程思想来解决现代软件开发中的复杂问题。本文将带你了解函数式编程和响应式编…...
Django学习笔记(启动项目)-03
Django学习笔记(启动项目)-03 1、在urls文件中配置一个路由url 2、在views文件中创建视图函数 3、启动项目测试结果 # 输入项目启动命令 python manage.py runserver4、创建HTML模版和静态文件 1、在templates文件夹中创建一个html 2、创建url路由与视图函数 3、测试效果 4、…...
量变引起质变
量变引起质变,这个是最本质的规律,重复进行一件事情,这件事情就会越来越完善,越来越完美,哪怕是菜鸟,重复多了就是大佬。 我从说话结结巴巴,到说话流畅,只是用了15天直播写代码&…...
NewStar CTF week1 web wp
谢谢皮蛋 做这题之前需要先去学习一些数据库的知识 1 order by 2 1可以理解为输入的id,是一个占位符,按第二列排序用来测试列数,如果没有两列则会报错-1 union select 1,2 -1同样是占位符,union的作用是将注入语句合并到原始语句…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
LRU 缓存机制详解与实现(Java版) + 力扣解决
📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...
认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...
[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG
TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...
区块链技术概述
区块链技术是一种去中心化、分布式账本技术,通过密码学、共识机制和智能合约等核心组件,实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点:数据存储在网络中的多个节点(计算机),而非…...
