Java 教程
- Java - 首页
- Java - 概述
- Java - 历史
- Java - 特性
- Java 与 C++
- JVM - Java 虚拟机
- Java - JDK vs JRE vs JVM
- Java - Hello World 程序
- Java - 环境搭建
- Java - 基本语法
- Java - 变量类型
- Java - 数据类型
- Java - 类型转换
- Java - Unicode 系统
- Java - 基本运算符
- Java - 注释
- Java - 用户输入
- Java - 日期与时间
Java 控制语句
- Java - 循环控制
- Java - 决策制定
- Java - if-else
- Java - switch
- Java - for 循环
- Java - for-each 循环
- Java - while 循环
- Java - do-while 循环
- Java - break
- Java - continue
面向对象编程
- Java - OOPs 概念
- Java - 对象与类
- Java - 类属性
- Java - 类方法
- Java - 方法
- Java - 变量作用域
- Java - 构造函数
- Java - 访问修饰符
- Java - 继承
- Java - 聚合
- Java - 多态
- Java - 重写
- Java - 方法重载
- Java - 动态绑定
- Java - 静态绑定
- Java - 实例初始化块
- Java - 抽象
- Java - 封装
- Java - 接口
- Java - 包
- Java - 内部类
- Java - 静态类
- Java - 匿名类
- Java - 单例类
- Java - 包装类
- Java - 枚举
- Java - 枚举构造函数
- Java - 枚举字符串
Java 内置类
Java 文件处理
Java 错误与异常
- Java - 异常
- Java - try-catch 块
- Java - try-with-resources
- Java - 多重 catch 块
- Java - 嵌套 try 块
- Java - finally 块
- Java - throw 异常
- Java - 异常传播
- Java - 内置异常
- Java - 自定义异常
Java 多线程
- Java - 多线程
- Java - 线程生命周期
- Java - 创建线程
- Java - 启动线程
- Java - 线程合并
- Java - 线程命名
- Java - 线程调度器
- Java - 线程池
- Java - 主线程
- Java - 线程优先级
- Java - 守护线程
- Java - 线程组
- Java - 关闭钩子
Java 同步
Java 网络编程
- Java - 网络编程
- Java - 套接字编程
- Java - URL 处理
- Java - URL 类
- Java - URLConnection 类
- Java - HttpURLConnection 类
- Java - Socket 类
- Java - 泛型
Java 集合
Java 接口
Java 数据结构
Java 集合算法
高级 Java
- Java - 命令行参数
- Java - Lambda 表达式
- Java - 发送邮件
- Java - Applet 基础
- Java - Javadoc 注释
- Java - 自动装箱和拆箱
- Java - 文件不匹配方法
- Java - REPL (JShell)
- Java - 多版本 Jar 文件
- Java - 私有接口方法
- Java - 内部类菱形运算符
- Java - 多分辨率图像 API
- Java - 集合工厂方法
- Java - 模块系统
- Java - Nashorn JavaScript
- Java - Optional 类
- Java - 方法引用
- Java - 函数式接口
- Java - 默认方法
- Java - Base64 编码解码
- Java - switch 表达式
- Java - Teeing 收集器
- Java - 微基准测试
- Java - 文本块
- Java - 动态 CDS 归档
- Java - Z 垃圾收集器 (ZGC)
- Java - 空指针异常
- Java - 打包工具
- Java - 密封类
- Java - 记录类
- Java - 隐藏类
- Java - 模式匹配
- Java - 简洁数字格式化
- Java - 垃圾回收
- Java - JIT 编译器
Java 其他
- Java - 递归
- Java - 正则表达式
- Java - 序列化
- Java - 字符串
- Java - Process API改进
- Java - Stream API改进
- Java - 增强型@Deprecated 注解
- Java - CompletableFuture API改进
- Java - 流
- Java - 日期时间 API
- Java 8 - 新特性
- Java 9 - 新特性
- Java 10 - 新特性
- Java 11 - 新特性
- Java 12 - 新特性
- Java 13 - 新特性
- Java 14 - 新特性
- Java 15 - 新特性
- Java 16 - 新特性
Java API 与框架
Java 类参考
- Java - Scanner
- Java - 数组
- Java - 字符串
- Java - Date
- Java - ArrayList
- Java - Vector
- Java - Stack
- Java - PriorityQueue
- Java - LinkedList
- Java - ArrayDeque
- Java - HashMap
- Java - LinkedHashMap
- Java - WeakHashMap
- Java - EnumMap
- Java - TreeMap
- Java - IdentityHashMap
- Java - HashSet
- Java - EnumSet
- Java - LinkedHashSet
- Java - TreeSet
- Java - BitSet
- Java - Dictionary
- Java - Hashtable
- Java - Properties
- Java - Collection
- Java - Array
Java 有用资源
Java - Unicode 系统
Unicode 是一种国际字符集,包含来自全球众多语言的大量字符、符号和文字。
Java 中的 Unicode 系统
Java 编程语言具有平台无关性,内置支持 Unicode 字符,允许开发人员创建能够与多种语言和文字无缝工作的应用程序。
在 Unicode 之前,存在多种表示字符编码的标准:
ASCII - 用于美国。
ISO 8859-1 - 用于西欧语言。
KOI-8 - 用于俄语。
GB18030 和 BIG-5 - 用于中文。
因此,为了支持多语言应用程序代码,某些字符使用单个字节,某些字符使用两个字节。甚至相同的代码可能在一种语言中表示一个不同的字符,而在另一种语言中可能表示其他字符。
为了克服上述缺点,开发了 Unicode 系统,其中每个字符由 2 个字节表示。由于 Java 是为多语言开发的,因此它采用了 Unicode 系统。最低值由\u0000表示,最高值由\uFFFF表示。
方法:使用 Unicode 字符和值
在 Java 中使用 Unicode 字符有两种方法:使用 Unicode 转义序列和直接存储 Unicode 字符。
第一种方法涉及使用转义序列表示 Unicode 字符,当无法直接在 Java 代码中键入或显示字符时,这很有用。第二种方法涉及直接将 Unicode 字符存储在变量中,当可以直接键入或显示字符时,这更方便。
方法的选择取决于程序的具体要求。但是,一般来说,当可以键入或显示字符时,方法 2 更简单、更方便;而当无法键入或显示字符时,方法 1 是必要的。
1. 使用 Unicode 转义序列
在 Java 中存储 Unicode 字符的一种方法是使用 Unicode 转义序列。转义序列是一系列表示特殊字符的字符。在 Java 中,Unicode 转义序列以字符'\u'开头,后跟四个十六进制数字,这些数字表示所需字符的 Unicode 代码点。
示例:Unicode 转义序列的使用
package com.tutorialspoint;
public class UnicodeCharacterDemo {
public static void main (String[]args) {
//Unicode escape sequence
char unicodeChar = '\u0041';
// point for 'A'
System.out.println("Stored Unicode Character: " + unicodeChar);
}
}
编译并运行上面的程序。这将产生以下结果:
输出
Stored Unicode Character: A
在上面的代码片段中,Unicode 转义序列 '\u0041' 表示字符 'A'。该转义序列被赋值给 char 变量 unicodeChar,然后将存储的字符打印到控制台。
2. 直接存储 Unicode 值
或者,您可以通过将字符括在单引号中来直接将 Unicode 字符存储在 char 变量中。但是,对于无法使用键盘直接键入或不可见的字符(例如控制字符),这种方法可能不可行。
示例 1:将 Unicode 字符赋给变量
package com.tutorialspoint;
public class UnicodeCharacterDemo {
public static void main(String[] args) {
// Storing Unicode character directly
char unicodeChar = 'A';
// Directly storing the character 'A'
System.out.println("Stored Unicode Character: " + unicodeChar);
}
}
编译并运行上面的程序。这将产生以下结果:
输出
Stored Unicode Character: A
在这个例子中,字符 'A' 直接用单引号括起来并赋给 char 变量 unicodeChar。然后将存储的字符打印到控制台。
示例 2:将 Unicode 值赋给变量
package com.tutorialspoint;
public class UnicodeCharacterDemo {
public static void main(String[] args) {
// Storing Unicode characters using escape sequences
char letterA = '\u0041';
char letterSigma = '\u03A3';
char copyrightSymbol = '\u00A9';
// Storing Unicode characters directly
char letterZ = 'Z';
char letterOmega = 'Ω';
char registeredSymbol = '®';
// Printing the stored Unicode characters
System.out.println("Stored Unicode Characters using Escape Sequences:");
System.out.println("Letter A: " + letterA);
System.out.println("Greek Capital Letter Sigma: " + letterSigma);
System.out.println("Copyright Symbol: " + copyrightSymbol);
System.out.println("\nStored Unicode Characters Directly:");
System.out.println("Letter Z: " + letterZ);
System.out.println("Greek Capital Letter Omega: " + letterOmega);
System.out.println("Registered Symbol: " + registeredSymbol);
}
}
编译并运行上面的程序。这将产生以下结果:
输出
Stored Unicode Characters using Escape Sequences: Letter A: A Greek Capital Letter Sigma: Σ Copyright Symbol: © Stored Unicode Characters Directly: Letter Z: Z Greek Capital Letter Omega: Ω Registered Symbol: ®
示例 3:将 Unicode 字符和值赋给变量
此示例演示如何操作存储的 Unicode 字符。它计算大写字母 'A' 和小写字母 'a' 之间的差值,并使用该差值计算大写字母 'C'。然后,通过在大写字母 'C' 的 Unicode 代码点上加 32 来计算小写字母 'c'。操作后的 Unicode 字符将打印到控制台。
package com.tutorialspoint;
public class UnicodeCharacterDemo {
public static void main(String[] args) {
// Storing Unicode characters using escape sequences
char letterA = '\u0041';
char letterSmallA = '\u0061';
// Storing Unicode characters directly
char letterB = 'B';
// Manipulating the stored Unicode characters
int difference = letterA - letterSmallA;
char letterC = (char) (letterB + difference);
char letterSmallC = (char) (letterC + 32);
// Printing the manipulated Unicode characters
System.out.println("Manipulated Unicode Characters:");
System.out.println("Difference between A and a: " + difference);
System.out.println("Calculated Letter C: " + letterC);
System.out.println("Calculated Letter c: " + letterSmallC);
}
}
编译并运行上面的程序。这将产生以下结果:
输出
Manipulated Unicode Characters: Difference between A and a: -32 Calculated Letter C: " Calculated Letter c: B
结论
在 Java 中,您可以使用字符字面量来存储 Unicode 字符,方法是使用 Unicode 转义序列或直接将字符用单引号括起来。这两种方法各有优缺点。转义序列提供了一种一致的方式来表示源代码中的任何 Unicode 字符,而直接存储字符在处理易于键入或显示的字符时更方便。
本文提供了一种在 Java 中存储 Unicode 字符的算法,讨论了两种不同的存储这些字符的方法,并演示了每种方法的工作示例。了解这些技术将帮助开发人员创建能够与各种语言和脚本无缝工作的应用程序,从而充分利用 Java 编程中 Unicode 的强大功能。