回顾
运算符:
算术 ++ --、逻辑 && & || |、比较 ==、三元 、赋值 =
int i = 1;
i++;
j = i++; //j=2 i=3
syso(--j+"-----"+i++) //1 3
选择结构
if(){}
if(){}else{}
if(){}else if(){}else if(){}else{}
//支持byte、short、int
//支持char
//支持枚举
//从jdk8开始 支持String字符串类型
switch(表达式){}
循环结构
循环目的:实现某一块代码多次重复执行。
for循环
for(表达式一;表达式二;表达式三){//循环体
}
示例:
/** 需求:在控制台打印出所有的水仙花数。* 水仙花数: 是一个三位数,* 水仙花数的个位、十位、百位数字的立方之和等于原数。*/for(int i=100;i<1000;i++) {int g = i%10; int b = i/100;//121int s = i/10%10;if(g*g*g + b*b*b + s*s*s == i) {System.out.print(i+" ");} }
/** 1. 需求:数7游戏。从1到100(不含100), * 如果数是7的倍数或者包含7输出“过”,否则输出数字本身。*/for(int i=1;i<100;i++) { //65//7的倍数 i%7==0//包含7 个位i%10==7 十位i/10==7if(i%7==0 || i%10==7 || i/10==7) {System.out.print("过 ");}else {System.out.print(i+" ");}}
for循环变形及死循环
for(表达式1;表达式2;表达式3){循环体
}
代码:
public static void main(String[] args) {for( ; ; ) {System.out.println("hello world");}System.out.println("end");//这行代码永远执行不到}
上面的示例,没有任何语句控制循环的结束。所以会无限打印hello world,导致循环后面的代码永远执行不到。
注意:如果程序中出现死循环,Eclipse会报错,不允许你执行。
代码:
public static void main(String[] args) {for(int i = 0 ; i != 10 ; i += 3 ) {System.out.println("hello world");}System.out.println("end");//这行代码永远执行不到}
上面的示例,虽然表达式完整,但是 i != 10会永远为真,因此也是一个死循环。导致for循环后面的代码无法执行
代码:
// int i ;
// for(i=1;;) {
//
// }// int i = 1;
// for(;;) {
// System.out.println(i);
// }// for(int i = 1;i < 10;i--) {
// System.out.println(i);
// }
int i = 1;for(;i < 10;) { //不会发生死循环System.out.println(i++);}
while循环
do…while循环
Random随机数
random.nextInt(3); // 得到的是一个 [0,3)的数值
随机数的规律:要想产生一个[min, max]之间的随机数。
int num = random.nextInt(max - min + 1) + min;
随机数的规律:要想产生一个[min, max) 之间的随机数。
int num = random.nextInt(max - min) + min;
随机数范围
[0,10]
[0,10)
[10,15]
(10,15]
Random r = new Random();//生成boolean类型随机数boolean flag = r.nextBoolean();//生成int范围的随机数int num1 = r.nextInt();//生成double类型的随机数double d1 = r.nextDouble();//指定范围 0<=num<3int num2 = r.nextInt(3);//[0,3)//生成一个随机数 0<=num<=3int num3 = r.nextInt(4);//生成一个随机数 5<=num<10 //5 [0-5)//r.nextInt(10-5)+5 r.nextInt(max-min)+minint num5 = r.nextInt(5)+5;//生成一个[15-20)之间的随机数
// for(int i=0;i<10;i++) {
// int num6 = r.nextInt(20-15)+15;
// System.out.println(num6);
// }//生成一个[15-20]之间的随机数 r.nextInt(max-min+1)+minfor(int i=0;i<10;i++) {System.out.print(r.nextInt(20-15+1)+15+" ");}
示例:
//产生5个[10, 80]之间的随机数,输出产生的数,并求出最大的随机数。
//记录最大值出现的下标(第一次循环 ,下标为0,第二次为1....)
Random r = new Random();
//最大值出现的索引下标
int maxIndex = 0;
int max = 0;
int min = 80;
int sum = 0;
for(int i=0;i<5;i++) {int num = r.nextInt(71)+10;System.out.print(num+" ");maxIndex = (num>max) ? i : maxIndex;max = num>max ? num : max;min = num<min ? num : min;sum += num;
}
System.out.println("最大值是:"+max +" 最小值是:"+min +" 总和:"+sum);
System.out.println("最大值的索引下标是:"+maxIndex);