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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 宋启龙 中级黑马   /  2012-8-4 07:39  /  1549 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class  aa
{
        public static void main(String[] args)
        {
                System.out.println((char)('a'+'b'));

        }
}
    a    97       b   98    ?    63他的结果为什么是个问号

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

9 个回复

倒序浏览
那个问号是占位符,并不是ASKII码值对应的?,
因为'a'+'b'超出了0-127的范围,
不信的话你试试'a'+'c’ 得出的肯定还是?
回复 使用道具 举报
楼上正解  
我把表给你 按着表上多试几次,就懂了
Char  Dec  Oct  Hex | Char  Dec  Oct  Hex | Char  Dec  Oct  Hex | Char Dec Oct Hex
-----------------------------------------------------------------------------------
(nul)   0 0000 0x00 | (sp)   32 0040 0x20 | @     64 0100 0x40 | `    96 0140 0x60
(soh)   1 0001 0x01 | !      33 0041 0x21 | A     65 0101 0x41 | a    97 0141 0x61
(stx)   2 0002 0x02 | "      34 0042 0x22 | B     66 0102 0x42 | b    98 0142 0x62
(etx)   3 0003 0x03 | #      35 0043 0x23 | C     67 0103 0x43 | c    99 0143 0x63
(eot)   4 0004 0x04 | $      36 0044 0x24 | D     68 0104 0x44 | d    100 0144 0x64
(enq)   5 0005 0x05 | %      37 0045 0x25 | E     69 0105 0x45 | e    101 0145 0x65
(ack)   6 0006 0x06 | &      38 0046 0x26 | F     70 0106 0x46 | f    102 0146 0x66
(bel)   7 0007 0x07 | '      39 0047 0x27 | G     71 0107 0x47 | g    103 0147 0x67
(bs)    8 0010 0x08 | (      40 0050 0x28 | H     72 0110 0x48 | h    104 0150 0x68
(ht)    9 0011 0x09 | )      41 0051 0x29 | I     73 0111 0x49 | i    105 0151 0x69
(nl)   10 0012 0x0a | *      42 0052 0x2a | J     74 0112 0x4a | j    106 0152 0x6a
(vt)   11 0013 0x0b | +      43 0053 0x2b | K     75 0113 0x4b | k    107 0153 0x6b
(np)   12 0014 0x0c | ,      44 0054 0x2c | L     76 0114 0x4c | l    108 0154 0x6c
(cr)   13 0015 0x0d | -      45 0055 0x2d | M     77 0115 0x4d | m    109 0155 0x6d
(so)   14 0016 0x0e | .      46 0056 0x2e | N     78 0116 0x4e | n    110 0156 0x6e
(si)   15 0017 0x0f | /      47 0057 0x2f | O     79 0117 0x4f | o    111 0157 0x6f
(dle)  16 0020 0x10 | 0      48 0060 0x30 | P     80 0120 0x50 | p    112 0160 0x70
(dc1)  17 0021 0x11 | 1      49 0061 0x31 | Q     81 0121 0x51 | q    113 0161 0x71
(dc2)  18 0022 0x12 | 2      50 0062 0x32 | R     82 0122 0x52 | r    114 0162 0x72
(dc3)  19 0023 0x13 | 3      51 0063 0x33 | S     83 0123 0x53 | s    115 0163 0x73
(dc4)  20 0024 0x14 | 4      52 0064 0x34 | T     84 0124 0x54 | t    116 0164 0x74
(nak)  21 0025 0x15 | 5      53 0065 0x35 | U     85 0125 0x55 | u    117 0165 0x75
(syn)  22 0026 0x16 | 6      54 0066 0x36 | V     86 0126 0x56 | v    118 0166 0x76
(etb)  23 0027 0x17 | 7      55 0067 0x37 | W     87 0127 0x57 | w    119 0167 0x77
(can)  24 0030 0x18 | 8      56 0070 0x38 | X     88 0130 0x58 | x    120 0170 0x78
(em)   25 0031 0x19 | 9      57 0071 0x39 | Y     89 0131 0x59 | y    121 0171 0x79
(sub)  26 0032 0x1a | :      58 0072 0x3a | Z     90 0132 0x5a | z    122 0172 0x7a
(esc)  27 0033 0x1b | ;      59 0073 0x3b | [     91 0133 0x5b | {    123 0173 0x7b
(fs)   28 0034 0x1c | <      60 0074 0x3c | \     92 0134 0x5c | |    124 0174 0x7c
(gs)   29 0035 0x1d | =      61 0075 0x3d | ]     93 0135 0x5d | }    125 0175 0x7d
(rs)   30 0036 0x1e | >      62 0076 0x3e | ^     94 0136 0x5e | ~    126 0176 0x7e
(us)   31 0037 0x1f | ?      63 0077 0x3f | _     95 0137 0x5f | (del) 127 0177 0x7f
回复 使用道具 举报
a    97       b   98
字符所对应整数值的范围是0-127
'a'+'b'得值为97+98=195。超过了这个范围。所以显示?
可以试下System.out.println((char)195);也是显示?
回复 使用道具 举报
楼主 我建议你可以 百度 一下  ASCII 码  对照表  char'a'+'b' > 127
  1. public class Demo01
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 char a = 'q';
  6.                 char b = 'b';
  7.                
  8.                 System.out.println(a+b);
  9.         }
  10. }
复制代码
运行结果为211 > 127 所以转换为 char 就i会 变成 ?

看代码
  1. public class Demo01
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 char a = 'q';
  6.                 char b = 'b';
  7.                
  8.                 System.out.println((char)(a+b));
  9.         }
  10. }
复制代码
希望对你有所帮助  
回复 使用道具 举报
谢谢  楼上各位     问题解释得很详细!!!以解决
回复 使用道具 举报
尤洋 发表于 2012-8-4 08:37
那个问号是占位符,并不是ASKII码值对应的?,
因为'a'+'b'超出了0-127的范围,
不信的话你试试'a'+'c’ 得 ...

谢谢  懂了 只要超出范围的就都是?
回复 使用道具 举报
戎石锁问枫 发表于 2012-8-4 08:47
楼上正解  
我把表给你 按着表上多试几次,就懂了
Char  Dec  Oct  Hex | Char  Dec  Oct  Hex | Char  Dec ...

谢谢     很详细
回复 使用道具 举报
java中一个字符不是占用两个字节吗?也就是16个二进制位
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马