当前位置: 首页 > article >正文

Java-模块二-2

整数类型

  • byte:在 Java 中占用8位(1字节),因此它的取值范围是从 -128 到 127。这是最小的整数类型,适合用于节省空间的情况。

  • short:这种类型的大小是16位(2字节),允许的数值范围从 -32,768 到 32,767。当需要比 byte 更大的数值范围但又不想使用更大的存储空间时,可以使用 short 类型。

  • int:作为最常用的整数类型,int 占用32位(4字节),支持的数值范围从 -2,147,483,648 到 2,147,483,647。它适用于大多数整数运算场景。

  • long:这是一种64位(8字节)的数据类型,提供了极大的数值范围,从 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。当你需要处理超出 int 范围的数值时,可以选择 long

浮点类型

  • float:这是一种单精度浮点数类型,占用32位(4字节)。它可以表示大约7位有效数字的数值范围,适用于需要小数点数值且对精度要求不是特别高的情况。

  • double:双精度浮点数占用64位(8字节),能够提供大约15位的有效数字。对于需要高精度的小数运算,通常推荐使用 double 类型。

字符类型

  • char:字符类型占用16位(2字节),基于Unicode编码,意味着它可以表示一个广泛的字符集中的任何一个字符。其取值范围是0到65,535,对应于Unicode字符集中的字符。

布尔类型

  • boolean:布尔类型用于表示逻辑值,仅有两个可能的值:truefalse。尽管它的实际内存大小没有明确规定,但它仅限于这两个值之一,用于条件判断和控制流程。

变量的运算

1)算术运算

算术运算是最常见的运算类型,用于执行数学计算。常见的算术运算符包括:

  • +:加法
  • -:减法
  • *:乘法
  • /:除法
  • %:取模(求余数)
  • ++:自增(增加1)
  • --:自减(减少1)

示例:

int a = 10;
int b = 3;
int sum = a + b; // 加法,sum = 13
int diff = a - b; // 减法,diff = 7
int product = a * b; // 乘法,product = 30
int quotient = a / b; // 整数除法,quotient = 3(只保留整数部分)
int remainder = a % b; // 取模,remainder = 1
a++; // 自增,a = 11
b--; // 自减,b = 2

注意:

  • 如果两个整数相除,结果会是整数(小数部分会被截断)。如果需要浮点数结果,至少一个操作数应该是浮点数。
  • 取模运算的结果符号与被除数相同。

(2)关系运算

关系运算用来比较两个变量或值,返回布尔值(truefalse)。常见关系运算符包括:

  • ==:等于
  • !=:不等于
  • >:大于
  • <:小于
  • >=:大于等于
  • <=:小于等于

示例:

int x = 5;
int y = 10;
boolean isEqual = (x == y); // false
boolean isNotEqual = (x != y); // true
boolean isGreater = (x > y); // false
boolean isLessOrEqual = (x <= y); // true

(3)逻辑运算

逻辑运算用于对布尔值进行组合或操作,返回布尔值。常见逻辑运算符包括:

  • &&:逻辑与(AND),当且仅当两个操作数都为 true 时返回 true
  • ||:逻辑或(OR),当任意一个操作数为 true 时返回 true
  • !:逻辑非(NOT),反转布尔值

示例:

boolean a = true;
boolean b = false;
boolean result1 = a && b; // false
boolean result2 = a || b; // true
boolean result3 = !a; // false

短路特性:

  • &&|| 具有短路特性。例如,在 a && b 中,如果 afalse,则不会计算 b 的值,因为整个表达式已经确定为 false

(4)位运算

位运算直接对变量的二进制位进行操作。常见位运算符包括:

  • &:按位与
  • |:按位或
  • ^:按位异或
  • ~:按位取反
  • <<:左移
  • >>:右移(带符号)
  • >>>:无符号右移

示例:

