Java-模块二-2

embedded/2025/3/26 4:25:58/

整数类型

  • 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)

示例:

java">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)。常见关系运算符包括:

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

示例:

java">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),反转布尔值

示例:

java">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)位运算

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

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

示例:

java">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)赋值运算

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

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

示例:

java">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))。

    示例:

    java">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。

    示例:

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

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

    示例:

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

3. 总结

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

转义字符

1. 常见转义字符

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

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

  • 示例:

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

  • 示例:

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

  • 示例:

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

  • 示例:

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

  • 示例:

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

  • 示例:

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

2. 转义字符的应用场景

(1)处理文件路径

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

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

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

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

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

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

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

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

3. 注意事项

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

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

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

    • 示例:

      java">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。
    示例代码

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

http://www.ppmy.cn/embedded/176207.html

相关文章

keda基于postgresql伸缩dify-api服务

1 概述 dify-api使用postgresql来存储数据&#xff0c;在dify控制台每新建一个聊天机器的聊天框&#xff0c;就会在conversations表里新插入一条记录&#xff0c;并且不断地更新字段updated_at&#xff0c;示例如下&#xff1a; dify# select * from conversations limit 1; …

【机器人动力学】——转动惯量

【机器人动力学】——转动惯量 一、质量分布 转动惯量的定义&#xff1a; A I [ I x x − I x y − I x z − I x y I y y − I y z − I x z − I y z I z z ] ^AI \begin{bmatrix} I_{xx} & & -I_{xy} & & -I_{xz} \\ -I_{xy} & & I_{yy} & …

python实战,提取数据汇聚到表格中

起因&#xff1a; 一个临时性的检查工作&#xff0c;上级单位发来数十张表格&#xff0c;每张表格名以一个特定的数字开头&#xff0c;表示其中的一个规则&#xff0c;每张表格有几千到几十万条数据&#xff0c;在每张规则表中&#xff0c;每条数据的序号是唯一的。然后这些表…

品融电商:深耕兴趣电商,多维赋能品牌长效增长

品融电商&#xff1a;深耕兴趣电商&#xff0c;多维赋能品牌长效增长 在流量去中心化与消费需求多元化的新商业时代&#xff0c;品牌如何精准触达年轻用户、快速建立心智认知并实现销量突破&#xff1f;品融电商&#xff08;PINKROON&#xff09;凭借其“效品合一&#xff0c…

让 Deepseek 写一个计算器(网页)

完整代码 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>简单计算器</title><style&…

conda install 和 pip install 的区别

conda install 和 pip install 是两个常用的包安装命令&#xff0c;但它们在很多方面存在差异。 1. 所属管理系统不同 1.1 conda install conda install 是Anaconda和Miniconda发行版自带的包管理工具 conda 的安装命令。conda 是一个跨平台的开源包管理系统和环境管理系统&…

AI 生成 PPT 网站介绍与优缺点分析

随着人工智能技术不断发展&#xff0c;利用 AI 自动生成 PPT 已成为提高演示文稿制作效率的热门方式。本文将介绍几款主流的 AI PPT 工具&#xff0c;重点列出免费使用机会较多的网站&#xff0c;并对各平台的优缺点进行详细分析&#xff0c;帮助用户根据自身需求选择合适的工具…

(学习总结29)Linux 进程概念和进程状态

Linux 进程概念 冯诺依曼体系结构软件运行与存储分级数据流动的理论过程 操作系统操作系统(Operator System) 概念操作系统的功能与作用系统调用和库函数概念 进程概念描述进程 - PCBtask_struct查看进程通过系统调用获取进程标示符 PID通过系统调用 fork 函数创建进程简单使用…