一、顺序结构
代码从上往下依次执行。
程序的入口始终是main方法。
二、分支结构
2.1. if
语法
- 只有一个if
if (条件)
{
//当条件为true的时候执行大括号里面的代码
}
2.有一个if同时有一个else
if (条件)
{
//当条件为true的时候执行大括号里面的代码
}
else
{
//当条件为false的时候执行大括号里面的代码
}
3.有一个if,并且有多个else if
if (条件1)
{
//当条件1为true的时候执行大括号里面的代码
}
else if (条件2)
{
//当条件2为true的时候执行大括号里面的代码
}
else if (条件3)
{
//当条件3为true的时候执行大括号里面的代码
}
4.有一个if,并且有多个else if,同时有一个else结束分支
if (条件1)
{
//当条件1为true的时候执行大括号里面的代码
}
else if (条件2)
{
//当条件2为true的时候执行大括号里面的代码
}
else if (条件3)
{
//当条件3为true的时候执行大括号里面的代码
}
else
{
}
if是必须的,else可选的,但是最多只能出现一次;else if可选的,可以出现0~N次。
注意点:
1.如果条件符合的时候,大括号里面的执行语句只有一句,那么可以省略大括号,但不推荐省略。
if ( age > 10 )
{
System.out.println("此人已经大于十岁");
}
等同于
if ( age > 10 )System.out.println("此人已经大于十岁");
2.else本身相当于也是一个条件,当前面所有的if、else if都不为true的时候,执行else里面的。相当于是对前面所有的条件取反。
3.任何情况下,一个if分支里面,只能有其中的一个分支被执行。并且其中一个条件已经为true,那么后面的其他条件不会再进行判断。
4.把范围小的条件放到前面。
大于的时候,条件越大的放到越前面;小于的时候,条件越小的放到越前面。
2.2. switch (开关)
语法
switch ( <变量 |表达式> )
{
case 值1 :
//执行语句
[break;]
case 值2 :
//执行语句
[break;]
case ... :
[default:]
[default里面的执行语句]
}
注意点:
1.switch只能判断圆括号里面的值,和case里面的值是否相等,相等执行case里面的代码。
这些值的类型只能是byte、short、int、char,Java 5以后支持 String、枚举
2.在switch里面,当一个case满足条件的时候,就会开始执行里面的执行语句。
如果没有遇到break,直接会一直执行到switch结束;遇到break结束switch。
建议习惯性写上break,避免多个case同时被执行。
3.如果所有的case都不匹配,直接执行default,如果没有default,就直接结束switch。
4.圆括号里面的类型和case的类型必须是相同的
三、循环结构
循环的三个要素
循环条件
循环体
循环计数器
3.1 while循环
语法
//需要在外面定义循环计数器
while(循环条件)
{
//循环体,任意的执行语句,包括if、循环之类的
}
注意点
1.循环条件永远比循环体多执行一次
2.循环体可能一次都不执行,但是循环条件最少会执行一次
publicclass TestDoWhile { publicstaticvoid main(String[] aregs) { /* int i = 0; 1,把i的值带入表达式 得到表达式i < 100,并不进行比较运算 2.执行i的自加 i = i + 1 3.执行比较运算 i < 100*/ do { System.out.println("循环体输出: " + i); } while( i++ < 10 );
System.out.println("循环后: " + i); } } |
3.2 do while循环
语法
do
{
//循环体
}
while(条件);
注意点:
在执行循环条件之前,必须先执行一次循环体。循环体最少会执行一次。
循环体和循环条件的执行次数是一样的。
3.3 for循环
for( [初始语句] ; [循环条件] ; [迭代语句] )
{
//循环体
}
for循环和while循环可以百分百转换,没有任何区别。
3.4嵌套循环
在循环的内部有循环,内部的循环如果还未执行完,外部的循环会等待内部循环的完成。
注意:
内部循环可以访问外部循环的变量;外部循环不能访问内部循环定义的变量。
循环控制的关键字
continue : 继续
忽略当前循环、本次的剩余执行语句,进行下一次循环。
break : 终止
终止当前循环
return : 返回
结束当前方法
嵌套循环里面使用continue和break
默认情况下,只能影响到当前循环
可以给循环加上标签,然后continue或者break的后面带上要影响的循环的名字(标签)
publicclass TestNestedLoopContinue { publicstaticvoid main(String[] args) { for(int i = 0; i < 3; i++) { for(int j = 0; j < 5; j++) {
if( j == 3 ) { System.out.println("continue"); //continue影响到内层循环 continue; } System.out.println("内层: " + j); } System.out.println("外层: " + i); }
System.out.println("=================================");
// XXXX表示给for循环加一个标签 //冒号后面跟着循环就可以了 XXXX:for(int i = 0; i < 3; i++) { for(int j = 0; j < 5; j++) { if( j == 3 ) { System.out.println("continue"); //continue的时候通过循环的标签来影响指定的循环 continue XXXX; } System.out.println("内层: " + j); } //因为外层循环的剩余语句被忽略,所以下面的代码不会执行 System.out.println("外层: " + i); } } } |
建议在使用嵌套循环的时候,习惯性给循环写上名字(标签),方便使用continue和break。
练习
练习1
计算1~100之间,能够同时被3和7整除的数的和。
步骤
1.循环从1~100,1~100就是循环计数器的值
2.在循环里面,判断循环计数器的值,是否同时被3和7整除,如果是则把循环计数器的值,累加到一个整数变量里面。
if( i % 3 == 0 && i % 7 == 0 )
{
//
}
3.在循环的外面输出累加后的整数变量。
public class Test {
public static void main(String[] args)
{
System.out.println("======================使用for循环===========================");
int sum = 0;
for( int i=1; i<=100; i++){
if( i%3==0 && i%7==0 ){
sum = sum + i;
}
}
System.out.println(sum);
System.out.println("======================使用while循环===========================");
int sum2 = 0;
int i = 1;
while( i <= 100){
if( i%3==0 && i%7==0 ){
sum2 = sum2 + i;
}
i ++;
}
System.out.println(sum2);
System.out.println("======================使用do while循环===========================");
int sum3 = 0;
int j = 1;
do{
if( j%3==0 && j%7==0 ){
sum3 = sum3 + j;
}
j++;
}while( j<101 );
System.out.println(sum3);
}
}
练习2
使用嵌套循环输出九九乘法表
public class Chengfabiao {
public static void main(String[] args){
for( int i=1; i<10; i++ ){
for( int j=1; j<i+1; j++ ){
System.out.print(i+"*"+j+"="+i*j+"\t");
}
System.out.println();
}
}
}
练习3
实心三角形
*
***
*****
*******
空心三角形
*
* *
* *
*******
练习4,扩展练习
生成4个随机的字符
重点
if
for