java char 类型

lg_asus 2010-10-12 09:31:30
public static void main(String...args){
String str = "A1B2";
char ch = str.charAt(1);
System.out.println(ch);//1
System.out.println(ch==1);//false
System.out.println((int)ch == 1);//false
System.out.println(String.valueOf(ch).equals("1"));//true
}


为什么前两个都是false?
...全文
170 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lg_asus 2010-10-14
  • 打赏
  • 举报
回复
多謝!結帖!
ETCentury 2010-10-13
  • 打赏
  • 举报
回复
留爪,那10分
wjwcq 2010-10-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wangyuxi1989 的回复:]
ch中存储的并不是整型的1,而是字符‘1’的unicode编码,你这里用判断ch==1自然是false,同理你将ch转换成int后ch的值不是1而是1的unicode码值49
[/Quote]
zqfddqr 2010-10-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wangyuxi1989 的回复:]
ch中存储的并不是整型的1,而是字符‘1’的unicode编码,你这里用判断ch==1自然是false,同理你将ch转换成int后ch的值不是1而是1的unicode码值49
[/Quote]正解吧呵呵
茫茫大海 2010-10-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dreamhunter_lan 的回复:]

'1'的ACSII码是49,所以ch==49是true; (ch-48)==1也是true
[/Quote]
+1
「已注销」 2010-10-12
  • 打赏
  • 举报
回复
对于数字和英文字符,其数值在ascii范围之内,所以一般说到数字及字母文字,都直接称呼其ascii码。

也就是说,就算是u16,0x0031和0x31,对于数值类型来说,没有区别吧
wangyuxi1989 2010-10-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zhuyouyong 的回复:]
引用 3 楼 gelyon 的回复:
引用 2 楼 dreamhunter_lan 的回复:
'1'的ACSII码是49,所以ch==49是true; (ch-48)==1也是true


顶!
ding
[/Quote]
这里和ASCII码有什么关系?java中的字符集是用16位unicode进行存储的,这里的ch实际存储值是'u0031'
如果是ASCII,char占两个字节要怎么编码?
zhuyouyong 2010-10-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 gelyon 的回复:]
引用 2 楼 dreamhunter_lan 的回复:
'1'的ACSII码是49,所以ch==49是true; (ch-48)==1也是true


顶!
[/Quote]ding
tlgege 2010-10-12
  • 打赏
  • 举报
回复
因为System.out.println(ch)里面的ch被自动转换成字符串打印。。“1”
System.out.println(ch==1)里的ch是unicode编码对应的数字,不是1,具体是什么数需要查查。。
「已注销」 2010-10-12
  • 打赏
  • 举报
回复
'1' != 1
gelyon 2010-10-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dreamhunter_lan 的回复:]
'1'的ACSII码是49,所以ch==49是true; (ch-48)==1也是true
[/Quote]

顶!
dreamhunter_lan 2010-10-12
  • 打赏
  • 举报
回复
'1'的ACSII码是49,所以ch==49是true; (ch-48)==1也是true
wangyuxi1989 2010-10-12
  • 打赏
  • 举报
回复
ch中存储的并不是整型的1,而是字符‘1’的unicode编码,你这里用判断ch==1自然是false,同理你将ch转换成int后ch的值不是1而是1的unicode码值49

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