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

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

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

相关文章

初试无监督学习 - K均值聚类算法

文章目录 1. K均值聚类算法概述2. k均值聚类算法演示2.1 准备工作2.2 生成聚类用的样本数据集2.3 初始化KMeans模型对象&#xff0c;并指定类别数量2.4 用样本数据训练模型2.5 用训练好的模型生成预测结果2.6 输出预测结果2.7 可视化预测结果 3. 实战小结 1. K均值聚类算法概述…

JSON,事件绑定

文章目录 JSON事件绑定输入框input和div的内容返回获取dom元素数组还是单个对象for循环为什么要写const那一行&#xff0c;直接写 hobbys[index].checked true;可以吗const不是常量吗&#xff0c;为什么用const声明的element的属性值可以改变&#xff1f; 黑马学习笔记 JSON 定…

学习HTML第三十一天

学习文章目录 七. 普通按钮八. 文本域九.下拉框 七. 普通按钮 注意点&#xff1a;普通按钮的 type 值为 button &#xff0c;若不写 type 值是 submit 会引起表单的提交 八. 文本域 常用属性如下&#xff1a; rows 属性&#xff1a;指定默认显示的行数&#xff0c;会影响文…

基于Multisim的汽车尾灯控制电路设计与仿真

1、电路由四个按键控制&#xff0c;分别对应左转、右转、刹车和检查。 2、当左转或右转键按下时,左侧或右侧的 3个汽车尾灯按照左循环或右循环的顺!2/3 点亮&#xff0c;点亮时间为 1秒。 3、当刹车时&#xff0c;所有的尾灯同时闪烁&#xff0c;闪烁时间为1秒。 4、当检查时…

7天掌握SQL - 第三天:MySQL实践与索引优化

目录 安装MySQL创建数据库和表结构SQL语句实操练习MySQL高级特性索引设计与优化总结 1. 安装MySQL 1.1 下载与安装 MySQL可以通过官方网站下载安装包。以下是安装MySQL的基本步骤&#xff1a; 访问MySQL官方网站 MySQL Downloads。选择适合您操作系统的版本进行下载。安装…

osg、osgearth简介及学习环境准备

一、osg简介&#xff08;三维场景图渲染与调度引擎&#xff09; OSG是Open Scene Graphic 的缩写&#xff0c;OSG于1997年诞生于以为滑翔机爱好者之手&#xff0c;Don burns 为了对滑翔机的飞行进行模拟&#xff0c;对openGL的库进行了封装&#xff0c;osg的雏形就这样诞生了&…

小程序-使用 iconfont 图标库报错:Failed to load font

官方默认可以忽略此错误&#xff0c;在清除缓存后首次刷新会显示此错误&#xff0c;重新渲染错误消失 解决方法&#xff1a; 在 iconfont 图标库选择项目设置 选中 Base64 保存&#xff0c;重新点击链接 -> 复制代码到项目中 操作步骤&#xff1a;

GEE 训练教程——Sentinel-1的卷积(核函数)的分析和可视化