int a = 6; // 二进制:0110
int b = 3; // 二进制:0011
int andResult = a & b; // 按位与:0010(十进制:2)
int orResult = a | b; // 按位或:0111(十进制:7)
int xorResult = a ^ b; // 按位异或:0101(十进制:5)
int notResult = ~a; // 按位取反:11111111111111111111111111111001(十进制:-7)
int shiftLeft = a << 1; // 左移一位:1100(十进制:12)
int shiftRight = a >> 1; // 右移一位:0011(十进制:3)

(5)赋值运算

赋值运算将右侧的值赋给左侧的变量。常见的赋值运算符包括:

  • =:简单赋值
  • +=:加后赋值
  • -=:减后赋值
  • *=:乘后赋值
  • /=:除后赋值
  • %=:取模后赋值
  • <<=>>=>>>=:位移后赋值

示例:

int x = 10;
x += 5; // 等价于 x = x + 5,x = 15
x -= 3; // 等价于 x = x - 3,x = 12
x *= 2; // 等价于 x = x * 2,x = 24
x /= 4; // 等价于 x = x / 4,x = 6
x %= 5; // 等价于 x = x % 5,x = 1

2. 运算注意事项

  • 数据类型转换:

    • 当不同数据类型参与运算时,Java 会自动进行类型提升(隐式转换)。例如,intdouble 运算时,int 会被提升为 double
    • 如果需要显式转换,可以使用强制类型转换(如 (int))。

    示例:

    int a = 5;
    double b = 2.5;
    double result = a + b; // 自动提升为 double,result = 7.5
    int truncated = (int) result; // 强制转换为 int,truncated = 7
    
  • 溢出问题:

    • 如果变量的值超出了其数据类型的取值范围,会导致溢出。例如,byte 类型的最大值是 127,如果对其加 1,则会溢出为 -128。

    示例:

    byte b = 127;
    b++; // 溢出,b = -128
    
  • 运算符优先级:

    • 不同运算符有不同的优先级。例如,*/ 的优先级高于 +-
    • 使用括号可以改变优先级。

    示例:

    int result = 10 + 5 * 2; // 先乘后加,result = 20
    int resultWithParentheses = (10 + 5) * 2; // 先加后乘,resultWithParentheses = 30
    

3. 总结

变量的运算是编程中的核心内容,涵盖了算术、关系、逻辑、位运算以及赋值等多种操作。掌握这些运算规则及其注意事项,可以帮助你编写高效、安全的代码。不同类型的数据在运算时需要注意类型转换和溢出等问题,以避免潜在的错误。

转义字符

1. 常见转义字符

(1)换行符:\n
  • 表示换行。

  • 将光标移动到下一行的开头。

  • 示例:

    System.out.println("Hello\nWorld");
    // 输出:
    // Hello
    // World
    
(2)水平制表符:\t
  • 插入一个水平制表位,通常相当于 4 或 8 个空格。
  • 示例:
    System.out.println("Name:\tAlice");
    // 输出:
    // Name:    Alice
    
(3)反斜杠:\\
  • 用于表示一个反斜杠字符本身。

  • 示例:

    System.out.println("C:\\Program Files\\Java");
    // 输出:
    // C:\Program Files\Java
    
(4)双引号:\"
  • 用于表示字符串中的双引号字符。

  • 示例:

    System.out.println("He said, \"Hello!\"");
    // 输出:
    // He said, "Hello!"
    
(5)单引号:\'
  • 用于表示字符字面量中的单引号字符。

  • 示例:

    char singleQuote = '\'';
    System.out.println(singleQuote);
    // 输出:
    // '
    
(6)退格符:\b
  • 表示退格操作,将光标回退一格。

  • 示例:

    System.out.println("Hello\bWorld");
    // 输出:
    // HellWorld
    
(7)回车符:\r
  • 表示回车操作,将光标移动到当前行的开头。
  • 示例:
    System.out.println("Hello\rWorld");
    // 输出:
    // World
    
(8)换页符:\f
  • 表示换页操作,主要用于打印机等设备。
  • 示例:
    System.out.println("Page1\fPage2");
    // 输出:
    // Page1
    // (分页效果)
    
