int类型和char类型的区别
下⾯三个定义式的区别:
int i = 1;
char i = 1;
char i = '1';
int⽤来定义整型变量,char⽤来定义字符型变量,要清楚的知道三个定义式的区别,可以⽐较它们在内存中的存储形式。
数据在内存中是以⼆进制形式存放的,⽽且是以补码表⽰的。⼀个正整数的补码和该数的原码(即该数的⼆进制形式)相同;如果数值是负的,求补码的⽅法是:将该数的绝对值的⼆进制形式,按位取反再加1。
int i = 1,则内存中的存储形式为:0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
在讨论字符型数据以前,⾸先要明确⼀个“编码”的概念,即约定⼀套规则,将a、b、#等符号⽤⼆进制的
形式表⽰出来,然后⼤家都遵守这个规则。美国信息交换标准码(ASCII)就是基于这样的⽬的产⽣的。那么我们现在来看下⾯两个定义式:
char i = 1;
char i = '1';
将⼀个整型常量放到⼀个字符变量中,实际就是把以该整型常量表⽰的ASCII码放到内存单元中。(ASCII码是以⼗进制整数表⽰的)
将⼀个字符常量放到⼀个字符变量中,实际上并不是把该字符本⾝放到内存单元中去,⽽是把该字符的相应ASCII代码放到存储单元中。char i = 1;则i的ASCII就是1,在内存中就是0 0 0 0 0 0 0 1
char i = ‘1’;则i的ASCII就是字符‘1’的ASCII码49,就是0 0 1 1 0 0 0 1
上⾯是int和char的区别,它们的联系就是存储形式类似,就是⼀个是1个字节,⼀个是2个字节。int 可以⽤字符常量赋值,char也可以⽤整型常量赋值,它们之间的桥梁就是ASCII码,因为字符是与ASCII⼀⼀对应的。
char能不能存中⽂字符
在C语⾔中,char类型占1⼀个字节,⽽汉⼦占2个字节,所以不能存储。
在Java中,char类型占2个字节,⽽且Java默认采⽤Unicode编码,以个Unicode码是16位,所以⼀个Unicode码占两个字节,Java中⽆论汉⼦还是英⽂字母都是⽤Unicode编码来表⽰的。所以,在Java中,char类型变量可以存储⼀个中⽂汉字。
char a = 65535;
unicode码和ascii码区别char b = 65536;//报错 Type mismatch: cannot convert from int to char
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论