字符、字节的概念及其区别
首先我们先看一下这个问题:“Java语言中字符串“学Java”所占的内存空间是几个字节?”,要回答这个问题我们就必须先要清楚什么是“字节”什么是“字符”。字节(Byte):字节是通过网络传输信息(或在硬盘或内存中存储信息)的单位。字节是计算机信息技术用于计量存储容量和传输容量的一种计量单位,1个字节等于8位二进制,它是一个8位的二进制数,是一个很具体的存储空间。
字符:人们使用的记号,抽象意义上的一个符号。 '1', '中', 'a', '$', '¥', ……
谈到字符就不得不提ANSI及UNICODE两种不同的编码方式标准(对这两种编码方式标准在此我只简单提一下,如果大家有兴趣可以自己去查一下),ANSI中的字符采用8bit,而UNICODE中的字符采用16bit。(对于字符来说ANSI以单字节存放英文字符,以双字节存放中文等字符,而Unicode下,英文和中文的字符都以双字节存放)Unicode码也是一种国际标准编码,采用二个字节编码,与ANSI码不兼容。 ANSI规定:一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字,前面的一个字节(他称之为高字节)从0xA1用到 0xF7,后面一个字节(低字节)从0xA1到0xFE,这样我们就可以组合出大约7000多个简体汉字了。在这些编码里,我们还把数学符号、罗马希腊的字母、日文的假名们都编进去了,连在 ASCII 里本来就有的数字、标点、字母都统统重新编了两个字节长的编码,这就是常说的"全角"字符,而原来在127号以下的那些就叫"半角"字符了。从 UNICODE 开始,无论是半角的英文字母,还是全角的汉字,它们都是统一的"一个字符"!同时,也都是统一的"两个字节"。
我们可以简单的记这样一个结论:按照ANSI编码标准,标点符号、数字、大小写字母都占一个字节,汉字占2个字节。按照UNICODE标准所有字符都占2个字节。
我们再来看一下字符串,由于字符有2种编码标准,所以字符串也分为2种。
字符串(ANSI):在内存中,如果“字符”是以 ANSI 编码形式存在的,一个字符可能使用一个字节或多个字节来表示,那么我们称这种字符串为 ANSI 字符串或者多字节字符串。
字符串(UNICODE):在内存中,如果“字符”是以在 UNICODE 中的序号存在的,那么我们称这种字符串为 UNICODE 字符串或者宽字节字符串。
由于不同 ANSI 编码所规定的标准是不相同的,因此,对于一个给定的多字节字符串,我们必须知道它采用的是哪一种编码规则,才能够知道它包含了哪些“字符”。而对于 UNICODE 字符串来说,不管在什么环境下,它所代表的“字符”内容总是不变的。
至此我们在上面提出的问题就迎刃而解了,因为在Java当中字符是采用Unicode编码标准的,所以“学Java”这个字符串在Java语言中占10个字节。
相关推荐
### Java字节与字符 #### 一、字节流与字符流的...通过本篇文章的介绍,我们可以了解到Java中字节流和字符流的基本概念及其常用操作方法。这两种流在实际开发中都非常重要,能够帮助开发者有效地处理各种类型的文件。
本文将重点介绍双字节、多字节、宽字节与Unicode之间的关系及其转换原理,帮助读者更好地理解这些概念及其应用场景。 #### 二、扩展ASCII编码与代码页 **1. 扩展ASCII编码** 传统的ASCII编码仅支持128个字符(即...
2. **字符流**:字符流处理的是Unicode字符,主要由`Reader`和`Writer`类及其子类构成。` FileReader`和`FileWriter`是处理文件的字符流。字符流在处理文本文件时更为方便,因为它能自动处理字符编码。在源码中,...
Java的输入和输出主要涉及到流的...总的来说,这个实验旨在帮助学习者理解Java中字节流和字符流的基本概念和用法,包括文件的读写、字符与字节的转换以及流的层次结构。通过实践这些练习,可以深入掌握Java的I/O操作。
题目给出的部分内容似乎是一些杂乱无章的文字,但其中包含了计算字符长度的基本概念。这里尝试解析一下这段内容可能想表达的意思: ```javascript // 获取文本框的值 var txtValue = $("#txtEbauthor").val(); // ...
这里我们主要讨论的是"GBK"、"UTF"和"ANSI"这三种字符集及其字节顺序,这些是编程和系统集成中的常见问题。 首先,让我们来逐一了解这些字符集: 1. **GBK字符集**:GBK全称为“汉字内码扩展规范”,是中国大陆...
- 遍历字节数组,检查每个字节是否小于0(即非ASCII字符)。 - 如果是负数,则使用位运算 `(bt[i] & (0x7f))` 转换为相应的ASCII值,并添加到结果字符串中。 - 如果是非负数,则认为是英文字符,先添加一个空字符...
UTF-8的特点是它使用可变长度的字节序列来表示每个字符,英文字符只用1个字节,而大部分汉字则需要3个或4个字节。这种设计既节省空间,又能兼容ASCII,因此在互联网上广泛使用。 ASCII编码表和Unicode汉字编码表是...
本文将深入探讨易语言中的字节集模块及其相关知识点。 一、字节集的基本概念 字节集是易语言中用来存储一系列字节(8位无符号整数)的数据结构。它可以用来表示任意的二进制数据,例如图片、音频、视频等非文本...
Java IO(Input/Output)是...了解和熟练掌握字节流、字符流、缓冲流和转换流的概念及其用法,对于Java开发人员来说至关重要。通过IODemo实例,开发者可以更好地实践和巩固这些知识点,提升自身在IO操作方面的技能。
字符集与字符编码是计算机处理文字的基础,它们决定了如何用二进制表示各种语言的字符。在信息技术领域,理解和掌握字符集与字符编码至关...通过阅读这些文件,你可以进一步深入理解字符集和字符编码的概念及其应用。
因此,理解大小端字节序的概念及其相互转换方法是开发跨平台软件的基础。 #### 二、大小端字节序的基本概念 **大小端字节序**主要指计算机存储多字节数据时,字节的高低位在内存中的排列顺序。这涉及到两种基本的...
本篇文章将详细探讨ANSI字符串与Unicode字符串的相互转换及其重要性。 首先,我们要理解ANSI字符串的概念。ANSI字符串实际上是一个历史遗留的术语,它通常指的是基于特定区域设置的本地化ASCII扩展编码,如Windows...
在计算机编程与数据处理领域中,全角和半角字符的区别及其转换是一项常见的需求。特别是在东亚语言环境中(如中文、日文、韩文等),这种转换对于文本处理至关重要。 #### 全角与半角的概念 1. **全角字符**:全角...
本文档将深入探讨与MFC(Microsoft Foundation Classes)中的字符串类相关的概念,尤其是C++环境下字符串的操作及编码问题。文档标题《MFC字符串类》暗示了其内容将集中于MFC框架内的字符串类及其应用;而描述部分则...
在Java PD-Ch07mao中,主要探讨了关于字符串及其应用的一些关键概念和技术。本章节涵盖了以下几个方面: 1. **创建字符串对象**:Java中字符串是不可变的,即一旦创建,就不能修改。可以通过两种方式创建字符串对象...
在设置和管理Oracle数据库时,理解字符集的概念及其工作原理是至关重要的,这有助于确保数据的一致性和正确性,避免因字符编码不匹配导致的问题。在数据库创建、迁移或升级过程中,特别要注意字符集的转换和兼容性...
本文将深入探讨字符集的基本概念、不同类型的字符集及其编码方式,重点介绍Unicode这一广泛使用的字符集。 #### 二、文本与字符 在计算机中,文本由字符组成。字符可以是字母、数字、标点符号或其他符号,例如数学...
本文将详细探讨字符编码的基础知识,并着重介绍几种常见的字符编码及其转换方法,特别是针对中文字符的处理。 #### 二、ASCII与扩展ASCII ASCII(American Standard Code for Information Interchange)即美国信息...