A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhang3216858 中级黑马   /  2016-3-18 00:46  /  1062 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

对于这个类型理解的不是很清楚,取值范围是0-65535全部都是字符么?这个类型开始学的话是否很重要

6 个回复

倒序浏览
Java语言使用的是16位的Unicode字符集作为编码方式,而Unicode被设计成支持世界上所有书面语言的字符,包含中文字符,因此Java程序支持各种语言字符。
所谓字符集,就是给字符进行编号之后组成的集合。早起老美给英文字符、数字、标点符号等字符进行了编号,他们认为所有字符顶多100多个,只需要一个字节(8位,支持256个字符编号)即可为所有字符编号——这ASCII编码(American Standard Code for Information Interchange)。后来,随着计算机的飞速发展,其他各国也为本国文字进行编码——制订本国的字符集,但这些字符集并不兼容。于是,老美又为世界上所有书面语言进行了统一编号,这次他们采用了2个字节(也就是16位,支持65336个字符编号),这就是Unicode字符集。
也就是说java语言中的字符型能够容纳65536个字符,不同的字符会对应不同的编号。不要和数值65536混淆。
回复 使用道具 举报
首先你知道0-65535这个数字是怎么来的么?
其实65535其实就是2的16次方,也就是两个2的8次方——也就是2个字节(Byte),所以说,一个char占用2个字节就是这个取值范围的由来。
而数据类型这些东西,其实已经是程序语言范畴里的概念了,而机器语言只有0和1,所以你这样在取值范围里去想存的是什么,实际上是混淆了这些概念。
你可以理解成,字符是一种“标准”,使用码表可以实现字符和数值的转换,这些是软件层面上实现的,取值范围则是硬件原理上决定的。至于计算机怎么知道你存的是数字还是字符什么的解释起来就太多了,你必须学完进制和内存操作等内容后结合各种码表标准的具体实现来看。。
你要想学好,所有的基础内容都很重要,打好基础后面才能事半功倍
回复 使用道具 举报
我也学习学习,~
回复 使用道具 举报
huangkai521 发表于 2016-3-18 01:46
Java语言使用的是16位的Unicode字符集作为编码方式,而Unicode被设计成支持世界上所有书面语言的字符,包含 ...

计算机在底层保存字符时,实际是该字符对应的编号,因此char类型的值也可直接作为整型值来使用,它相当于一个16位的无符号整数,表数范围是0~65535.
char类型的变量完全可以参与加减乘除等数学运算,也可以比较大小——实际上都是用该字符对应的编码参与运算。
如果把0~65535范围内一个int整数赋值给char变量,系统会自动把这个int整数当成char类型来处理。例如char c=97;实际上输出的是字符'a'.
回复 使用道具 举报
huangkai521 发表于 2016-3-18 12:31
计算机在底层保存字符时,实际是该字符对应的编号,因此char类型的值也可直接作为整型值来使用,它相当于 ...

谢谢大神知道,我得再看看
回复 使用道具 举报
就是计算机底层的2个字节对应的而进制数,你开始学了就会觉得很容易接受了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马