(9)Unicode 字符:\uXXXX
  • 用于表示 Unicode 字符,其中 XXXX 是四位十六进制数。

  • 示例:

    System.out.println("\u0041"); // 输出字符 'A'
    

2. 转义字符的应用场景

(1)处理文件路径

在 Windows 系统中,文件路径中使用反斜杠(\),但在 Java 字符串中需要对反斜杠进行转义。

String filePath = "C:\\Users\\Alice\\Documents\\file.txt";
System.out.println(filePath);
// 输出:
// C:\Users\Alice\Documents\file.txt
(2)格式化输出

使用 \n\t 可以轻松实现换行和对齐。

System.out.println("Name:\tAlice\nAge:\t25");
// 输出:
// Name:   Alice
// Age:    25
(3)嵌入特殊字符

如果需要在字符串中包含双引号或单引号,可以使用转义字符。

System.out.println("She said, \"It's a beautiful day!\"");
// 输出:
// She said, "It's a beautiful day!"
(4)Unicode 字符支持

使用 \uXXXX 可以插入任何 Unicode 字符。

System.out.println("Smile: \u263A"); // 输出笑脸符号 ☺

3. 注意事项

  • 转义字符仅适用于字符串和字符字面量

    • 转义字符只能出现在字符串("...")或字符('...')中。
    • 如果在其他地方使用(如注释中),则不会被解析为转义字符。
  • 非法转义字符会导致编译错误

    • 如果使用了未定义的转义字符(如 \z),编译器会报错。

    • 示例:

      System.out.println("Invalid escape sequence: \z");
      // 编译错误:Illegal escape character in string literal
      
  • 转义字符的长度

    • 转义字符被视为单个字符。例如,'\n' 的长度为 1。

float和double的区别

在 Java 中,float 和 double 都是用于表示浮点数的数据类型,但它们之间存在一些重要的区别。这些差异主要体现在精度、取值范围以及内存占用等方面。

  1. 精度
    float:单精度浮点数,提供大约7位有效数字的精度。
    double:双精度浮点数,提供大约15位有效数字的精度。
    由于 double 提供更高的精度,所以在需要高精度计算时通常推荐使用 double 类型。

  2. 取值范围
    float:
    取值范围大约是从 ±3.4E-38 到 ±3.4E+38。
    占用32位(4字节)存储空间。
    double:
    取值范围大约是从 ±1.7E-308 到 ±1.7E+308。
    占用64位(8字节)存储空间。
    因此,double 不仅提供了更高的精度,还拥有更广的数值范围。

  3. 内存占用
    float:因为是单精度浮点数,所以占用较少的内存(32位/4字节),适用于对内存使用有严格要求的情况。
    double:作为双精度浮点数,它占用更多的内存(64位/8字节),但在大多数现代计算机上,这点额外的开销通常是可接受的,尤其是考虑到其提供的更高精度和更广的数值范围。

  4. 默认类型
    在 Java 中,如果一个浮点数没有特别指定为 float 类型,默认它是 double 类型。例如,直接写出 3.14 是一个 double 值,而要将其定义为 float 类型,则需要在其后加上 f 或 F,如 3.14f。

  5. 应用场景
    float:当程序对内存使用非常敏感,且不需要非常高精度的浮点数运算时(比如图形处理、游戏开发等),可以考虑使用 float。
    double:对于科学计算、工程应用或其他需要高精度浮点数运算的应用场景,建议使用 double。
    示例代码


float floatVar = 3.14f; // 使用 'f' 后缀来声明 float 变量
double doubleVar = 3.14; // 默认为 double 类型System.out.println("Float value: " + floatVar);
System.out.println("Double value: " + doubleVar);

相关文章:

Java-模块二-2

整数类型 byte&#xff1a;在 Java 中占用8位&#xff08;1字节&#xff09;&#xff0c;因此它的取值范围是从 -128 到 127。这是最小的整数类型&#xff0c;适合用于节省空间的情况。 short&#xff1a;这种类型的大小是16位&#xff08;2字节&#xff09;&#xff0c;允许的…...

