黑马程序员技术交流社区

标题: 多重转型 [打印本页]

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

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

作者: 神之梦    时间: 2013-6-2 22:19
是不是就是?问号在ASCII码中的值
作者: kaka小明    时间: 2013-6-2 23:22
-1转型为char,则变成了0xffff,这个不知道在unicode码表中查不查的到?个人理解,问题出在这里。
作者: 潘廖明    时间: 2013-6-3 00:09
“?”的Unicode值是:3F 00
你输出的对应?号应该是GBK码表的,反正肯定不是ASCII码表的字符。

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

输出结果

输出结果





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