`
叹望天空
  • 浏览: 8636 次
  • 性别: Icon_minigender_1
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

字符、字节的概念及其区别

 
阅读更多

<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr> 首先我们先看一下这个问题:“Java语言中字符串“学Java”所占的内存空间是几个字节?”,要回答这个问题我们就必须先要清楚什么是“字节”什么是“字符”。

<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr> 字节(Byte):字节是通过网络传输信息(或在硬盘或内存中存储信息)的单位。字节是计算机信息技术用于计量存储容量和传输容量的一种计量单位,1个字节等于8位二进制,它是一个8位的二进制数,是一个很具体的存储空间。

<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr> 字符:人们使用的记号,抽象意义上的一个符号。 '1' '' 'a' '$' '' ……

<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr> 谈到字符就不得不提ANSIUNICODE两种不同的编码方式标准(对这两种编码方式标准在此我只简单提一下,如果大家有兴趣可以自己去查一下),ANSI中的字符采用8bit,而UNICODE中的字符采用16bit。(对于字符来说ANSI以单字节存放英文字符,以双字节存放中文等字符,Unicode下,英文和中文的字符都以双字节存放)Unicode码也是一种国际标准编码,采用二个字节编码,与ANSI码不兼容。<wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr> ANSI规定:一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字,前面的一个字节(他称之为高字节)从0xA1用到 0xF7,后面一个字节(低字节)从0xA10xFE,这样我们就可以组合出大约7000多个简体汉字了。在这些编码里,我们还把数学符号、罗马希腊的字母、日文的假名们都编进去了,连在 ASCII 里本来就有的数字、标点、字母都统统重新编了两个字节长的编码,这就是常说的"全角"字符,而原来在127号以下的那些就叫"半角"字符了。从 UNICODE 开始,无论是半角的英文字母,还是全角的汉字,它们都是统一的"一个字符"!同时,也都是统一的"两个字节"

<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr> 我们可以简单的记这样一个结论:按照ANSI编码标准,标点符号、数字、大小写字母都占一个字节,汉字占2个字节。按照UNICODE标准所有字符都占2个字节。

<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr> 我们再来看一下字符串,由于字符有2种编码标准,所以字符串也分为2种。

<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr> 字符串(ANSI):在内存中,如果字符是以 ANSI 编码形式存在的,一个字符可能使用一个字节或多个字节来表示,那么我们称这种字符串为 ANSI 字符串或者多字节字符串。

<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr> 字符串(UNICODE):在内存中,如果字符是以在 UNICODE 中的序号存在的,那么我们称这种字符串为 UNICODE 字符串或者宽字节字符串。

<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr> 由于不同 ANSI 编码所规定的标准是不相同的,因此,对于一个给定的多字节字符串,我们必须知道它采用的是哪一种编码规则,才能够知道它包含了哪些字符。而对于 UNICODE 字符串来说,不管在什么环境下,它所代表的字符内容总是不变的。

<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr> 至此我们在上面提出的问题就迎刃而解了,因为在Java当中字符是采用Unicode编码标准的,所以“学Java”这个字符串在Java语言中占10个字节。

分享到:
评论

相关推荐

    java培训机构内部预习文档

    chp1.语言基础 基本语法、标识符、命名规范、八种基本类型、...chp14.I/O框架 File类、流的分类、基本字节流、基本字符流、字节过滤流、字符过滤流、桥转换、对象序列化 chp15.反射 类对象及其获取方式,反射常用方法

    计算机基础教学设计.doc

    了解字节的概念及其单位的换算。 2、过程与方法目标:能利用所学知识与技能解决日常生活、学习中的实际问题。 3、情感态度与价值观目标:体验信息技术蕴含的文化内涵,形成和保持对信息技术 的求知欲,养成积极主动...

    全国计算机考试一级WPS Office考试大纲

    计算机中数据的表示:二进制的概念,整数的二进制表示,西文字符的ASCII码表示,汉字及其编码(国标码),数据的存储单位(位、字节、字)。  3. 计算机病毒的概念和病毒的防治。  4. 计算机硬件系统的组成和功能...

    Visual Basic.NET自动化系统监控--RS-232串行通信.(清华出版.范逸之.廖锦棋)

    4.1.1 字符和字节的差别 155 4.1.2 Visual Basic .NET中的 字符串类型 156 4.1.3 中英文字符串长度计算 158 4.1.4 字符编码内容 163 4.2 字节数据的送收 168 4.2.1 字节类型、声明与送收 168 4.2.2 动态数组 ...

    LABVIEW虚拟仪器从入门到测控应用130例.(电子工业.李江全.任玲.廖结安.温宝琴)

    本书从实际应用出发,通过130个典型实例系统地介绍了LabVIEW语言的程序设计方法及其测控应用技术,入门基础篇包括第0~10章,主要内容有LabVIEW基础、数值型数据、布尔型数据、字符串数据、数组数据、簇数据、数据...

    c# 加密和解密相关代码

    //将字符编码为一个字节序列 byte[] md5data = md5.ComputeHash(data); //计算data字节数组的哈希值 md5.Clear(); //清空MD5 对象 string str = ""; //定义一个变量,用来记录加密后的密码 for (int i = 0; i ; i++...

    Go语言程序设计中文版[人民邮电大学出版]

    9.4.2 字节流和字符串相关的包 336 9.4.3 容器包 337 9.4.4 文件和操作系统相关的包 339 9.4.5 图像处理相关的包 341 9.4.6 数学处理包 341 9.4.7 其他一些包 341 9.4.8 网络包 342 9.4.9 反射包 ...

    Go 语言程序设计

    9.4.2 字节流和字符串相关的包 336 9.4.3 容器包 337 9.4.4 文件和操作系统相关的包 339 9.4.5 图像处理相关的包 341 9.4.6 数学处理包 341 9.4.7 其他一些包 341 9.4.8 网络包 342 9.4.9 反射包 ...

    windows 程序设计中文版

    1.3.2 Windows对应程序 1.3.3 头文件 1.3.4 程序入口 1.3.5 MessageBox函数 1.3.6 编译、链接及运行 第2章Unicode简介 2.1 字符集简史 2.1.1 美国标准 2.1.2 美国以外的世界 2.1.3 扩展ASCII 2.1.4 双字节字符集 ...

    JAVA语言程序设计【高清版】.pdf

    192 10.1 数据流的基本概念 192 10.1.1 输入数据流 193 10.1.2 输出数据流 193 10.2 基本字节数据流类 193 10.2.1 文件数据流 193 10.2.2 过滤器数据流 195 10.3 基本字符流 195 10.4 文件的处理 ...

    西安理工大学 微机原理课件

    本章首先介绍了存储器的概念及其分类,介绍了内存、硬盘存储器和光盘存储器。又介绍了采用32位CPU的微型计算机系统的内存结构和典型的内存设计模式,这部分的内容较难理解,不要求掌握,只要对此有所了解就可以了。...

    WINDOWS系统开发汇编语言教程

     5 宏与子程序的区别  9.2 宏参数的特殊运算符  1 连接运算符  2 字符串整体传递运算符  3 字符转义运算符  4 计算表达式运算符  9.3 与宏有关的伪指令  1 局部标号伪指令  2 取消宏定义伪指令  3 ...

    汇编语言教程(AoGo汇编网站)

     5 宏与子程序的区别  9.2 宏参数的特殊运算符  1 连接运算符  2 字符串整体传递运算符  3 字符转义运算符  4 计算表达式运算符  9.3 与宏有关的伪指令  1 局部标号伪指令  2 取消宏定义伪指令  3 ...

    汇编语言教程Assembly Language

     5 宏与子程序的区别  9.2 宏参数的特殊运算符  1 连接运算符  2 字符串整体传递运算符  3 字符转义运算符  4 计算表达式运算符  9.3 与宏有关的伪指令  1 局部标号伪指令  2 取消宏定义伪指令  3 ...

    汇编语言.chm 学习汇编语言入门

     5 宏与子程序的区别  9.2 宏参数的特殊运算符  1 连接运算符  2 字符串整体传递运算符  3 字符转义运算符  4 计算表达式运算符  9.3 与宏有关的伪指令  1 局部标号伪指令  2 取消宏定义伪指令  3 ...

    汇编语言基础教程(8086).rar

     5 宏与子程序的区别  9.2 宏参数的特殊运算符  1 连接运算符  2 字符串整体传递运算符  3 字符转义运算符  4 计算表达式运算符  9.3 与宏有关的伪指令  1 局部标号伪指令  2 取消宏定义伪指令  3 中止宏...

Global site tag (gtag.js) - Google Analytics