我反编译的java代码,
不明白break label 的使用,baidu了一下,发现使用的方式和我反编译的这段都不同,实在是看不明白了,请知道的给解释一下.
private String replaceString(String s, String oldString, String replaceString) {
if (s == null) return null;
if (s.equalsIgnoreCase("")) return s;
StringBuffer sb = new StringBuffer("");
int searchIndex = 0;
int tempIndex = 0; int i = 0;
while (true)
try
{
if ((tempIndex = s.indexOf(oldString, searchIndex)) <= -1) break label94;
++i;
sb.append(s.substring(searchIndex, tempIndex));
sb.append(replaceString);
label94: searchIndex = tempIndex + oldString.length();
}
catch (Exception ex) {
ex.printStackTrace(); if (i > 0) {
sb.append(s.substring(searchIndex, s.length()));
String r = sb.toString();
return r;
}
}
return s;
}说明:在 break label94 报错为:the label94 is missing.
不明白break label 的使用,baidu了一下,发现使用的方式和我反编译的这段都不同,实在是看不明白了,请知道的给解释一下.
private String replaceString(String s, String oldString, String replaceString) {
if (s == null) return null;
if (s.equalsIgnoreCase("")) return s;
StringBuffer sb = new StringBuffer("");
int searchIndex = 0;
int tempIndex = 0; int i = 0;
while (true)
try
{
if ((tempIndex = s.indexOf(oldString, searchIndex)) <= -1) break label94;
++i;
sb.append(s.substring(searchIndex, tempIndex));
sb.append(replaceString);
label94: searchIndex = tempIndex + oldString.length();
}
catch (Exception ex) {
ex.printStackTrace(); if (i > 0) {
sb.append(s.substring(searchIndex, s.length()));
String r = sb.toString();
return r;
}
}
return s;
}说明:在 break label94 报错为:the label94 is missing.
表示跳出标示所在的循环(continue也有这种用法)但需要注意的是,所跳出的循环体得是当前循环以及其外层循环
public class breaktest
{
public static void main(String[] args)
{
int n=0;
//标识
ll:
while(n<10)
{
while(n<10)
{
System.out.println("a:"+n);
n++;
if(n==5){ n=10;break ll;} //你可以把这里的ll删掉看看两者区别
}
System.out.println(n);
}
}
}
可是我反编译的这个我不知道什么意思.