java 字符 ASCII码 详解

news2024/11/22 14:43:45

在 Java 中,字符 (char) 和 ASCII 码的关系是通过 Unicode 字符集建立的。以下是 Java 中字符与 ASCII 码相关的详解。


1. 什么是 ASCII 和 Unicode?

ASCII (American Standard Code for Information Interchange)

  • ASCII 码 是一种字符编码标准,每个字符对应一个整数(0 到 127)。
  • ASCII 编码只包括英语字母、数字、标点符号和一些控制字符。
  • 例如:
    • 'A' 的 ASCII 码为 65
    • 'a' 的 ASCII 码为 97
    • '0' 的 ASCII 码为 48

Unicode

  • Java 使用 Unicode 编码,它是 ASCII 的超集,支持全世界的字符(包括汉字、特殊符号等)。
  • Unicode 编码前 128 个字符与 ASCII 编码完全一致
  • 一个 char 在 Java 中实际上是一个 16 位的 Unicode 字符。

2. Java 中字符与 ASCII 的关系

字符的本质:

  • 在 Java 中,char 是一个无符号的 16 位整数,表示 Unicode 字符。
  • 可以通过 类型转换算术操作,直接获取 char 对应的 ASCII 或 Unicode 码值。

3. Java 中操作字符和 ASCII 的常用方法

获取字符的 ASCII 码

  • 使用强制类型转换,将 char 转换为 int
char ch = 'A';
int ascii = (int) ch; // 或者直接写 int ascii = ch;
System.out.println(ascii); // 输出 65

通过 ASCII 码获取字符

  • 通过强制类型转换,将整数转换为 char
int ascii = 97;
char ch = (char) ascii;
System.out.println(ch); // 输出 'a'

字符的运算

  • char 可以直接参与算术运算,运算结果为整数:
char ch = 'A';
System.out.println(ch + 1); // 输出 66
System.out.println((char) (ch + 1)); // 输出 'B'

4. 常见操作示例

4.1 遍历英文字母

  • 输出所有大写字母的 ASCII 码:
for (char ch = 'A'; ch <= 'Z'; ch++) {
    System.out.println(ch + ": " + (int) ch);
}

输出:

A: 65
B: 66
...
Z: 90
  • 输出所有小写字母:
for (char ch = 'a'; ch <= 'z'; ch++) {
    System.out.println(ch + ": " + (int) ch);
}

4.2 判断字符类型

  • 判断字符是字母、数字还是其他:
char ch = 'A';

// 判断是否为大写字母
if (ch >= 'A' && ch <= 'Z') {
    System.out.println(ch + " 是大写字母");
}

// 判断是否为小写字母
if (ch >= 'a' && ch <= 'z') {
    System.out.println(ch + " 是小写字母");
}

// 判断是否为数字
if (ch >= '0' && ch <= '9') {
    System.out.println(ch + " 是数字");
}

4.3 字母大小写转换

  • 将大写字母转换为小写:
char upper = 'A';
char lower = (char) (upper + 32); // 'A' 的 ASCII 是 65,加 32 得到 'a' 的 ASCII
System.out.println(lower); // 输出 'a'
  • 将小写字母转换为大写:
char lower = 'b';
char upper = (char) (lower - 32); // 'b' 的 ASCII 是 98,减 32 得到 'B'
System.out.println(upper); // 输出 'B'

4.4 判断两个字符的关系

  • 比较字符的大小:
char ch1 = 'A';
char ch2 = 'B';

if (ch1 < ch2) {
    System.out.println(ch1 + " 小于 " + ch2);
} else if (ch1 > ch2) {
    System.out.println(ch1 + " 大于 " + ch2);
} else {
    System.out.println(ch1 + " 等于 " + ch2);
}

4.5 字符和数字的映射

  • 通过数字字符计算对应的数值:
char digit = '7';
int num = digit - '0'; // '7' 的 ASCII 是 55,'0' 的 ASCII 是 48,差值是 7
System.out.println(num); // 输出 7
  • 将数字转为字符:
int num = 7;
char digit = (char) (num + '0'); // 数字加上 '0' 的 ASCII 得到对应字符
System.out.println(digit); // 输出 '7'

5. 常用 ASCII 码表

字符ASCII 值字符ASCII 值
A65a97
B66b98
Z90z122
048957
Space32!33
@64#35

6. 进阶操作

字符与 ASCII 的批量操作

