《Java和Android开发学习指南(第2版)》—— 第2章 语言基础 2.1 ASCII和Unicode

简介: 传统上,英语国家的计算机只使用美国信息交换标准代码(American Standard Code for Information Interchange,ASCII)字符来表示字母和数字字符。ASCII中的每个字符都用7位来表示。

本节书摘来异步社区《Java和Android开发学习指南(第2版)》一书中的第2章,第2.1节,作者:【加】Budi Kurniawan,更多章节内容可以访问云栖社区“异步社区”公众号查看。

第2章 语言基础

Java和Android开发学习指南(第2版)
Java是一种面向对象编程语言,因此,理解OOP非常重要。第4章是本书的第一个关于OOP内容的一章。然而,在了解OOP功能和技术之前,应该先学习Java语言的基础知识。

2.1 ASCII和Unicode

传统上,英语国家的计算机只使用美国信息交换标准代码(American Standard Code for Information Interchange,ASCII)字符来表示字母和数字字符。ASCII中的每个字符都用7位来表示。因此,这个字符集中有128个字符。其中包括小写和大写的拉丁字母、数字和标点符号。

ASCII字符集后来扩展了,包括了另外的128个字符,例如,德语字符ä、ö、ü和英国货币符号£。这个字符集叫作扩展了的ASCII,并且每个字符使用8位来表示。

ASCII和扩展的ASCII只是可用的众多字符集中的两个。另一个流行的字符集由国际标准化组织(International Standards Organization,ISO)标准化了,即ISO-8859-1,也称之为Latin-1。ISO-8859-1中的每一个字符也用8位来表示。这个字符集包含了很多西方语言(如德语、丹麦语、荷兰语、法语、意大利语、西班牙语、葡萄牙语,当然也包括英语)编写文本所需的所有字符。每个字符占8位的字符集便于使用,因为一个字节也是8位的长度。因此,用一个8位的字符集来存储和传输文本,也更有效率。

然而,并不是每种语言都使用Latin字母。中文和日文是使用不同的字符集的两个例子。例如,中文中的每个字符表示一个字,而不是一个字母。这样的字符有数千个,8位不足以表示字符集中的所有字符。日文也使用一种不同字符集。全部算起来,全世界的语言中,有数以百计的不同的字符集。为了统一所有字符集,创建了一个叫作Unicode的计算标准。

Unicode是由一个叫作Unicode联盟(Unicode Consortium,www.unicode.org)的非营利的组织开发的。这个实体试图将全世界所有语言的所有字符,都包含到一个单个的字符集中。Unicode中的一个唯一的编号,只表示1个字符。Unicode当前的版本8,用于Java、XML、ECMAScript和LDAP等。

一开始,一个Unicode字符用16位来表示,这足够表示65 000多个不同的字符。65 000字符足以表示世界上主要语言中的大多数字符了。然而,Unicode联盟计划支持100万个以上的字符编码。根据这个数量,可能还需要另外的16位才能表示每个字符。实际上,32位系统被认为是存储Unicode字符的一种方便的方式。

现在,你已经看到了一个问题。尽管Unicode为所有语言中的所有字符提供了足够的空间,但是,存储和传输Unicode文本并不像存储和传输ASCII或Latin-1字符那样高效。在互联网世界中,这是一个大问题。想象一下,你要传输的数据是ASCII文本的4倍那么多。

好在字符编码可以使得存储和传输Unicode文本更加高效。你可以把字符编码看作是和数据压缩类似。并且,如今有很多类型的字符编码可用。Unicode联盟支持如下3种:

UTF-8。这在HTML中很流行,并且用作将Unicode字符转换为不同长度的字节编码的协议。它利用了一个优点,即Unicode字符与人们熟悉的ASCII具有相同的字节值。转换为UTF-8的Unicode字符可以用于很多已有的软件。大多数浏览器都支持UTF-8字符编码。
UTF-16。在这一字节编码中,所有较为常用的字符都放入到单个的16位的编码单元中,其他较少用到的字符,通过一对16位的编码单元来访问。
UTF-32。这个字节编码为单个的字符使用32位。这显然不是Internet应用程序的选择,至少目前还不是。
ASCII字符仍然在软件编程中扮演主要的角色。Java对于几乎所有的输入元素都使用ASCII,除了注释、标识符以及字符和字符串内容之外。对于后者,Java支持Unicode字符。这意味着,你可以用英语以外的语言来编写注释、标识符和字符串。

相关文章
|
8月前
|
安全 前端开发 Java
《深入理解Spring》:现代Java开发的核心框架
Spring自2003年诞生以来,已成为Java企业级开发的基石,凭借IoC、AOP、声明式编程等核心特性,极大简化了开发复杂度。本系列将深入解析Spring框架核心原理及Spring Boot、Cloud、Security等生态组件,助力开发者构建高效、可扩展的应用体系。(238字)
|
8月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1518 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
8月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1059 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
8月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1143 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
8月前
|
Java
Java语言实现字母大小写转换的方法
Java提供了多种灵活的方法来处理字符串中的字母大小写转换。根据具体需求,可以选择适合的方法来实现。在大多数情况下,使用 String类或 Character类的方法已经足够。但是,在需要更复杂的逻辑或处理非常规字符集时,可以通过字符流或手动遍历字符串来实现更精细的控制。
506 18
|
9月前
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
897 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
|
8月前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
357 4
|
8月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
399 0
|
9月前
|
存储 Java Apache
Java语言操作INI配置文件策略
以上步骤展示了基本策略,在实际项目中可能需要根据具体需求进行调整优化。例如,在多线程环境中操作同一份配置时需要考虑线程安全问题;大型项目可能还需考虑性能问题等等。
357 15
|
9月前
|
消息中间件 人工智能 Java
抖音微信爆款小游戏大全:免费休闲/竞技/益智/PHP+Java全筏开源开发
本文基于2025年最新行业数据,深入解析抖音/微信爆款小游戏的开发逻辑,重点讲解PHP+Java双引擎架构实战,涵盖技术选型、架构设计、性能优化与开源生态,提供完整开源工具链,助力开发者从理论到落地打造高留存、高并发的小游戏产品。