StringString str = "1"; System.out.println(str.charAt(0)-1);输出结果?
str.charAt(0)取str的第一个字符'1','1'-1隐含着(int)'1'-1(char类型和int类型运算时会自动把char强制转换成int,转换的int值是该字符在ASCII编码中对应的十进制值),相当于'1'的ASCII码49减1,所以是48
charAt(0)转换格式的时候变成49了 对照ASCII编码表
请去看看ASCLL编码表加深理解。
就是上面说的,二进制编码转
通过str.charAt(0)是取得的一个字符‘1’,这个时候这个‘1’并不是数字,在Java中,是字符的意思,然后Java中的字符如果不是中文的话用的是ASCII码,如果是中文的话用的就是Unicode编码,此时的‘1’的ASCII码对应的十进制数字是49,因为你后面做了减法,所以Java中自动把‘1’字符转成了ASCII码中的十进制49,所以49-1就等于48