Redis、Memcached应用场景对比

环境 Redis官方网站&#xff1a; Redis - The Real-time Data Platform Redis社区版本下载地址&#xff1a;Install Redis | Docs Memcached官方网站&#xff1a;memcached - a distributed memory object caching system Memcached下载地址&#xff1a;memcached - a dis…...

【单片机通信技术应用——学习笔记三】液晶屏显示技术,取模软件的应用

一、液晶显示技术简介 1.RGB信号线 RGB是一种色彩模式&#xff0c;是工业界的一种颜色标准&#xff0c;是通过红&#xff08;R&#xff09;、绿&#xff08;G&#xff09;、蓝&#xff08;B&#xff09;三个颜色通道的变化&#xff0c;以及它们相互之间的叠加来得到各式各样的…...

MySQL颠覆版系列————MySQL新特性(开启数据库的新纪元)上篇

文章目录 前言一、窗口函数&#xff08;Window Functions&#xff09;1.1 窗口函数概念1.2 常见的窗口函数 二、公用表表达式&#xff08;Common Table Expressions, CTEs&#xff09;2.1 公用表表达式的概念2.2 常见的公用表表达式 三、JSON增强3.1 JSON增强的概念3.2 常见的J…...

MySQL 调优:查询慢除了索引还能因为什么?

文章目录 情况一&#xff1a;连接数过小情况二&#xff1a;Buffer Pool 太小 MySQL 查询慢除了索引还能因为什么&#xff1f;MySQL 查询慢&#xff0c;我们一般也会想到是因为索引&#xff0c;但除了索引还有哪些原因会导致数据库查询变慢呢&#xff1f; 以下以 MySQL 中一条 S…...

Java实习生面试题(2025.3.23 be)

一、v-if与v-show的区别 v-show 和 v-if 都是 Vue 中的条件渲染指令&#xff0c;它们的主要区别在于渲染策略&#xff1a;v-if 会根据条件决定是否编译元素&#xff0c;而 v-show 则始终编译元素&#xff0c;只是通过改变 CSS 的 display 属性来控制显示与隐藏。 二、mybatis-…...

如何在百度搜索上删除与自己名字相关的资料

个人信息的网络足迹如同一张无形的网&#xff0c;将我们与世界的每一个角落紧密相连。然而&#xff0c;当某些与自己名字相关的资料不再希望被公众轻易检索到时&#xff0c;如何在百度搜索中有效“隐身”&#xff0c;成为了一个亟待解决的问题。面对复杂多变的网络环境&#xf…...

【C语言】C语言使用随机数srand,rand

C语言使用随机数srand,rand 可直接编译使用&#xff1a; #include <stdio.h> #include <time.h> #include <stdlib.h> #include <unistd.h>/* c语言提供的跟随机数有关的函数:int rand(void);返回值:产生的随机数void srand(unsiqned int seed);参数…...

为容器指定固定IP地址

文章目录 为容器指定固定IP地址可以通过以下步骤实现&#xff0c;适用于Docker环境&#xff1a;**方法一&#xff1a;使用Docker自定义桥接网络****方法二&#xff1a;Docker Compose配置****关键注意事项** 为容器指定固定IP地址可以通过以下步骤实现&#xff0c;适用于Docker…...

kube-score K8S Yaml静态代码分析工具详解

kube-score 是一款专注于 Kubernetes 配置文件的静态代码分析工具&#xff0c;旨在通过自动化检查帮助用户识别资源配置中的潜在问题&#xff0c;并遵循最佳实践以提升集群的安全性、稳定性和性能。以下是其核心功能、使用方法和应用场景的详细解析&#xff1a; 一、核心功能与…...

Spring Boot 整合 Elasticsearch 实践:从入门到上手

引言 Elasticsearch 是一个开源的分布式搜索引擎&#xff0c;广泛用于日志分析、搜索引擎、数据分析等场景。本文将带你通过一步步的教程&#xff0c;在 Spring Boot 项目中整合 Elasticsearch&#xff0c;轻松实现数据存储与查询。 1. 创建 Spring Boot 项目 首先&#xff…...

