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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高贵杰 中级黑马   /  2013-6-2 20:43  /  1322 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

刚才在做代码复习的时候,突然想到如果一个数值连续转型会输出什么结果?我百度了一下,这个情况叫做多重转型,虽然网上有具体解释,可是我还是不太明白,为什么第二个转型要输出“?”请各位大神帮忙

class  Test
{
        public static void main(String[] args)
        {
                System.out.println((int)(char) -1);
                System.out.println((char) (byte) -1);
                System.out.println((int)(char)(byte) -1);
        }
}
输出结果:
65535
?
65535

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

4 个回复

倒序浏览
   我觉得你说这个问题,在切割汉字时候可能会用的到,我写了一个过一道题是
10、 编写一个截取字符串的函数,输入为一个字符串和字节数,
               输出为按字节截取的字符串。 但是要保证汉字不被截半个,
              如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
这个是题目,我写的时候,就是出入一个字符串,然后转成byte[] by 数组,在对中间的每个元素进行遍历,
这要怎么判断呢,就是在遍历的时候把byte转成int类型的,因为每个字母和汉字在编码表中都会用一个数字来表示的,而汉字是2个字节,
所以,这个应该就是连续转型的吧,具体其他涉及到问题的连续转型,我真还没遇到过,嘻嘻

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
是不是就是?问号在ASCII码中的值
回复 使用道具 举报
-1转型为char,则变成了0xffff,这个不知道在unicode码表中查不查的到?个人理解,问题出在这里。
回复 使用道具 举报
“?”的Unicode值是:3F 00
你输出的对应?号应该是GBK码表的,反正肯定不是ASCII码表的字符。

QQ截图20130602235715.png (24.38 KB, 下载次数: 0)

输出结果

输出结果

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马