一个简单的问题,大虾闷来看看

String s=""+1254;
int k=s.charAt(0);
System.out.print(k);
为什么输出的是49??
如果改成
System.out.print(k-48);
输出的是1.
这是为什么?为什么要减48?是字符值和数字中的某一种对应关系?类似Ascii码的对应关系(a-97)?

4个回答

因为
[quote]int k=s.charAt(0); [/quote]
你在这里把它转换成整型了

如果你直接输出s.charAt(0)的话就是1,也就是你之前定义的那个字符串s的第1个字符(字符串s中inex为0的字符)

我觉得可能是你定义的字符串是一串数字误导了你
你打印一下下面这段代码就很好理解了,原理都是一样的
[code="java"]S
tring s="abc";
System.out.println(s.charAt(0));
System.out.println((int)s.charAt(0));
[/code]

楼主你猜对了。
就是ascii码。
1的ascii码是49

char charAt(int index)
返回指定索引处的 char 值。

String "1" 的 ascii 码 是49

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问