使用外部事件检测接入 CDH 大数据管理平台告警

CDH 大数据管理平台 CDH&#xff08;Cloudera Distribution Hadoop&#xff09;是一个企业级的大数据平台&#xff0c;由 Cloudera 公司提供&#xff0c;它包含了 Apache Hadoop 生态系统中的多种开源组件&#xff0c;并对其进行了优化和集成&#xff0c;以支持大规模数据存储…...

RabbitMQ八股文

RabbitMQ RabbitMQ 核心概念与组件1. RabbitMQ 核心组件及其作用1.1 生产者&#xff08;Producer&#xff09;1.2 交换机&#xff08;Exchange&#xff09;1.3 队列&#xff08;Queue&#xff09;1.4 绑定&#xff08;Binding&#xff09;1.5 消费者&#xff08;Consumer&#…...

MongoDB(五) - Studio 3T 下载与安装教程

文章目录 前言一、Studio 3T 简介二、下载及安装1. 下载2. 安装 三、使用Studio 3T连接MongoDB 前言 本文旨在全面且深入地为你介绍 Studio 3T。从其丰富的功能特性、跨平台使用的便捷性&#xff0c;到详细的下载安装步骤&#xff0c;以及关键的连接 MongoDB 操作&#xff0c;…...

2025高频面试算法总结篇【链表堆栈队列】

文章目录 直接刷题链接直达反转链表环形链表判断一个序列是否为合理的出栈顺序最长有效括号旋转链表复杂链表的复制约瑟夫环问题滑动窗口最大值 直接刷题链接直达 反转链表 206. 反转链表 环形链表 141. 环形链表142. 环形链表 II 判断一个序列是否为合理的出栈顺序 946.…...

Java主流开发框架之请求响应常用注释

1.RestController 标记一个类为 REST 控制器&#xff0c;处理 HTTP 请求并直接返回数据&#xff08;如 JSON/XML&#xff09;&#xff0c;而不是视图&#xff08;如 HTML&#xff09;&#xff0c;一般是放在类的上边 RestController public class UserController {GetMapping…...

汽车制造MES

一、整体生产工序 整车的车间主要分为4个部分&#xff1a;冲压、焊装、涂装、总装、整车入库 系统架构 二、车间概括 1.冲压车间 2.焊装车间 3.涂装车间 4.总装车间 1.整车装配的部件都要可追溯、数据实时性要求高、涉及分装与总装的协调、物流配送的协调、质量批处理的协调、…...

LeetCode 2643.一最多的行:模拟(更新答案)

【LetMeFly】2643.一最多的行&#xff1a;模拟(更新答案) 力扣题目链接&#xff1a;https://leetcode.cn/problems/row-with-maximum-ones/ 给你一个大小为 m x n 的二进制矩阵 mat &#xff0c;请你找出包含最多 1 的行的下标&#xff08;从 0 开始&#xff09;以及这一行中…...

固定翼无人机姿态和自稳模式

固定翼无人机的‌姿态模式&#xff08;Attitude/Angle Mode&#xff09;‌和‌自稳模式&#xff08;Stabilize Mode&#xff09;‌是两种常见的飞行控制模式&#xff0c;它们在飞控系统介入程度、操作逻辑及适用场景上有显著区别。以下是两者的详细对比及使用指南&#xff1a; …...

K8S中若要挂载其他命名空间中的 Secret

在Kubernetes&#xff08;k8s&#xff09;里&#xff0c;若要挂载其他命名空间中的Secret&#xff0c;你可以通过创建一个 Secret 的 ServiceAccount 和 RoleBinding 来实现对其他命名空间 Secret 的访问&#xff0c;接着在 Pod 中挂载这个 Secret。下面是详细的步骤和示例代码…...

关于Unity的CanvasRenderer报错

