java - 的整数值给出了意想不到的结果

标签 java

在做我的一个项目时,我遇到了一个问题。

当我运行以下程序时:

public class test {
    public static void main(String[] args) {
        String x = "1234";
        System.out.println("Int value: " + Integer.valueOf(x.charAt(0)));
        System.out.println("String value: " + x.charAt(0));
    }
}

它给了我结果:

Int value: 49
String value: 1

这让我很困惑,因为 x = "1234",所以当它运行第四行时,结果应该与:

System.out.println("Int value: " + Integer.valueOf(1));

理论上应该给我:Int value: 1

那么是什么导致结果变成 49 呢?

最佳答案

有区别

System.out.println("Int value: " + Integer.valueOf(1));

System.out.println("Int value: " + Integer.valueOf(x.charAt(0)));

在第二行中,真正发生的事情是这样的——

System.out.println("Int value: " + Integer.valueOf('1'));

请注意,“1”作为字符而不是整数传递。结果,Integer.valueOf 返回字符“1”的 ASCII 值,即 49。

引用ASCII table亲眼看看。

关于java - 的整数值给出了意想不到的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35683098/

相关文章:

java - 与 Flux 相交操作 - Project Reactor

java - 布局 Inflate 中的alignParentBottom

java - 使用 AT 命令发送短信的名称而不是号码

Java - 在给定偏移处读取字节

java - Java如何在多态中确定运行时调用的方法?

java - 好看的 Java Swing 外观?

java - csv字符集加载infile问题

Java同步函数工作而同步块(synchronized block)不工作

java - 使用 GSON 将 JSON 字符串转为 Java 对象

java - 不使用switch实现Setter和Getter