Java中string [i]和string.charAt(i)之间有什么区别?

时间:2015-05-01 18:42:07

标签: java string

我写这样的一行时遇到了错误:

String string;
if (Character.isLetter(string[i])) {...}
Eclipse告诉我The type of the expression must be an array type but it resolved to String

如果我使用string.charAt(i),它不会引发错误。

我的问题是: string[i] string.charAt(i) {之间的区别{1}}?
使用其中一个或哪些精致的方面?

我试图自己找到解决方案,但我只是遇到了Java版本的问题。 (例如:Difference between str[0] and str.charAt(0)

6 个答案:

答案 0 :(得分:1)

在Java中,String类型与某些语言中的字符数组不同。可以从String获取一个字符数组,但它们不是一回事。

答案 1 :(得分:1)

在Java中,def sliding(s, i): return [s[n:n+i] for n in xrange(len(s)-i+1)] assert sliding("python", 2) == ["py", "yt", "th", "ho", "on"] assert sliding("python", 3) == ["pyt", "yth", "tho", "hon"] 不是字符串的 i 索引。相反,如果您已将string[i]定义为数组(例如,string),则String[] string = new String[10]将引用数组中的 i 元素。

答案 2 :(得分:1)

String [i] 是访问一个字符串数组中的第i个元素的方法,请注意它们在java中是零索引的,就像在javascript中一样。< / p>

虽然 string.charAt(i)是一个特定字符串中的第i个字符。在这里我再次归零。

很容易认为java中的字符串是像许多其他语言一样的字符数组,但实际上它们构建在char数组之上,而char数组是String类的私有成员,如下所述。

https://stackoverflow.com/a/20248431/2669716

答案 3 :(得分:1)

使用[]运算符访问元素仅适用于数组。 String不是数组。这意味着在[]上使用String运算符无法编译。

如果您想转换 Stringchar[]数组,请使用toCharArray方法。

String s = // ...
char[] chars = s.toCharArray();
char firstLetter = chars[0];

答案 4 :(得分:1)

[]用于引用index的{​​{1}}。虽然Array通常被视为String Arraychar),但您无法访问字符数组...该方法char[]将访问string.charAt(i)以获得物理角色。

在此处详细了解String类:http://docs.oracle.com/javase/8/docs/api/java/lang/String.html

如果您的代码如下:

Array

你可以这样做:

String[] stringArray = new String[] { "String 1", "String 2", "String 3", "..." };

希望有所帮助!

答案 5 :(得分:1)

这可能会让你感到清楚:

public static void main(String[] args) {
  String str = "my name is Muneeb";
  String[] strarray = str.split(" "); //split on white space.

  for(int i=0; i<str.length(); i++){
     System.out.println(str.charAt(i));
  }

  for(int i=0; i<strarray.length; i++){
     System.out.println(strarray[i]);
  }
}

第一个输出将是:

m
y

n
a
m
e

i
s

M
u
n
e
e
b

第二个输出将是:

my
name
is
Muneeb