MissingReferenceException: The object of type ‘CanvasRenderer’ has been destroyed but you are still trying to access it. Your script should either check if it is null or you should not destroy the object. UnityEngine.UI.GraphicRaycaster.Raycast (UnityEng…...

LangChain组件Tools/Toolkits详解(5)——返回产出artifact

LangChain组件Tools/Toolkits详解(5)——返回产出artifact 本篇摘要14. LangChain组件Tools/Toolkits详解14.5 返回产出artifact14.5.1 定义工具14.5.2 使用ToolCall调用工具14.5.3 与模型一起使用14.5.4 从子例化BaseTool返回参考文献本章目录如下: 《LangChain组件Tools/T…...

信奥赛CSP-J复赛集训(模拟算法专题)(26):P5412 [YNOI2019] 排队

信奥赛CSP-J复赛集训(模拟算法专题)(26):P5412 [YNOI2019] 排队 题目描述 小明所在的班级要举办一场课外活动,在活动开始之前老师告诉小明:“需要把男女生分成两队,并且每一队都要按照身高从矮到高进行排序”。但是由于小明的马虎,没有把老师的安排转达给同学,导致全…...

基于开源模型的微调训练及瘦身打造随身扫描仪方案__用AI把手机变成文字识别小能手

基于开源模型的微调训练及瘦身打造随身扫描仪方案__用AI把手机变成文字识别小能手 一、准备工作&#xff1a;组装你的"数码工具箱" 1. 安装基础工具&#xff08;Python环境&#xff09; 操作步骤&#xff1a; 访问Python官网下载安装包安装时务必勾选Add Python to…...

在 Offset Explorer 中配置多节点 Kafka 集群的详细指南

一、是否需要配置 Zookeeper&#xff1f; Kafka 集群的 Zookeeper 依赖性与版本及运行模式相关&#xff1a; Kafka 版本是否需要 Zookeeper说明0.11.x 及更早版本✅ 必须配置Kafka 完全依赖 Zookeeper 管理元数据2.8 及以下版本✅ 必须配置Kafka 依赖外置或内置的 Zookeeper …...

STM32基础教程——定时器

前言 TIM定时器&#xff08;Timer&#xff09;:STM32的TIM定时器是一种功能强大的外设模块&#xff0c;通过时基单元&#xff08;包含预分频器、计数器和自动重载寄存器&#xff09;实现精准定时和计数功能。其核心原理是&#xff1a;内部时钟&#xff08;CK_INT&#xff09;或…...

深入分析和讲解虚拟化技术原理

随着云计算和大数据技术的飞速发展&#xff0c;虚拟化技术应运而生&#xff0c;成为数据中心和IT基础设施的重要组成部分。本文将深入分析虚拟化的基本原理、主要类型以及在实际应用中的意义。 一、虚拟化技术的定义 虚拟化技术是通过软件将物理硬件资源抽象成虚拟资源的技术&…...

HarmonyOS Next~鸿蒙图形开发技术解析:AREngine与ArkGraphics 2D的核心能力与应用实践

HarmonyOS Next&#xff5e;鸿蒙图形开发技术解析&#xff1a;AREngine与ArkGraphics 2D的核心能力与应用实践 鸿蒙操作系统&#xff08;HarmonyOS&#xff09;在图形开发领域持续创新&#xff0c;其核心图形类Kit——**AREngine&#xff08;增强现实引擎服务&#xff09;与Ar…...

Can通信流程

下面给出一个更详细的 CAN 发送报文的程序流程说明&#xff0c;结合 HAL 库的使用及代码示例&#xff0c;帮助你了解每一步的具体操作和内部原理。 一、系统与外设初始化 1.1 HAL 库初始化 在 main() 函数开头&#xff0c;首先调用 HAL 库初始化函数&#xff1a; HAL_Init()…...

小白闯AI:Llama模型Lora中文微调实战

文章目录 0、缘起一、如何对大模型进行微调二、模型微调实战0、准备环境1、准备数据2、模型微调第一步、获取基础的预训练模型第二步:预处理数据集第三步:进行模型微调第四步:将微调后的模型保存到本地4、模型验证5、Ollama集成部署6、结果测试三、使用总结AI是什么?他应该…...