为什么我们写A.charAt(i)而不是A.charAt [i]?为什么我们写“ - 'A'”?

时间:2014-11-28 12:41:26

标签: java charat

public static int get(String A) // it is a method
{
        int count = 1;
        for (int i = 0; i < A.length(); i++) // So A reads line (any word, for example "Car"), so I understand that length will be 3 and that java will check all the characters.

        {
            int num = (A.charAt(i) - 'A') + 1;
            count *= num;
        }
        return count;
    }

7 个答案:

答案 0 :(得分:1)

A.charAt(i)因为charAt是一个函数,而不是一个数组。

您编写A.charAt(i) - 'A'来计算A&#39; s i:字符和字符'A'之间的差异。

答案 1 :(得分:0)

因为charAt()是java中用于字符串的方法,它返回一个字符。和&#39; A&#39;我们写的是&#34; A&#34;对于字符串类型 http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#charAt%28int%29

答案 2 :(得分:0)

A.charAt(i)是字符串的方法,您也可以A[i]直接访问相同的位置。

使用字符进行操作(+或 - )时,会得到int

答案 3 :(得分:0)

Java API for charAt() function

  

charAt()是一个java方法,而不是数组

     

返回指定索引处的char值。

<强>语法:

以下是此方法的语法:

public char charAt(int index);

答案 4 :(得分:0)

因为charAt()是一个从给定String返回字符而不是数组的方法。字符写为'A'。字符串写为"A"

答案 5 :(得分:0)

因为charAt是字符串中的一个方法,它接受索引。 String内部维护char数组,它们都隐藏起来,因此你有一个方法而不是数组本身。

-'A'的原因是用户想要将该字符转换为整数。因此对于例如你的角色是'B',用户希望使用ascii value of 'B' which is 66 - ascii value of 'A' which 65

将其转换为int
num = 66 - 65 + 1

并进行进一步处理。

答案 6 :(得分:0)

班级Stringimmutable or value object。它不能直接访问组成字符串的字符,主要是出于性能原因,但也因为它有助于避免一大堆错误。

这就是为什么您无法通过[]使用数组访问权限的原因。您可以调用A.getChars(),但这会创建基础字符数组的副本

char是角色的代码。例如'A' == 65。见this table。如果A.charAt(1)返回'F'(或70),那么'F' - 'A'会给你5. + 1给出6。

所以上面的代码将字母变成了数字。您经常看到的一种模式是charAt(i) - '0'将字符串转换为数字。

但是上面的代码在这方面是奇怪的,因为count *= num为输入产生一个相当随机的结果。要将字母转换为数字,基数为26,它应显示为count = count * 26 + num