(version1.charAt(len1)-‘0‘

记录一个问题,今天做题的时候发现字符串转换为数字类型的时候,会有  -'0'这个操作。

做的题是:

public int compare (String version1, String version2) {
        // write code here
        //双指针
        int i=0,j=0;
        int n1=version1.length(),n2=version2.length();
        while(inum2){
                return 1;
            }else if(num1

查找了资料发现是这样的:

原因:

字符型运算与整数的运算不同,字符型的数字存储的是对应的ASCII值, 它与表示的 数字字符 之间有一个偏移量。例如,字符 '0' 的ASCII码值为48。字符 '0' 的ASCII码值减去 '0' 的ASCII码值就等于数字字符的0,字符 '1' 的ASCII码值减去 '0' 的ASCII码值就等于1,以此类推。

所以:

那么要将一个字符型数字转换为数字类型的时候就需要减去‘0’的ASCII,才能得到正确的数字类型的值。例如,如果 version1.charAt(len1) 是字符 '5',那么 (version1.charAt(len1)-'0') 的结果就是整数 5

你可能感兴趣的:(Java基础知识,java)