第5节 数据类型转换
day02_01_数据类型转换_自动转换
day02_02_数据类型转换_强制转换
day02_03_数据类型转换_注意事项
day02_04_ASCII编码表
第6节 运算符
day02_05_算术运算符_四则与取模运算
day02_06_算术运算符_加号的多种用法
day02_07_算术运算符_自增自减运算符
day02_08_赋值运算符
day02_09_比较运算符
day02_10_逻辑运算符
day02_11_三元运算符
第7节 方法入门
day02_12_方法入门_概念引入
day02_13_方法入门_方法的定义
day02_14_方法入门_方法的调用
第8节 JDK9新特性-Jshell
day02_15_JDK9的JShell简单使用
day02_16_编译器的两点优化
第9节 选择结构-if语句-switch语句
day03_01_流程概述与顺序结构
day03_02_选择结构_单if语句
day03_03_选择结构_标准if-else语句
day03_04_选择结构_扩展if-else语句
day03_05_练习_用if语句实现考试成绩划分
day03_06_练习_用if语句替换三元运算符
day03_07_选择结构_标准的switch语句
day03_08_选择结构_穿透的switch语
第10节 循环结构-for-while-do..while
day03_09_循环结构_循环概述与基本组成部分
day03_10_循环结构_for循环
day03_11_循环结构_while循环
day03_12_循环结构_do-while循环
day03_13_练习_用循环求出1-100之间的偶数和
day03_14_三种循环的区别
day03_15_循环控制_break语句
day03_16_循环控制_continue语句
day03_17_死循环
day03_18_循环嵌套
数据类型转换
/* 当数据类型不一样时,将会发生数据类型转换。 自动类型转换(隐式) 1. 特点:代码不需要进行特殊处理,自动完成。 2. 规则:数据范围从小到大。 强制类型转换(显式) */ public class Demo01DataType { public static void main(String[] args) { System.out.println(1024); // 这就是一个整数,默认就是int类型 System.out.println(3.14); // 这就是一个浮点数,默认就是double类型 // 左边是long类型,右边是默认的int类型,左右不一样 // 一个等号代表赋值,将右侧的int常量,交给左侧的long变量进行存储 // int --> long,符合了数据范围从小到大的要求 // 这一行代码发生了自动类型转换。 long num1 = 100; System.out.println(num1); // 100 // 左边是double类型,右边是float类型,左右不一样 // float --> double,符合从小到大的规则 // 也发生了自动类型转换 double num2 = 2.5F; System.out.println(num2); // 2.5 // 左边是float类型,右边是long类型,左右不一样 // long --> float,范围是float更大一些,符合从小到大的规则 // 也发生了自动类型转换 float num3 = 30L; System.out.println(num3); // 30.0 } }
/* 强制类型转换 1. 特点:代码需要进行特殊的格式处理,不能自动完成。 2. 格式:范围小的类型 范围小的变量名 = (范围小的类型) 原本范围大的数据; 注意事项: 1. 强制类型转换一般不推荐使用,因为有可能发生精度损失、数据溢出。 2. byte/short/char这三种类型都可以发生数学运算,例如加法“+”. 3. byte/short/char这三种类型在运算的时候,都会被首先提升成为int类型,然后再计算。 4. boolean类型不能发生数据类型转换 */ public class Demo02DataType { public static void main(String[] args) { // 左边是int类型,右边是long类型,不一样 // long --> int,不是从小到大 // 不能发生自动类型转换! // 格式:范围小的类型 范围小的变量名 = (范围小的类型) 原本范围大的数据; int num = (int) 100L; System.out.println(num); // long强制转换成为int类型 int num2 = (int) 6000000000L; System.out.println(num2); // 1705032704 // double --> int,强制类型转换 int num3 = (int) 3.99; System.out.println(num3); // 3,这并不是四舍五入,所有的小数位都会被舍弃掉 char zifu1 = 'A'; // 这是一个字符型变量,里面是大写字母A System.out.println(zifu1 + 1); // 66,也就是大写字母A被当做65进行处理 // 计算机的底层会用一个数字(二进制)来代表字符A,就是65 // 一旦char类型进行了数学运算,那么字符就会按照一定的规则翻译成为一个数字 byte num4 = 40; // 注意!右侧的数值大小不能超过左侧的类型范围 byte num5 = 50; // byte + byte --> int + int --> int int result1 = num4 + num5; System.out.println(result1); // 90 short num6 = 60; // byte + short --> int + int --> int // int强制转换为short:注意必须保证逻辑上真实大小本来就没有超过short范围,否则会发生数据溢出 short result2 = (short) (num4 + num6); System.out.println(result2); // 100 } }
1 /* 2 数字和字符的对照关系表(编码表): 3 4 ASCII码表:American Standard Code for Information Interchange,美国信息交换标准代码。 5 Unicode码表:万国码。也是数字和符号的对照关系,开头0-127部分和ASCII完全一样,但是从128开始包含有更多字符。 6 7 48 - '0' 8 65 - 'A' 9 97 - 'a' 10 */ 11 public class Demo03DataTypeChar { 12 public static void main(String[] args) { 13 char zifu1 = '1'; 14 System.out.println(zifu1 + 0); // 49 15 16 char zifu2 = 'A'; // 其实底层保存的是65数字 17 18 char zifu3 = 'c'; 19 // 左侧是int类型,右边是char类型, 20 // char --> int,确实是从小到大 21 // 发生了自动类型转换 22 int num = zifu3; 23 System.out.println(num); // 99 24 25 char zifu4 = '中'; // 正确写法 26 System.out.println(zifu4 + 0); // 20013 27 } 28 }
1 /* 2 运算符:进行特定操作的符号。例如:+ 3 表达式:用运算符连起来的式子叫做表达式。例如:20 + 5。又例如:a + b 4 5 四则运算: 6 加:+ 7 减:- 8 乘:* 9 除:/ 10 11 取模(取余数):% 12 13 首先计算得到表达式的结果,然后再打印输出这个结果。 14 复习一下小学一年级的除法公式: 15 被除数 / 除数 = 商 ... 余数 16 17 对于一个整数的表达式来说,除法用的是整除,整数除以整数,结果仍然是整数。只看商,不看余数。 18 只有对于整数的除法来说,取模运算符才有余数的意义。 19 20 注意事项: 21 1. 一旦运算当中有不同类型的数据,那么结果将会是数据类型范围大的那种。 22 */ 23 public class Demo04Operator { 24 public static void main(String[] args) { 25 // 两个常量之间可以进行数学运算 26 System.out.println(20 + 30); 27 28 // 两个变量之间也可以进行数学运算 29 int a = 20; 30 int b = 30; 31 System.out.println(a - b); // -10 32 33 // 变量和常量之间可以混合使用 34 System.out.println(a * 10); // 200 35 36 int x = 10; 37 int y = 3; 38 39 int result1 = x / y; 40 System.out.println(result1); // 3 41 42 int result2 = x % y; 43 System.out.println(result2); // 余数,模,1 44 45 // int + double --> double + double --> double 46 double result3 = x + 2.5; 47 System.out.println(result3); // 12.5 48 } 49 }
1 /* 2 四则运算当中的加号“+”有常见的三种用法: 3 4 1. 对于数值来说,那就是加法。 5 2. 对于字符char类型来说,在计算之前,char会被提升成为int,然后再计算。 6 char类型字符,和int类型数字,之间的对照关系表:ASCII、Unicode 7 3. 对于字符串String(首字母大写,并不是关键字)来说,加号代表字符串连接操作。 8 任何数据类型和字符串进行连接的时候,结果都会变成字符串 9 */ 10 public class Demo05Plus { 11 public static void main(String[] args) { 12 // 字符串类型的变量基本使用 13 // 数据类型 变量名称 = 数据值; 14 String str1 = "Hello"; 15 System.out.println(str1); // Hello 16 17 System.out.println("Hello" + "World"); // HelloWorld 18 19 String str2 = "Java"; 20 // String + int --> String 21 System.out.println(str2 + 20); // Java20 22 23 // 优先级问题 24 // String + int + int 25 // String + int 26 // String 27 System.out.println(str2 + 20 + 30); // Java2030 28 29 System.out.println(str2 + (20 + 30)); // Java50 30 } 31 }
Demo06Operator
1 /* 2 自增运算符:++ 3 自减运算符:-- 4 5 基本含义:让一个变量涨一个数字1,或者让一个变量降一个数字1 6 使用格式:写在变量名称之前,或者写在变量名称之后。例如:++num,也可以num++ 7 使用方式: 8 1. 单独使用:不和其他任何操作混合,自己独立成为一个步骤。 9 2. 混合使用:和其他操作混合,例如与赋值混合,或者与打印操作混合,等。 10 使用区别: 11 1. 在单独使用的时候,前++和后++没有任何区别。也就是:++num;和num++;是完全一样的。 12 2. 在混合的时候,有【重大区别】 13 A. 如果是【前++】,那么变量【立刻马上+1】,然后拿着结果进行使用。 【先加后用】 14 B. 如果是【后++】,那么首先使用变量本来的数值,【然后再让变量+1】。 【先用后加】 15 16 注意事项: 17 只有变量才能使用自增、自减运算符。常量不可发生改变,所以不能用。 18 */ 19 public class Demo06Operator { 20 public static void main(String[] args) { 21 int num1 = 10; 22 System.out.println(num1); // 10 23 ++num1; // 单独使用,前++ 24 System.out.println(num1); // 11 25 num1++; // 单独使用,后++ 26 System.out.println(num1); // 12 27 System.out.println("================="); 28 29 // 与打印操作混合的时候 30 int num2 = 20; 31 // 混合使用,先++,变量立刻马上变成21,然后打印结果21 32 System.out.println(++num2); // 21 33 System.out.println(num2); // 21 34 System.out.println("================="); 35 36 int num3 = 30; 37 // 混合使用,后++,首先使用变量本来的30,然后再让变量+1得到31 38 System.out.println(num3++); // 30 39 System.out.println(num3); // 31 40 System.out.println("================="); 41 42 int num4 = 40; 43 // 和赋值操作混合 44 int result1 = --num4; // 混合使用,前--,变量立刻马上-1变成39,然后将结果39交给result1变量 45 System.out.println(result1); // 39 46 System.out.println(num4); // 39 47 System.out.println("================="); 48 49 int num5 = 50; 50 // 混合使用,后--,首先把本来的数字50交给result2,然后我自己再-1变成49 51 int result2 = num5--; 52 System.out.println(result2); // 50 53 System.out.println(num5); // 49 54 System.out.println("================="); 55 56 int x = 10; 57 int y = 20; 58 // 11 + 20 = 31 59 int result3 = ++x + y--; 60 System.out.println(result3); // 31 61 System.out.println(x); // 11 62 System.out.println(y); // 19 63 64 // 30++; // 错误写法!常量不可以使用++或者-- 65 } 66 }
/* 赋值运算符分为: 基本赋值运算符:就是一个等号“=”,代表将右侧的数据交给左侧的变量。 int a = 30; 复合赋值运算符: += a += 3 相当于 a = a + 3 -= b -= 4 相当于 b = b - 4 *= c *= 5 相当于 c = c * 5 /= d /= 6 相当于 d = d / 6 %= e %= 7 相当于 e = e % 7 注意事项: 1. 只有变量才能使用赋值运算符,常量不能进行赋值。 2. 复合赋值运算符其中隐含了一个强制类型转换。 */ public class Demo07Operator { public static void main(String[] args) { int a = 10; // 按照公式进行翻译:a = a + 5 // a = 10 + 5; // a = 15; // a本来是10,现在重新赋值得到15 a += 5; System.out.println(a); // 15 int x = 10; // x = x % 3; // x = 10 % 3; // x = 1; // x本来是10,现在重新赋值得到1 x %= 3; System.out.println(x); // 1 // 50 = 30; // 常量不能进行赋值,不能写在赋值运算符的左边。错误写法! byte num = 30; // num = num + 5; // num = byte + int // num = int + int // num = int // num = (byte) int num += 5; System.out.println(num); // 35 } }
1 /* 2 比较运算符: 3 大于: > 4 小于: < 5 大于等于: >= 6 小于等于: <= 7 相等: == 【两个等号连写才是相等,一个等号代表的是赋值】 8 不相等: != 9 10 注意事项: 11 1. 比较运算符的结果一定是一个boolean值,成立就是true,不成立就是false 12 2. 如果进行多次判断,不能连着写。 13 数学当中的写法,例如:1 < x < 3 14 程序当中【不允许】这种写法。 15 */ 16 public class Demo08Operator { 17 public static void main(String[] args) { 18 System.out.println(10 > 5); // true 19 int num1 = 10; 20 int num2 = 12; 21 System.out.println(num1 < num2); // true 22 System.out.println(num2 >= 100); // false 23 System.out.println(num2 <= 100); // true 24 System.out.println(num2 <= 12); // true 25 System.out.println("==============="); 26 27 System.out.println(10 == 10); // true 28 System.out.println(20 != 25); // true 29 System.out.println(20 != 20); // false 30 31 int x = 2; 32 // System.out.println(1 < x < 3); // 错误写法!编译报错!不能连着写。 33 } 34 }
Demo09Logic
1 /* 2 与(并且) && 全都是true,才是true;否则就是false 3 或(或者) || 至少一个是true,就是true;全都是false,才是false 4 非(取反) ! 本来是true,变成false;本来是false,变成true 5 6 与“&&”,或“||”,具有短路效果:如果根据左边已经可以判断得到最终结果,那么右边的代码将不再执行,从而节省一定的性能。 7 8 注意事项: 9 1. 逻辑运算符只能用于boolean值。 10 2. 与、或需要左右各自有一个boolean值,但是取反只要有唯一的一个boolean值即可。 11 3. 与、或两种运算符,如果有多个条件,可以连续写。 12 两个条件:条件A && 条件B 13 多个条件:条件A && 条件B && 条件C 14 15 TIPS: 16 对于1 < x < 3的情况,应该拆成两个部分,然后使用与运算符连接起来: 17 int x = 2; 18 1 < x && x < 3 19 */ 20 public class Demo09Logic { 21 public static void main(String[] args) { 22 System.out.println(true && false); // false 23 // true && true --> true 24 System.out.println(3 < 4 && 10 > 5); // true 25 System.out.println("============"); 26 27 System.out.println(true || false); // true 28 System.out.println(true || true); // true 29 System.out.println(false || false); // false 30 System.out.println("============"); 31 32 System.out.println(true); // true 33 System.out.println(!true); // false 34 System.out.println("============"); 35 36 int a = 10; 37 // false && ... 38 System.out.println(3 > 4 && ++a < 100); // false 39 System.out.println(a); // 10 40 System.out.println("============"); 41 42 int b = 20; 43 // true || ... 44 System.out.println(3 < 4 || ++b < 100); // true 45 System.out.println(b); // 20 46 } 47 }
Demo10Operator
1 /* 2 一元运算符:只需要一个数据就可以进行操作的运算符。例如:取反!、自增++、自减-- 3 二元运算符:需要两个数据才可以进行操作的运算符。例如:加法+、赋值= 4 三元运算符:需要三个数据才可以进行操作的运算符。 5 6 格式: 7 数据类型 变量名称 = 条件判断 ? 表达式A : 表达式B; 8 9 流程: 10 首先判断条件是否成立: 11 如果成立为true,那么将表达式A的值赋值给左侧的变量; 12 如果不成立为false,那么将表达式B的值赋值给左侧的变量; 13 二者选其一。 14 15 注意事项: 16 1. 必须同时保证表达式A和表达式B都符合左侧数据类型的要求。 17 2. 三元运算符的结果必须被使用。 18 */ 19 public class Demo10Operator { 20 public static void main(String[] args) { 21 int a = 10; 22 int b = 20; 23 24 // 数据类型 变量名称 = 条件判断 ? 表达式A : 表达式B; 25 // 判断a > b是否成立,如果成立将a的值赋值给max;如果不成立将b的值赋值给max。二者选其一 26 int max = a > b ? a : b; // 最大值的变量 27 System.out.println("最大值:" + max); // 20 28 29 // int result = 3 > 4 ? 2.5 : 10; // 错误写法! 30 31 System.out.println(a > b ? a : b); // 正确写法! 32 33 // a > b ? a : b; // 错误写法! 34 } 35 }
Demo11Method
/* 定义一个方法的格式: public static void 方法名称() { 方法体 } 方法名称的命名规则和变量一样,使用小驼峰。 方法体:也就是大括号当中可以包含任意条语句。 注意事项: 1. 方法定义的先后顺序无所谓。 2. 方法的定义不能产生嵌套包含关系。 3. 方法定义好了之后,不会执行的。如果要想执行,一定要进行方法的【调用】。 如何调用方法,格式: 方法名称(); */ public class Demo11Method { public static void main(String[] args) { farmer(); // 调用农民的方法 seller(); // 调用小商贩的方法 cook(); // 调用厨子的方法 me(); // 调用我自己的方法 } // 厨子 public static void cook() { System.out.println("洗菜"); System.out.println("切菜"); System.out.println("炒菜"); System.out.println("装盘"); } // 我 public static void me() { System.out.println("吃"); } // 小商贩 public static void seller() { System.out.println("运输到农贸市场"); System.out.println("抬高价格"); System.out.println("吆喝"); System.out.println("卖给厨子"); } // 农民伯伯 public static void farmer() { System.out.println("播种"); System.out.println("浇水"); System.out.println("施肥"); System.out.println("除虫"); System.out.println("收割"); System.out.println("卖给小商贩"); } }
注意点
Demo12Notice
1 /* 2 对于byte/short/char三种类型来说,如果右侧赋值的数值没有超过范围, 3 那么javac编译器将会自动隐含地为我们补上一个(byte)(short)(char)。 4 5 1. 如果没有超过左侧的范围,编译器补上强转。 6 2. 如果右侧超过了左侧范围,那么直接编译器报错。 7 */ 8 public class Demo12Notice { 9 public static void main(String[] args) { 10 // 右侧确实是一个int数字,但是没有超过左侧的范围,就是正确的。 11 // int --> byte,不是自动类型转换 12 byte num1 = /*(byte)*/ 30; // 右侧没有超过左侧的范围 13 System.out.println(num1); // 30 14 15 // byte num2 = 128; // 右侧超过了左侧的范围 16 17 // int --> char,没有超过范围 18 // 编译器将会自动补上一个隐含的(char) 19 char zifu = /*(char)*/ 65; 20 System.out.println(zifu); // A 21 } 22 }
Demo13Notice
1 /* 2 在给变量进行赋值的时候,如果右侧的表达式当中全都是常量,没有任何变量, 3 那么编译器javac将会直接将若干个常量表达式计算得到结果。 4 short result = 5 + 8; // 等号右边全都是常量,没有任何变量参与运算 5 编译之后,得到的.class字节码文件当中相当于【直接就是】: 6 short result = 13; 7 右侧的常量结果数值,没有超过左侧范围,所以正确。 8 9 这称为“编译器的常量优化”。 10 11 但是注意:一旦表达式当中有变量参与,那么就不能进行这种优化了。 12 */ 13 public class Demo13Notice { 14 public static void main(String[] args) { 15 short num1 = 10; // 正确写法,右侧没有超过左侧的范围, 16 17 short a = 5; 18 short b = 8; 19 // short + short --> int + int --> int 20 // short result = a + b; // 错误写法!左侧需要是int类型 21 22 // 右侧不用变量,而是采用常量,而且只有两个常量,没有别人 23 short result = 5 + 8; 24 System.out.println(result); 25 26 short result2 = 5 + a + 8; // 18 27 } 28 }
day02_15_JDK9的JShell简单使用
day02_16_编译器的两点优化
1 // 顺序结构 2 public class Demo01Sequence { 3 public static void main(String[] args) { 4 System.out.println("今天天气不错"); 5 System.out.println("挺风和日丽的"); 6 System.out.println("我们下午没课"); 7 System.out.println("这的确挺爽的"); 8 } 9 }
单if语句
// 单if语句 public class Demo02If { public static void main(String[] args) { System.out.println("今天天气不错,正在压马路……突然发现一个快乐的地方:网吧"); int age = 19; if (age >= 18) { System.out.println("进入网吧,开始high!"); System.out.println("遇到了一群猪队友,开始骂街。"); System.out.println("感觉不爽,结账走人。"); } System.out.println("回家吃饭"); } }
1 // 标准的if-else语句 2 public class Demo03IfElse { 3 public static void main(String[] args) { 4 int num = 666; 5 6 if (num % 2 == 0) { // 如果除以2能够余数为0,说明是偶数 7 System.out.println("偶数"); 8 } else { 9 System.out.println("奇数"); 10 } 11 } 12 }
1 // x和y的关系满足如下: 2 // 如果x >= 3,那么y = 2x + 1; 3 // 如果-1 < x < 3,那么y = 2x; 4 // 如果x <= -1,那么y = 2x – 1; 5 public class Demo04IfElseExt { 6 public static void main(String[] args) { 7 int x = -10; 8 int y; 9 if (x >= 3) { 10 y = 2 * x + 1; 11 } else if (-1 < x && x < 3) { 12 y = 2 * x; 13 } else { 14 y = 2 * x - 1; 15 } 16 System.out.println("结果是:" + y); 17 } 18 }
public class Demo05IfElsePractise { public static void main(String[] args) { int score = 120; if (score >= 90 && score <= 100) { System.out.println("优秀"); } else if (score >= 80 && score < 90) { System.out.println("好"); } else if (score >= 70 && score < 80) { System.out.println("良"); } else if (score >= 60 && score < 70) { System.out.println("及格"); } else if (score >= 0 && score < 60) { System.out.println("不及格"); } else { // 单独处理边界之外的不合理情况 System.out.println("数据错误"); } } }
// 题目:使用三元运算符和标准的if-else语句分别实现:取两个数字当中的最大值 public class Demo06Max { public static void main(String[] args) { int a = 105; int b = 20; // 首先使用三元运算符 // int max = a > b ? a : b; // 使用今天的if语句 int max; if (a > b) { max = a; } else { max = b; } System.out.println("最大值:" + max); } }
1 public class Demo07Switch { 2 public static void main(String[] args) { 3 int num = 10; 4 5 switch (num) { 6 case 1: 7 System.out.println("星期一"); 8 break; 9 case 2: 10 System.out.println("星期二"); 11 break; 12 case 3: 13 System.out.println("星期三"); 14 break; 15 case 4: 16 System.out.println("星期四"); 17 break; 18 case 5: 19 System.out.println("星期五"); 20 break; 21 case 6: 22 System.out.println("星期六"); 23 break; 24 case 7: 25 System.out.println("星期日"); 26 break; 27 default: 28 System.out.println("数据不合理"); 29 break; // 最后一个break语句可以省略,但是强烈推荐不要省略 30 } 31 } 32 }
1 /* 2 switch语句使用的注意事项: 3 4 1. 多个case后面的数值不可以重复。 5 6 2. switch后面小括号当中只能是下列数据类型: 7 基本数据类型:byte/short/char/int 8 引用数据类型:String字符串、enum枚举 9 10 3. switch语句格式可以很灵活:前后顺序可以颠倒,而且break语句还可以省略。 11 “匹配哪一个case就从哪一个位置向下执行,直到遇到了break或者整体结束为止。” 12 */ 13 public class Demo08SwitchNotice { 14 public static void main(String[] args) { 15 int num = 2; 16 switch (num) { 17 case 1: 18 System.out.println("你好"); 19 break; 20 case 2: 21 System.out.println("我好"); 22 // break; 23 case 3: 24 System.out.println("大家好"); 25 break; 26 default: 27 System.out.println("他好,我也好。"); 28 break; 29 } // switch 30 } 31 }
1 /* 2 循环结构的基本组成部分,一般可以分成四部分: 3 4 1. 初始化语句:在循环开始最初执行,而且只做唯一一次。 5 2. 条件判断:如果成立,则循环继续;如果不成立,则循环退出。 6 3. 循环体:重复要做的事情内容,若干行语句。 7 4. 步进语句:每次循环之后都要进行的扫尾工作,每次循环结束之后都要执行一次。 8 */ 9 public class Demo09For { 10 public static void main(String[] args) { 11 for (int i = 1; i <= 100; i++) { 12 System.out.println("我错啦!原谅我吧!" + i); 13 } 14 System.out.println("程序停止"); 15 } 16 }
/* while循环有一个标准格式,还有一个扩展格式。 标准格式: while (条件判断) { 循环体 } 扩展格式: 初始化语句; while (条件判断) { 循环体; 步进语句; } */ public class Demo10While { public static void main(String[] args) { for (int i = 1; i <= 10; i++) { System.out.println("我错啦!" + i); } System.out.println("================="); int i = 1; // 1. 初始化语句 while (i <= 10) { // 2. 条件判断 System.out.println("我错啦!" + i); // 3. 循环体 i++; // 4. 步进语句 } } }
1 /* 2 do-while循环的标准格式: 3 4 do { 5 循环体 6 } while (条件判断); 7 8 扩展格式: 9 10 初始化语句 11 do { 12 循环体 13 步进语句 14 } while (条件判断); 15 */ 16 public class Demo11DoWhile { 17 public static void main(String[] args) { 18 for (int i = 1; i <= 10; i++) { 19 System.out.println("原谅你啦!起来吧!地上怪凉!" + i); 20 } 21 System.out.println("==============="); 22 23 int i = 1; // 1. 初始化语句 24 do { 25 System.out.println("原谅你啦!起来吧!地上怪凉!" + i); // 3. 循环体 26 i++; // 4. 步进语句 27 } while (i <= 10); // 2. 条件判断 28 } 29 }
/* 题目:求出1-100之间的偶数和。 思路: 1. 既然范围已经确定了是1到100之间,那么我就从1、2、3……一直到100这么多数字一个一个进行检查。 2. 总共有100个数字,并非所有数字都能用。必须要是偶数才能用,判断(if语句)偶数:num % 2 == 0 3. 需要一个变量,用来进行累加操作。也就好比是一个存钱罐。 */ public class Demo12HundredSum { public static void main(String[] args) { int sum = 0; // 用来累加的存钱罐 for (int i = 1; i <= 100; i++) { if (i % 2 == 0) { // 如果是偶数 sum += i; } } System.out.println("结果是:" + sum); } }
1 /* 2 三种循环的区别。 3 4 1. 如果条件判断从来没有满足过,那么for循环和while循环将会执行0次,但是do-while循环会执行至少一次。 5 2. for循环的变量在小括号当中定义,只有循环内部才可以使用。while循环和do-while循环初始化语句本来就在外面,所以出来循环之后还可以继续使用。 6 */ 7 public class Demo13LoopDifference { 8 public static void main(String[] args) { 9 for (int i = 1; i < 0; i++) { 10 System.out.println("Hello"); 11 } 12 // System.out.println(i); // 这一行是错误写法!因为变量i定义在for循环小括号内,只有for循环自己才能用。 13 System.out.println("================"); 14 15 int i = 1; 16 do { 17 System.out.println("World"); 18 i++; 19 } while (i < 0); 20 // 现在已经超出了do-while循环的范围,我们仍然可以使用变量i 21 System.out.println(i); // 2 22 } 23 }
1 /* 2 break关键字的用法有常见的两种: 3 4 1. 可以用在switch语句当中,一旦执行,整个switch语句立刻结束。 5 2. 还可以用在循环语句当中,一旦执行,整个循环语句立刻结束。打断循环。 6 7 关于循环的选择,有一个小建议: 8 凡是次数确定的场景多用for循环;否则多用while循环。 9 */ 10 public class Demo14Break { 11 public static void main(String[] args) { 12 for (int i = 1; i <= 10; i++) { 13 // 如果希望从第4次开始,后续全都不要了,就要打断循环 14 if (i == 4) { // 如果当前是第4次 15 break; // 那么就打断整个循环 16 } 17 System.out.println("Hello" + i); 18 } 19 } 20 }
/* 另一种循环控制语句是continue关键字。 一旦执行,立刻跳过当前次循环剩余内容,马上开始下一次循环。 */ public class Demo15Continue { public static void main(String[] args) { for (int i = 1; i <= 10; i++) { if (i == 4) { // 如果当前是第4层 continue; // 那么跳过当前次循环,马上开始下一次(第5层) } System.out.println(i + "层到了。"); } } }
1 /* 2 永远停不下来的循环,叫做死循环。 3 4 死循环的标准格式: 5 while (true) { 6 循环体 7 } 8 */ 9 public class Demo16DeadLoop { 10 public static void main(String[] args) { 11 while (true) { 12 System.out.println("I Love Java!"); 13 } 14 15 // System.out.println("Hello"); 16 } 17 }
public class Demo17LoopHourAndMinute { public static void main(String[] args) { for (int hour = 0; hour < 24; hour++) { // 外层控制小时 for (int minute = 0; minute < 60; minute++) { // 内层控制小时之内的分钟 System.out.println(hour + "点" + minute + "分"); } } } }