表达式
表达式是由数字、运算符、数字分组符号(括号)等以能求得数值的有意义排列的序列
以下都是表达式:
a + b3.14 + a(x + y) * z + 100boolean b= i < 10 && (i%10 != 0)
表达式的类型和值:
表达式的运算顺序
运算符优先级如下图
语法格式:
x ? y : z;
其中x为boolean类型表达式,先计算x的值,若为true,则整个三目运算符的结果是表达式y的值,否则就是z的值。
代码实操:
public class Demo2 { public static void main(String[] args) { String s = "lz"; s = (s == "lz" ? "正确" : "错误"); System.out.println(s); }}
输出:正确
如果代码里没有流程控制,程序是至上而下一行一行执行的,一条语句执行完之后继续执行下一条语句,直到程序的最后。
if语句: 基本语法:
if(表达式){
方法体
}else if(表达式){
方法体
}else{
方法体 }
几种形式: 三种格式: if(条件表达式){ 执行语句; }
if(条件表达式){ 执行语句; }else{ 执行语句; } if(条件表达式){ 执行语句; }else if (条件表达式){ 执行语句; }
…… //可以有多个 elseif
else{ 执行语句;} }
代码实操
public class IfDemo { public static void main(String args[]) { int i = 3; if (i > 5) { System.out.println("变量i大于5"); } else if (i > 4) { System.out.println("变量i小于4"); } else { System.out.println("其他"); }
} }
switch控制语句
格式: switch(表达式) { case 表达式可能的结果值1: 执行语句; break; case 表达式可能的结果值2: 执行语句; break; ... default: 执行语句; break;//最后这个一般不写 }
备注: case之间与default没有顺序。先执行第一个case, 都没有匹配的case值执行default。 结束switch语句的两种情况:遇到break,switch语句执行结束。 如果匹配的case或者default没有对应的break, 那么程序会从第一次匹配的case语句开始继续向下执行, 运行可以执行的语句,直到遇到break或者switch结束为止。
public class SwitchDemo { public static void main(String[] args) { int a = 7, b = 5; switch (a - b) { case 3://表达式可能的值; { System.out.println("33!"); } break;
case 4: { System.out.println("44!"); } break; default://都没有执行则 执行该语句! System.out.println("其它的"); } } }
注意:switch语句只能使用byte、char、short、int 四种基本类型以及它们的包装类和枚举. JDK1.7版本之后,switch语句可以使用字符串变量。
三大循环结构: 用于处理需要重复执行的操作,(例如:计算从1+2+3+4+...+1000的值); 根据判断条件的成立与否,决定程序段落的执行次数,而这个程序段落我们称为循环体; while:事先不需要知道循环执行多少次; do while:同上,只是至少要执行一次(先做,后判断); for:需要知道循环次数;
循环结构(while & do while)while语句格式:
while(条件表达式值为true){ 执行语句;}
do while语句格式:
do{ 执行语句;}while(条件表达式值为true);
do while特点是无论条件是否满足,循环体至少被执行一次
循环结构(for)格式:
for(初始化表达式(1);循环条件表达式(2);循环后的操作表达式(3)){ 执行语句;(4)}执行顺序:(1) → (2) → (4) → (3) → (2) → (4) → (3)
注意
使用三种循环计算 1+2+3+4+5+...+100的结果
public class ForDemo {
public static void main(String[] args) { int sum = 0; for (int i = 1; i <= 100; i++) { sum += i; }
System.out.println(sum); }
}
public class WhileDemo {
public static void main(String[] args) { int sum = 0; int i = 1; while (i <= 100) { sum += i; i++; }
System.out.println(sum); }
}
public class DoWhileDemo {
public static void main(String[] args) { int sum = 0; int i = 1; do { sum += i; i++; } while (i <= 100);
System.out.println(sum); }
}
if条件语句与循环语句结合使用。
输出100以内可以被33整除数字,文中使用for循环实现,请尝试使用其他循环实现。
public class ForAndIfDemo { public static void main(String[] args) { for (int i = 1; i < 100; i++) { if (i % 33 == 0) { System.out.println(i); } } }
}
//结果:33 66 99
嵌套循环:循环里套循环 假设外循环的循环次数是m次,内循环的循环次数是n次,那么内层循环的循环次数需要 m * n次。
需求:利用for循环语句的嵌套打印出乘法口诀表
public class ForForDemo { public static void main(String[] args) { for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { //注意这里 使用的System.out.print 输出不换行 System.out.print(j + " * " + i + " = " + (i * j) + "\t"); }
//打印换行符 System.out.println(); } }
}
打印结果:1 * 1 = 1 1 * 2 = 2 2 * 2 = 4 1 * 3 = 3 2 * 3 = 6 3 * 3 = 9 1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16 1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25 1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36 1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49 1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64 1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81
流程控制语句 ,在循环中我们可以通过break跳出循环,可以通过continue跳过这次循环。
输出1-10前4位数字与 2 的乘积,且第2位数字不参与运算输出其本身即可
public class BreakDemo {
public static void main(String[] args) { // 输出1-10前4位数字与 2 的乘积,且第2位数字不参与运算输出其本身即可
for (int i = 1; i <= 10; i++) {
if (i == 2) { // 第二位数字仅仅输出 不参与运算 System.out.println(i); //遇到continue 程序不会向下走 continue; }
if (i > 4) { // 仅仅输出前4位 大于4 即跳出循环 // 遇到break直接结束循环 break; }
int temp = i * 2;
System.out.println(temp); } }
}
//输出结果 2 2 6 8
使用标签跳出指定循环
程序遇到break 会跳出与之最近的循环。如果是两层循环,break在最内层,则退出内层循环。如何让break在最内层,跳出外层循环?
public class ForTipDemo {
public static void main(String[] args) { WC: for (int i = 1; i < 10; i++) { NC: for (int j = 1; j < 10; j++) { System.out.println(j + " * " + i + " = " + (j * i)); if (j == 4) { break WC; } } } }
/* 输出结果 1 * 1 = 1 2 * 1 = 2 3 * 1 = 3 4 * 1 = 4 */
}