toInt()会发生什么

时间:2018-08-22 06:52:24

标签: kotlin

我目前开始学习Kotlin,并且正在编写这段代码

val a =  "1"
val b = a[0]
val c = b.toInt()
println(c)

运行代码时,结果为49。真正发生了什么?因为我认为结果将是1。

3 个答案:

答案 0 :(得分:2)

aString,它是CharSequence。这就是为什么您可以首先访问a[0]的原因。 a.get(0)a[0]然后返回Char。另一方面,Char会在调用toInt()时返回其字符值,同时还要检查documentation of toInt()

因此您的代码已注释:

val a =  "1" // a is a String
val b = a[0] // b is a Char
val c = b.toInt() // c is (an Int representing) the character value of b

如果您只想返回数字,则需要解析该数字或使用您最喜欢的任何答案:How do I convert a Char to Int? (一种简单的方法是b.toString().toInt())。

答案 1 :(得分:0)

a是字符串,
当您获得[index]返回类型为char时,
在kotlin char.toInt方法中返回字符的ASCII码,它是49

如果要获取整数值“ 1”,请使用toString方法

val a =  "1"
val b = a[0].toString()
val c = b.toInt()       
println(c)

prints:1

答案 2 :(得分:0)

在您的示例中,aString,但StringString位于Array of Char之下。通过使用String运算符访问a[0],您将获得此Char Array的第一个元素。因此,您得到的是Char '1',而不是String "1"。现在,当您在'1'.toInt()上运行Char函数时-它会返回该Char的ASCII码。当您在String上运行"1".toInt()时,它将将此String转换为Int“ 1”。当需要获取字符串中第一个字母的Int值时,需要先将其转换为字符串:

val a = "123"
val b = a[0].toString() // returns first Char of String "123" and converts to String
val c = b.toInt()       // returns Int: 1

或一行:

"123"[0].toString().toInt()