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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wahaha 中级黑马   /  2013-2-20 20:44  /  1363 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 夏添 于 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);
        }
}


7 个回复

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

点评

嗯,呵呵,我可能没问清楚,准确的提问应该是问内存上怎么运行的,陈圳兄正解也。其它的朋友回答的也很生动哈,谢谢诸位了啊~~!  发表于 2013-2-20 22:05
回复 使用道具 举报
肿么把介个帖子弄成已解决呢??
回复 使用道具 举报
陈圳 高级黑马 2013-2-21 13:54:41
7#
夏添 发表于 2013-2-21 13:45
肿么把介个帖子弄成已解决呢??

点帖子下面的编辑,然后修改帖子类型
回复 使用道具 举报
wahaha 中级黑马 2013-2-21 15:02:46
8#
陈圳 发表于 2013-2-21 13:54
点帖子下面的编辑,然后修改帖子类型

谢谢你拉哈,:P
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马