charAt的问题

来源:百度知道 编辑:UC知道 时间:2024/05/13 04:05:17
public class ContinueWithLabelDemo {
public static void main(String[] args) {

String searchMe = "Look for a substring in me";
String substring = "sub";
boolean foundIt = false;

int max = searchMe.length() - substring.length();

test:
for (int i = 0; i <= max; i++) {
int n = substring.length();
int j = i;
int k = 0;
while (n-- != 0) {
if (searchMe.charAt(j++) != substring.charAt(k++)) {
continue test;
}
}
foundIt = true;
break test;
}
System.out.println(foundIt ? "Found it" : "Didn't find it");
}
}
上面程序中的
while (n-- != 0) {
if (searchMe.charAt(j++) != substring.charAt(k++)) 什么意思呢?

while (n-- != 0) {
if (searchMe.charAt(j++) != substring.charAt(k++))
这当中的j++以及k++就是涉及到了引用和自加。
后加就是先引用后自加。
所以此处的searchMe.charAt(j++)就是先执行searchMe.charAt(j),然后再j++,在下一次循环时j的值就变了。
再打个比方,int j=1,i;
i=j++;
执行后i=1,j=2。也就是执行时是这样的:i=j,j=j+1。