目录 简介 函数 convolve(kernel) Arguments: Returns: Image ee.Kernel.fixed(width, height, weights, x, y, normalize) Arguments: Returns: Kernel 代码解释 代码 结果 简介 GEE 训练教程——Sentinel-1的卷积(核函数)的分析和可视化 函数 convolve(kerne…

Stable Diffusion的解读(二)

Stable Diffusion的解读&#xff08;二&#xff09; 文章目录 Stable Diffusion的解读&#xff08;二&#xff09;摘要Abstract一、机器学习部分1. 算法梳理1.1 LDM采样算法1.2 U-Net结构组成 2. Stable Diffusion 官方 GitHub 仓库2.1 安装2.2 主函数2.3 DDIM采样器2.4 Unet 3…

13. 【.NET 8 实战--孢子记账--从单体到微服务】--简易权限--完善TODO标记的代码

这篇文章特别短&#xff0c;短到可以作为一篇文章的一个章节&#xff0c;那让我们开始吧 一、编写代码 我们在代码中标记了大量的TODO标记&#xff0c;并且注明了这里暂时写死&#xff0c;等权限和授权完成后再改为动态获取这句话。那么到目前为止和权限有关的代码已经完成了…

Rust “xxx“.to_string()和Rust String::from(“xxx“)区别(将字符串字面量(str类型)转换为String类型)

文章目录 Rust "xxx".to_string()和Rust String::from("xxx")区别1. .to_string()&#xff08;能够将任何可以显示的类型&#xff08;如数字、结构体等&#xff09;转为字符串&#xff09;2. String::from()区别总结&#xff1a;性能&#xff1a;示例对比&…

如何设置谷歌浏览器的家庭保护功能

谷歌浏览器是全球使用最广泛的网络浏览器之一&#xff0c;提供了许多强大的功能和扩展。对于有小孩的家庭来说&#xff0c;设置家庭保护功能可以帮助家长管理孩子的上网行为&#xff0c;确保他们在一个安全、健康的网络环境中浏览网页。本文将详细介绍如何设置谷歌浏览器的家庭…

Vue:后端返回二进制文件,前端如何实现浏览器自动下载?

Vue项目开发中&#xff0c;遇到界面下载功能时&#xff0c;前端如何实现将后端返回二进制文件在浏览器自动下载&#xff1f; 一、关键代码&#xff1a; export function downloadFile(fileName) {axios({method: post,url: process.env.VUE_APP_BASE_API /cgi-bin/file,data:…

dpdk ppe模块细分

在基于 openEuler 系统运行 DPDK&#xff08;Data Plane Development Kit&#xff09; 时&#xff0c;涉及到的 PPE&#xff08;Packet Processing Engine&#xff09; 中的 SSU&#xff08;Service Scheduling Unit&#xff09;、PPP&#xff08;Packet Processing Pipeline&a…

触发器清零引脚要上拉高电平

在使用触发器设计电路时&#xff0c;清零引脚该如何处理呢&#xff1f; 下图中NCLR是清零引脚&#xff0c;由于未使用就悬空了&#xff0c;没有任何电气连接&#xff0c;这样做是不对的。应该上拉至高电平。 加入电阻R3&#xff0c;上拉至3.3V&#xff0c;这样不使用清零功能的…

FPGA经验谈系列文章——9、块储存器的高效使用

前言 每个7系列的FPGA都包含多个36Kb容量的块存储器,俗称BlockRAM。一个BlockRAM是36Kb,它能够拆分成独立的两个18Kb,因此最小的使用单位就是18Kb。如果只想使用1Kb怎么办?不好意思,也得占用半个块存储资源18Kb。那如果使用了19Kb的话,那么就得使用一个完整的36Kb的Block…

SparkSQL 对 SQL 查询的优化静态优化和动态优化两大部分介绍

SparkSQL 对 SQL 查询的优化主要分为 静态优化 和 动态优化 两大部分&#xff0c;其中静态优化主要在查询编译时进行&#xff0c;而动态优化则是在查询执行过程中进行。SparkSQL 的优化包括了多种技术&#xff0c;例如 RBO&#xff08;基于规则的优化&#xff09;、CBO&#xf…

Vue_Router权限控制:不同角色显示不同路由

写在前面 在Vue中&#xff0c;Router是一个官方提供的用于处理应用程序路由的插件。它允许我们创建单页应用程序&#xff08;SPA&#xff09;&#xff0c;其中不同的页面和组件可以通过URL进行导航和展示。使我们可以轻松地创SPA&#xff0c;并实现可复用和可组合的组件…

设计模式之 适配器模式

适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许将一个类的接口转换成客户端所期望的另一个接口。通过使用适配器模式&#xff0c;原本由于接口不兼容的类可以进行协作。简单来说&#xff0c;适配器模式就是将不兼容的接口连接起来&…

【LLM训练系列02】如何找到一个大模型Lora的target_modules

方法1&#xff1a;观察attention中的线性层 import numpy as np import pandas as pd from peft import PeftModel import torch import torch.nn.functional as F from torch import Tensor from transformers import AutoTokenizer, AutoModel, BitsAndBytesConfig from typ…