java 字符 ASCII码 详解

在 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 的深入理解,可以高效地处理字符相关的操作。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vscode/Code-server无网环境安装通义灵码

Date: 2024-11-18 参考材料&#xff1a;https://help.aliyun.com/zh/lingma/user-guide/individual-edition-login-tongyi-lingma?spma2c4g.11186623.0.i0 1. 首先在vscode/code-server插件市场中安装通义插件&#xff0c;这步就不细说了。如果服务器没网&#xff0c;会问你要…

开源TTS语音克隆神器GPT-SoVITS_V2版本地整合包部署与远程使用生成音频

文章目录 前言1.GPT-SoVITS V2下载2.本地运行GPT-SoVITS V23.简单使用演示4.安装内网穿透工具4.1 创建远程连接公网地址 5. 固定远程访问公网地址 前言 本文主要介绍如何在Windows系统电脑使用整合包一键部署开源TTS语音克隆神器GPT-SoVITS&#xff0c;并结合cpolar内网穿透工…

实战 | C#中使用YoloV8和OpenCvSharp实现目标检测 (步骤 + 源码)

导 读 本文主要介绍在C#中使用YoloV8实现目标检测,并给详细步骤和代码。 详细步骤 【1】环境和依赖项。 需先安装VS2022最新版,.NetFramework8.0,然后新建项目,nuget安装 YoloSharp,YoloSharp介绍: https://github.com/dme-compunet/YoloSharp 最新版6.0.1,本文…

IDE配置tomcat

1.导航到 Tomcat 安装目录 E:\apache-tomcat-9.0.95-windows-x64\apache-tomcat-9.0.95 2.启动 Tomcat 服务&#xff1a;bin\startup.bat

python读取Oracle库并生成API返回Json格式

一、安装必要的库 首先&#xff0c;确保已经安装了以下库&#xff1a; 有网模式 pip install flask pip install gevent pi install cx_Oracle离线模式&#xff1a; 下载地址&#xff1a;https://pypi.org/simple/flask/ # a. Flask Werkzeug-1.0.1-py2.py3-none-any.whl J…

MAC借助终端上传jar包到云服务器

前提&#xff1a;保证工程本地已打包完成&#xff1a;图中路径即为项目的target目录下已准备好的jar包 第一步&#xff1a;打开终端&#xff08;先不要连接自己的服务器&#xff09;&#xff0c;输入下面的上传命令&#xff1a; scp /path/to/local/app.jar username192.168.1…

Python数据分析NumPy和pandas(四十、Python 中的建模库statsmodels 和 scikit-learn)

主要学习两个流行的建模工具包&#xff0c;statsmodels 和 scikit-learn。 一、pandas 与模型代码之间的接口 模型开发的常见工作流程是使用 pandas 进行数据加载和清理&#xff0c;然后再切换到建模库来构建模型本身。模型开发过程的一个重要部分在机器学习中称为特征工程&a…

实操案例|TinyVue树表+动态行合并

本文由孟智强同学原创。 背景 团队某个小项目切换 UI 框架&#xff0c;要将 Element 换成 TinyVue。期间遇到一个树表形式的业务表格&#xff0c;支持多级下钻&#xff0c;且第一列有合并行。当初用 Element 实现这个表格时费了一些周折&#xff0c;料想 TinyVue 上场应该也不…

Mesh路由组网

Mesh无线网格网络&#xff0c;多跳&#xff08;multi-hop&#xff09;网络&#xff0c;为解决全屋覆盖信号&#xff0c;一般用于家庭网络和小型企业 原理 网关路由器&#xff08;主路由&#xff0c;连接光猫&#xff09;&#xff0c;Mesh路由器&#xff08;子路由&#xff0c;…

基于Windows系统用C++做一个点名工具

目录 一、前言 二、主要技术点 三、准备工作 四、主界面 1.绘制背景图 2、实现读取花名册功能 3.实现遍历花名册功能 4.实现储存功能 4.1创建数据库 4.2存储数据到数据库表 4.3读取数据库表数据 一、前言 人总是喜欢回忆过去&#xff0c;突然回忆起…

