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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马贾林栋 中级黑马   /  2012-10-31 21:42  /  1579 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑马贾林栋 于 2012-11-1 22:48 编辑
  1. class Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                
  6.                 char q='b';
  7.                 char w='a';
  8.                 q=(char)(q+w);
  9.                 sop(q);
  10.         }
  11.         public static void sop(Object obj )
  12.         {
  13.                 System.out.println(obj);
  14.         }
  15. }
复制代码
打印出来的结果是:?
怎么设置才能把对应的字符打印出来?

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

8 个回复

正序浏览
char是16位的,底层采用unicode编码保存,但是不代表所有的值都需要有字符,unicode也有没有用到的位置。
没有用到的位置,转成string的话就会出现?这个是java的内部机制
回复 使用道具 举报
樊鹏飞 发表于 2012-10-31 22:11
问下楼主想打印的结果是什么?
你的代码 我运行结果是  Ã
你将两个char类型的做加法运算 其实默认的是在将 ...

你运行的怎么会是Ã ??超出了ASCII码的127位数都打出"?号啊,我就纳闷你复制后怎么输出的,我也复制了楼主的代码结果是"?"不能打出内容
回复 使用道具 举报
樊鹏飞 发表于 2012-10-31 22:11
问下楼主想打印的结果是什么?
你的代码 我运行结果是  Ã
你将两个char类型的做加法运算 其实默认的是在将 ...

可能是工具的问题吧,我用的editplus,只能打印0~127对应的字符,超出的就打不出来了
回复 使用道具 举报
黑马贾林栋 发表于 2012-10-31 22:07
我用的Editplus,怎么设置下可以打印出来?换个编码表?

应该不行吧,即使有个编码表能查出字符,也没意义,因为我们都在使用GBK
回复 使用道具 举报
问下楼主想打印的结果是什么?
你的代码 我运行结果是  Ã
你将两个char类型的做加法运算 其实默认的是在将字符a和字符b在编码表中对应的值做运算 而他们对应的值是int类型的
回复 使用道具 举报
吴硕 发表于 2012-10-31 22:03
'a'的十进制是97
'b'的十进制是98
q='a'+'b'=195

我用的Editplus,怎么设置下可以打印出来?换个编码表?
回复 使用道具 举报
ASCII码表最大也就才到127.。。。。。w和q对应的值加起来大于127了,没有对应的字符了。。。。
你可以(char)127;
         (char)128;
这样做个试验
回复 使用道具 举报
'a'的十进制是97
'b'的十进制是98
q='a'+'b'=195
应该是查字符码表(系统默认GBK)195时,没有对应的字符,所以返回了?
实际的'?'在ASCII表(GBK兼容ASCII)中的十进制是63

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1 赞一个!

查看全部评分

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