批量生成 ASCII 对应的字符
for (int i = 32; i <= 126; i++) {
    System.out.println(i + ": " + (char) i);
}

输出:

  • 32 到 126 是可见 ASCII 字符。

非 ASCII 字符处理

  • Unicode 编码支持超出 ASCII 范围的字符(如汉字、特殊符号等):
char chinese = '你';
System.out.println(chinese + ": " + (int) chinese); // 输出 '你' 的 Unicode 编码

7. 总结

  1. 基本操作:

    • char 可以直接与 int 类型转换,获取其 ASCII 值或 Unicode 值。
    • 通过运算实现字符的大小写转换、数字字符到整数的映射等功能。
  2. ASCII 是 Unicode 的子集:

    • 在处理简单英文字母和数字时,ASCII 与 Unicode 的操作完全一致。
    • 处理非 ASCII 字符(如汉字)时,需注意 Unicode 范围。
  3. 常见应用场景:

    • 字符到数字的映射。
    • 字母大小写转换。
    • 编码、解码处理。

通过对 charASCII 的深入理解,可以高效地处理字符相关的操作。

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

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

相关文章

[开源] SafeLine 好用的Web 应用防火墙(WAF)

SafeLine&#xff0c;中文名 “雷池”&#xff0c;是一款简单好用, 效果突出的 Web 应用防火墙(WAF)&#xff0c;可以保护 Web 服务不受黑客攻击 一、简介 雷池通过过滤和监控 Web 应用与互联网之间的 HTTP 流量来保护 Web 服务。可以保护 Web 服务免受 SQL 注入、XSS、 代码注…

【动手学深度学习Pytorch】1. 线性回归代码

零实现 导入所需要的包&#xff1a; # %matplotlib inline import random import torch from d2l import torch as d2l import matplotlib.pyplot as plt import matplotlib import os构造人造数据集&#xff1a;假设w[2, -3.4]&#xff0c;b4.2&#xff0c;存在随机噪音&…

Keil基于ARM Compiler 5的工程迁移为ARM Compiler 6的工程

环境&#xff1a; keil版本为5.38&#xff0c;版本务必高于5.30 STM32F4的pack包版本要高于2.9 软件包下载地址&#xff1a;https://zhuanlan.zhihu.com/p/262507061 一、更改Keil中编译器 更改后编译&#xff0c;会报很多错&#xff0c;先不管。 二、更改头文件依赖 观察…

数据集-目标检测系列- 花卉 玫瑰 检测数据集 rose >> DataBall

数据集-目标检测系列- 花卉 玫瑰 检测数据集 rose >> DataBall DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种数据集&#xff0c;持续增加中。 贵在坚持&#xff01; 数据样例项目地址&#xff1a; * 相关项目 1&#xff09;数据集可视化项…

Linux驱动编程 - kmalloc、vmalloc区别

目录 前言&#xff1a; 1、区别 2、使用差异 一、kmalloc、kzalloc、kfree 1、动态申请 1.1 kmalloc() 1.2 kzalloc() 2、内存释放 3、示例 二、vmalloc、vzalloc、vfree 1、动态申请 1.1 vmalloc() 1.2 vzalloc() 2、内存释放 3、示例 前言&#xff1a; Linux内…

使用低成本的蓝牙HID硬件模拟鼠标和键盘来实现自动化脚本

做过自动化脚本的都知道&#xff0c;现在很多传统的自动化脚本方案几乎都可以被检测&#xff0c;比如基于root&#xff0c;adb等方案。用外置的带有鼠标和键盘功能集的蓝牙HID硬件来直接点击和滑动是非常靠谱的方案&#xff0c;也是未来的趋势所在。 一、使用蓝牙HID硬件的优势…

VideoCrafter模型部署教程

一、介绍 VideoCrafter是一个功能强大的AI视频编辑和生成工具&#xff0c;它结合了深度学习和机器学习技术&#xff0c;为用户提供了便捷的视频制作和编辑体验。 系统&#xff1a;Ubuntu22.04系统&#xff0c;显卡&#xff1a;4090&#xff0c;显存&#xff1a;24G 二、基础…

#渗透测试#SRC漏洞挖掘#Python自动化脚本的编写05之多线程与多进程

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…

C++多继承:一个子类继承多个父类的情况

C的类继承大家还算比较了解。它主要包括单继承、多继承、虚继承这几方面。 单继承就是一个子类只继承一个父类&#xff0c;多继承就是一个子类继承多个父类。 其实在C中&#xff0c;一个子类继承多个父类的情况还是比较常见的。比如&#xff0c;一个子类需要同时继承两个父类…

