调试(debug)
程序中的漏洞称为bug, 找出并修改漏洞的过程称为debug
如何调试?
1.设置断点
2.启动调试
3.单步运行
4.观察执行过程及变量的变化
断点(breakpoint): 程序将暂停在断点处
单步运行(step over | step into): F6 | F5
跳至下一断点: F8
循环结构
当程序中出现有规律的重复操作时,可以用循环结构来实现.
循环2个要素:
1.循环条件
2.循环操作(循环体)
循环的一般执行过程: 条件成立时, 反复执行循环体, 直到条件为假.
while循环
while( 条件 ) {
操作
}
特点: 先判断, 再执行
do while循环
do {
操作
} while( 条件 );
特点: 先执行1次循环操作, 再判断条件
应用场景: 条件判断要以循环操作中产生的结果为依据
注意: do中声明的变量不能在while中使用!
for循环
for( 表达式1 ; 表达式2 ; 表达式4 ) {
循环体3
}
表达式1通常是变量初始化
表达式2是循环条件
表达式4通常是计数器自增
注意: 三个表达式都能省略, 但2个分号不能省略!
执行过程: 1 > 2 > 3 > 4 > 2 > 3 > 4 ... 2
for循环
for(表达式1; 表达式2; 表达式4){
循环体3
}
表达式1:变量初识值
表达式2:循环条件
循环体3:循环操作
表达式4:计数器的自增或自减。
三个表达式可以省略,但是分号不能省略。
执行过程:1>2>3>4>2>3>4>2……
控制流语句break和continue
break: 可用于循环结构和switch语句块, 作用是跳出当前语句序列, 用在循环中时, 它是一种提前/非正常结束循环的手段!
continue: 只能用于循环结构, 作用是跳过本次循环中的剩余代码, 进入下一次循环!
注意: continue用于for循环时, 跳到i++部分!
使用技巧:
当不便于描述循环条件时, 或希望自由控制循环终止的时机, 采用break!
当循环体很复杂, 而且在某种条件下, 希望跳过一大段代码的时候, 可采用continue!
经典练习题:
输入二个字符串a, b, 找出b在a中首次出现的位置
代码实例:
/**
* 输入二个字符串a, b, 找出b在a中首次出现的位置
* @author admin
*/
public class Xample {
public static void main(String[] args) {
String str1 = "thi ia a big a not";
String str2 = "shuaige";
//找字符串2的首字符
char first = str2.charAt(0);
int i;
boolean match = false;
for(i = 0; i < str1.length(); i++){
char a = str1.charAt(i);
if(first != a){
continue;
}
match = true;
for(int j = 1; j < str2.length(); j++){
if(str2.charAt(j) != str1.charAt(i+j)){
match = false;
break;
}
}
//
if(match){
break;
}
}
if(match){
System.out.println("b在a中首次出现的位置是:"+i);
}else{
System.out.println("没有匹配的");
}
}
}