黑马程序员技术交流社区
标题:
多重转型
[打印本页]
作者:
高贵杰
时间:
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)
下载附件
2013-6-2 23:57 上传
输出结果
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2