【Bug】Java中Char和Int的互转
【Bug】Java中Char和Int的互转
今天在做一个栈相关的算法,然后在 Java中Char和Int互转 这里粗心记混了,结果出了个Bug,修了一会。
事情是这样的:
有一个由数字构成的字符串,比如:“1433223”,然后想把组成字符串的每一位数字都放到一个栈里面去。
但是每次从这个字符串(String)拿出来的是是一个字符(Char)而非数字(Int),比如拿出第一位,他是字符‘1’而不是整数1。
当时就直接强转了,以为: int 1 = (int)‘1’
但其实 (int)‘1’ = 49(int) 而不是期望的 1(int)。导致后面的一大堆出了奇怪的 bug。
因为 Java 中的char其实底层都是对应的ASCII码,也是int整数。
比如:‘1’(Char) = 49(int)
所以正确的做法,应该是下面这样:
把char转为对应的Integer
当然也可以这样:
numStack.push((int)(char01 - ‘0’);
所以关于 Java的Char底层就是对应的ASCII码(int),你忘了吗?
(int)‘1’ = 1(int)
(int)‘1’ = 49(int)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LMC_Blog!