黑马程序员技术交流社区

标题: int ch = '9'过程是怎样的呢? [打印本页]

作者: wahaha    时间: 2013-2-20 20:44
标题: int ch = '9'过程是怎样的呢?
本帖最后由 夏添 于 2013-2-21 15:01 编辑

下面的小程序结果是打印97,这个木疑问,我想请教的是, int ch = 'a'; 这句代码的过程是怎样的呢?就是ch怎么被赋值97的,求生动讲解~~~!!

class haha
{
        public static void main(String[] args)
        {
                int ch = 'a';
               
                System.out.println(ch);
        }
}



作者: 曹春贵    时间: 2013-2-20 20:48
其实‘a’这是代表一个字符,它赋值给整型的话就自动转换成ascii值赋给ch了,而'a'的ascii值就是97
作者: 罗海云    时间: 2013-2-20 20:59
'a'  在ascii码表里代表的数字是97, 因为你定义的是int型, 所以会自动查表并赋值
作者: 杨玲    时间: 2013-2-20 21:13
呵呵,好吧,要生动!首先'9'是一个字符,这没什么疑问吧,而字符在java中是2个字节表示的,
二进制:。。。。。。。好吧,这难倒我了,知道它是二进制就成。
一个int 是4个字节,当发生低类型向高类型转换的时候,
如果是无符号类型直接在前面不两个字节的0,
如果是用符号的类型,则根据最高位来补,也就是说最高位是0就补0,是1就补1,反正不够4个字节。
我觉得还是写而进制代码吧。要生动嘛!
  1. 00000000 00111000//我们就假设它是‘9’吧。
  2. 现在进行类型提升:
  3. 00000000 00000000 00000000 00111000
  4. 差不多就是这个样子的了
复制代码

作者: 陈圳    时间: 2013-2-20 21:20
class haha
{
        public static void main(String[] args)
        {
                int ch = 'a';
               
                System.out.println(ch);
        }
}
从内存来说吧.int ch在栈内在中开辟了一块空间为整型,命名为ch型,
把'a'的值赋给ch其实分俩步,java进制的转换都是从低到高的,byte/short/char 都是低于int 型的,如果与int型的运算,要转换成int型
其实就是int ch=(int)'a';将'a'进行往上转换,'a'的ASCII码是97,java采用编码原则是Unicode码,数值更广泛,达65535个,里面包含了ASCII码255个.
'a'的值为97.所以整型变量ch=97;
作者: wahaha    时间: 2013-2-21 13:45
肿么把介个帖子弄成已解决呢??

作者: 陈圳    时间: 2013-2-21 13:54
夏添 发表于 2013-2-21 13:45
肿么把介个帖子弄成已解决呢??

点帖子下面的编辑,然后修改帖子类型
作者: wahaha    时间: 2013-2-21 15:02
陈圳 发表于 2013-2-21 13:54
点帖子下面的编辑,然后修改帖子类型

谢谢你拉哈,:P




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2