Java基础语法Day_02-03

第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 + "分");
            }

        }
    }
}

猜你喜欢

转载自www.cnblogs.com/yaozhenhua/p/10307152.html
今日推荐