我写这样的一行时遇到了错误:
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))
答案 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类的私有成员,如下所述。
答案 3 :(得分:1)
使用[]
运算符访问元素仅适用于数组。 String
不是数组。这意味着在[]
上使用String
运算符无法编译。
如果您想转换 String
到char[]
数组,请使用toCharArray
方法。
String s = // ...
char[] chars = s.toCharArray();
char firstLetter = chars[0];
答案 4 :(得分:1)
[]
用于引用index
的{{1}}。虽然Array
通常被视为String
Array
(char
),但您无法访问字符数组...该方法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