11.9K Star!强大的 Web 爬虫工具 FireCrawl:为 AI 训练与数据提取提供全面支持

在这个信息爆炸的时代&#xff0c;数据就是力量。尤其是对于开发者来说&#xff0c;获取并利用好数据&#xff0c;就意味着拥有更多的主动权和竞争力。 无论是用来训练大语言模型&#xff0c;还是用于增强检索生成&#xff08;RAG&#xff09;&#xff0c;数据都扮演着至关重要…

云原生之k8s服务管理

文章目录 服务管理Service服务原理ClusterIP服务 对外发布应用服务类型NodePort服务Ingress安装配置Ingress规则 Dashboard概述 认证和授权ServiceAccount用户概述创建ServiceAccount 权限管理角色与授权 服务管理 Service 服务原理 容器化带来的问题 自动调度&#xff1a;…

前端面试题整理-前端异步编程

1. 进程、线程、协程的区别 在并发编程领域&#xff0c;进程、线程和协程是三个核心概念&#xff0c;它们在资源管理、调度和执行上有着本质的不同。 首先&#xff0c;进程是操作系统进行资源分配和调度的独立单位&#xff08;资源分配基本单位&#xff09;&#xff0c;每个进…

动静态库:选择与应用的全方位指南

目录 1 软链接 1.1 软链接的建立方式和观察现象 1.2 软链接的原理 2 硬链接 2.1 硬链接的建立方式和观察现象 2.2 硬链接的本质 2.3 我们用户不能给目录建立硬链接 3. 动静态库复习 4 动静态库的制作 4.1 静态库的制作与使用 4.1.2 打包 4.1.3 静态库的使用 4.2 动…

【ROS2】多传感器融合、实现精准定位:robot_localization

1、简述 robot_localization在SLAM建图、导航中常用于将多个传感器融合(IMU、里程计、深度相机、GPS等),以提高定位精度,为机器人提供了在三维空间中的非线性状态估计 robot_localization包含两个状态估计节点: ekf_localization_node:扩展卡尔曼滤波(EKF),缺点是非…

极客大挑战2024wp

极客大挑战2024wp web 和misc 都没咋做出来&#xff0c;全靠pwn✌带飞 排名 密码学和re没做出几个&#xff0c;就不发了 web ez_pop 源代码 <?php Class SYC{public $starven;public function __call($name, $arguments){if(preg_match(/%|iconv|UCS|UTF|rot|quoted…

40分钟学 Go 语言高并发:并发下载器开发实战教程

并发下载器开发实战教程 一、系统设计概述 1.1 功能需求表 功能模块描述技术要点分片下载将大文件分成多个小块并发下载goroutine池、分片算法断点续传支持下载中断后继续下载文件指针定位、临时文件管理进度显示实时显示下载进度和速度进度计算、速度统计错误处理处理下载过…

李宏毅机器学习课程知识点摘要(1-5集)

前5集 过拟合&#xff1a; 参数太多&#xff0c;导致把数据集刻画的太完整。而一旦测试集和数据集的关联不大&#xff0c;那么预测效果还不如模糊一点的模型 所以找的数据集的量以及准确性也会影响 由于线性函数的拟合一般般&#xff0c;所以用一组函数去分段来拟合 sigmoi…

Spring Boot教程之五:在 IntelliJ IDEA 中运行第一个 Spring Boot 应用程序

在 IntelliJ IDEA 中运行第一个 Spring Boot 应用程序 IntelliJ IDEA 是一个用 Java 编写的集成开发环境 (IDE)。它用于开发计算机软件。此 IDE 由 Jetbrains 开发&#xff0c;提供 Apache 2 许可社区版和商业版。它是一种智能的上下文感知 IDE&#xff0c;可用于在各种应用程序…

本地Docker部署开源WAF雷池并实现异地远程登录管理界面

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…