在windows电脑上安装docker服务

以下是在 Windows 电脑上安装 Docker 服务的详细步骤&#xff1a; 一、下载 Docker Desktop for Windows 系统要求&#xff1a;Windows 操作系统需要是 Windows 10&#xff08;64 位&#xff09;专业版、企业版或教育版&#xff0c;或者是 Windows 11。并且系统要开启了硬件虚…

单片机UART协议相关知识

概念 UART&#xff08;Universal Asynchronous Receiver/Transmitter&#xff0c;通用异步收发传输器&#xff09; 是一种 异步 串行 全双工 通信协议&#xff0c;用于设备一对一进行数据传输&#xff0c;只需要两根线&#xff08;TX&#xff0c;RX&#xff09;。 异步&…

XXL-JOB执行任务的SpringBoot程序无法注册到调度中心

文章目录 1. 问题呈现2. 问题产生的原因2.1 原因一&#xff1a;执行器和调度中心部署在不同的机器上2.2 原因二&#xff1a;调度中心部署在云服务器上 3. 解决方法3.1 方法一&#xff1a;将执行器和调度中心部署在同一台机器上3.2 方法二&#xff1a;手动指定执行器的ip地址&am…

Ettus USRP X410

总线连接器: 以太网 RF频率范围: 1 MHz 至 7.2 GHz GPSDO: 是 输出通道数量: 4 RF收发仪瞬时带宽: 400 MHz 输入通道数量: 4 FPGA: Zynq US RFSoC (ZU28DR) 1 MHz to 7.2 GHz&#xff0c;400 MHz带宽&#xff0c;GPS驯服OCXO&#xff0c;USRP软件无线电设备 Ettus USRP X410集…

哋它亢SEO技术分析:如何提升网站在搜索引擎中的可见性

文章目录 哋它亢SEO技术分析&#xff1a;如何提升网站在搜索引擎中的可见性网站的基本情况SEO优化分析与建议1. 元数据优化2. 关键词优化3. URL结构4. 图像优化5. 移动端优化6. 网站速度7. 结构化数据&#xff08;Schema Markup&#xff09;8. 内链与外链9. 社交分享 哋它亢SEO…

将网站地址改成https地址需要哪些材料

HTTPS&#xff08;安全超文本传输协议&#xff09;是HTTP协议的扩展。它大大降低了个人数据&#xff08;用户名、密码、银行卡号等&#xff09;被拦截的风险&#xff0c;还有助于防止加载网站时的内容替换&#xff0c;包括广告替换。 在发送数据之前&#xff0c;信息会使用SSL…

mongodb多表查询,五个表查询

需求是这样的&#xff0c;而数据是从mysql导入进来的&#xff0c;由于mysql不支持数组类型的数据&#xff0c;所以有很多关联表。药剂里找药物&#xff0c;需要药剂与药物的关联表&#xff0c;然后再找药物表。从药物表里再找药物与成分关联表&#xff0c;最后再找成分表。 这里…

端到端的专线管理与运维:实时掌握专线的运行状态

在当今高度信息化的时代&#xff0c;专线服务已成为企业数据传输的重要组成部分。为了确保专线服务的高效、稳定运行&#xff0c;我们采用了先进的端到端管理模式&#xff0c;对专线的运行状态和质量进行全面监控。本文将从专线管理的必要性、端到端管理模式的优势、实施步骤以…

SpringBoot(8)-任务

目录 一、异步任务 二、定时任务 三、邮件任务 一、异步任务 使用场景&#xff1a;后端发送邮件需要时间&#xff0c;前端若响应不动会导致体验感不佳&#xff0c;一般会采用多线程的方式去处理这些任务&#xff0c;但每次都需要自己去手动编写多线程来实现 1、编写servic…

PostgreSQL常用字符串函数与示例说明

文章目录 coalesce字符串位置(position strpos)字符串长度与大小写转换去掉空格(trim ltrim rtrim)字符串连接(concat)字符串替换简单替换(replace)替换指定位置长度(overlay)正则替换(regexp_replace) 字符串匹配字符串拆分split_part(拆分数组取指定位置的值)string_to_array…

深入剖析Java内存管理:机制、优化与最佳实践

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;Java &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; 深入剖析Java内存管理&#xff1a;机制、优化与最佳实践 一、Java内存模型概述 1. Java内存模型的定义与作…