当前位置: 首页 > 面试题库 >

Java:从char中减去'0'得到一个整数……为什么这样做有效?

韦阳晖
2023-03-14
问题内容

这工作正常:

int foo = bar.charAt(1) - '0';

但这不是-因为bar.charAt(x)返回一个char:

int foo = bar.charAt(1);

似乎从char中减去‘0’会将其强制转换为整数。

为什么或如何减去字符串“ 0”(或它是一个字符?)将另一个字符转换为整数?


问题答案:

这是一个聪明的把戏。字符实际上与短裤的类型/长度相同。现在,当您有一个表示ASCII / Unicode数字的字符(如“ 1”),并从中减去最小的ASCII
/ Unicode数字(例如“ 0”)时,将剩下该数字的对应值(因此1)

因为char与short相同(尽管是unsigned short),所以可以安全地将其强制转换为int。如果涉及算术运算,则转换总是自动完成



 类似资料:
  • 问题内容: 最近,在进行程序时,我遇到了一个问题。以下是程序的一部分 我不明白这行代码的作用: 我猜想它正在递增lettercounts数组中特定字符的值(最初为0);我猜’a’的索引是0,’z’的索引是25。但是我想了解那小段代码是如何工作的。 问题答案: 目的是计算每个字符的出现次数。 是一种获取字符在字母表中位置的巧妙方法。会给你0。会给你1。会给你2,依此类推。 该值用作数组的索引(如您正

  • 上述代码是我在进行 ramda 函数库的 pipe 实现过程中的代码。 我无法通过测试用例 performs left-to-right function composition 和 can be applied to one argument 我发现是因为我是实现的代码 f的长度都是0, 所以我想问什么原因造成的这个问题,如何解决? ramda - test -pipe

  • 我正在做两个大的十进制数的减法。在减法中,它们都具有非零精度,但结果的精度为0。 据我所知,精度为0的大十进制数是不可能的。即使0的精度也为1。 精度是未标度值中的位数。例如,对于数字123.45,返回的精度为5。 (另请参阅BigDecimal、精度和比例)。 问题区域: 返回从此行创建的bigDecimal 对于上下文<代码>中心。实数=-0.79,这是一个双精度。 所以它是有效的 倒标度仅为

  • 问题内容: 我有以下代码: 实际上,它可以像人们期望的那样进行编译和工作。但是,如果将返回类型设为相同,则不会编译,因为预期的“名称冲突:method(Pair)和method(Pair)具有相同的擦除” 鉴于返回类型不是方法签名的一部分,这种重载怎么可能? 问题答案: 考虑以下4种方法 根据当前的Java语言规范, m1和m2无法共存,m3和m4也不能共存。因为它们具有相同的参数类型。 M1和M

  • 最近我遇到了一个编程难题,我一生都找不到一个满意的答案:计算字符串给出的两个任意大整数之和,其中第二个整数可能是负数。这是在Java中完成的,没有使用任何BigInteger、BigNumber等类。 我最初使用伪代码的方法如下: 如果第二个字符串的第一个字符是'-',则设置减法标志。 将每个字符串转换为一个整数数组,每个数字一个。 用零扩展最短数组和左键,以便两个数组大小相同。 循环遍历数组的每