Java学习-Java循环加强和类方法的创建、解释、重载

一. 关于循环的一些练习

练习

  计算1~5之间数字的乘积 (求5的阶乘, 5!) 提示: 存储累积的初始变量一定是1

1 public static void add(String[] args) {
2         int sum = 1;
3         for (int i = 1; i <= 5; i++) {
4             sum *= i;
5         }
6         System.out.println(sum);
7     }

练习

  打印出10~1之间的数字  

1 public static void oneTen(String[] args) {
2         for(int i = 10; i > 0; i--) {
3             System.out.println("第"+ i + "个数");
4         }

练习

  使用while循环统计出1~100之间所有能被7整除的数字个数

 1 public static void printSevenNumber(String[] args) {
 2         int i = 1;
 3         int sum = 0;
 4         while( i != 100) {
 5             if (i % 7 == 0) {
 6                 sum += 1;
 7                 System.out.println(i);
 8             }
 9             i++;
10         }
11         System.out.println("能被七整除的数有"  + sum);
12     }

  1.循环的嵌套

    1.概念: 在一个大循环中, 每次循环的内容(循环体)有一个一个重复操作,也就是又是一个循环, 像这样一个循环中写了另一个循环,这种格式就是循环的嵌套.

    2.格式:

      for(初始化语句1; 循环判断条件1; 循环变量改变1) {

            for(初始化语句2;  循环判断条件2; 循环变量改变2) {

                  循环体;

        }

      }

  1. 执行的流程

       1.  初始化语句1;

       2.  循环判断条件1, 计算结果为false,外层循环结束.

       3.  循环判断条件1,计算结果为true,  执行初始化语句2;

       4.  循环判断条件2, 计算结果为false, 内层循环结束. 执行循环变量改变1, 回到第2步

       5.  循环判断条件2, 计算结果为true, 执行循环体, 执行循环变量改变2, 回到第4步.

练习

  使用循环嵌套打印出一下图形:

    * * * * * *

    * * * * * *

    * * * * * *

1 public static void main(String [] args){
2       for (int i = 1; i < 4; i++){
3           for (int j = 1; j < 5; j++){
4                  System.out.print("* ");
5          }
6         System.out.println();
7     }      
8 }

  使用循环嵌套打印图形时有个规则: 外层循环控制行数,  内层循环控制列数

练习

    打印一下图形

    * * * *
    * * *
    * *
    *

public static void printJuxing(String[] args) {
        for (int i = 4; i > 0; i--) {
            for (int j = i; j >0 ; j--) {
                System.out.print("* ");
            }
            System.out.println();
        }
    }

练习

   九九乘法

    1.一共9行,外层循环9次

    2.每一行的式子的个数,刚好等于行号, 内层循环条件  小于等于行号

    3.每一个的式子的特点: 第一个数字是: 列号 . 第二个数字: 行号   第三个数字: 列号和行号的乘积

1 public static void main(String[] args) {
2         for(int i = 1; i < 10; i++) {
3             for (int j = 1; j <= i; j++) {
4                 System.out.print(j + "*" + j + "=" + (i * j) + "\t");
5             }
6             System.out.println();
7         }
8     }

方法

  一. 方法

    1.方法定义: 指的就是能完成特定功能的代码段.

    2.如果某段代码经常被使用, 每次用都要写一遍, 为了简化程序的设计难度, 使用一个大括号,把这段代码包裹起来, 然后取一个名字, 将来要使用这段代码的时候,直接使用这个名字就可以访问这段代码.

    3.方法的好处:

      1.提高了代码的复用性

      2.提高了代码的封装性, 别人在使用方法是不能直接看到内部的实现,他只需要会调用即可.也能提高程序的安全性.

      3.简化了程序的设计难度

  二. 方法的定义

    1. 方法的定义的格式:

          修饰符 返回值类型   方法名(参数列表) {

                 方法体;

      }

    2.方法格式的说明:

      修饰符: 用来修饰方法访问权限, 目前全部都用: public static

      返回值类型: 方法都具有一定的功能, 有可能会有一些数据产生, 就需要将数据返回给方法的调用者. 定义方法时需要告诉方法的调用者,应该使用什么样的数据类型接收方法产生的数据.  简单说: 返回值类型就是方法内部产生数据的数据类型. 注意:没有数据产生这里写: void (空)   

      方法名: 就是给封装的代码段起的名字,小驼峰命名法,见名知意即可.

      参数列表: 这段代码要完成功能是,可能会需要一些数据, 这些数据就需要通过参数列表传入到方法的内部. 需要告诉调用者你要传入什么类型数据.  

      参数列表的书写格式 (数据类型1  参数名1,  数据类型2 参数名2) 这样调用者就知道要传入什么类型数据,以及传入几个数据.

        方法体: 能完成特定功能的代码段

        如果方法内部有数据产生, 需要使用return关键字, 把方法内部产生的数据返回给调用者.

           return  数据;

  3.方法的调用

    1.方法不调用是不会执行的

    2.方法调用的格式:  方法名(实际参数)

         实际参数: 就是让方法执行,真实传入的数据

    3.方法调用的其他形式:

        1. 直接调用  使用没有返回值产生的方法  方法名(实际参数);

        2. 赋值调用  必须是有返回值产生的方式,  数据类型 变量名 = 方法名(实际参数);

        3. 打印(输出)调用  必须是有返回值产生的方法

          System.out.println(方法名(实际参数));

  4.方法使用的注意事项

    1.方法定义的注意事项

         1.方法是不能嵌套定义的, 方法必须定义一个类后面的大括号中

         2.方法定义先后是没有区别的

         3.方法之间是平级的关系,没有优先级

    2. 方法的调用:  

      1. 方法是可以嵌套调用的, 就是在一个方法中调用其他方法

      2. 甚至一个方法可以自己调用自己, 这种现象叫做递归调用, 递归有风险, 效率极低

    3. 方法参数注意事项

         1.定义方法的时候,叫做形式参数 (形参), 形参的书写格式 (数据类型  参数名, 数据类型  参数名, ...)   每个参数名前都要数据类型, 每定义完一个后要加逗号, 如果是最后一个就不加,

      形参的作用: 告诉调用者需要什么类型数据以及的数据的个数.

         2.调用方法的时候, 叫做实际参数(实参), 就是真正参与执行的数据,  

          2.1 实参不要数据类型

          2.2 实参的数据类型一定要形参的数据类型一致

          2.3 实参的个数一定要形参的个数一致

          2.4 实参的顺序一定要形参的顺序一致

    4. return语句

         1. 第一个作用,就是把有返回值的方法中产生的数据返回给调用者

         2. 如果一个方法的返回值类型不是void, 那么就必须提供return语句.

         3. 第二个作用, 可以提前结束一个方法, 一般用来结束返回值为void的方法. 一个方法如果没有数据产生,也可以写return关键字, 但是必须写为: return; 表示提前结束方法

         4.return语句之后不要在写代码了,因为那段代码不能执行到,编译会报错.

练习

    定义一个功能求取两个int类型的最大值, 方法名: getMax    调用 键盘录入两个整数,  传入到方法中, 得到最大值

 1 public class Dome1 {
 2     public static void main(String[] args) {
 3         Scanner sc = new Scanner(System.in);
 4         System.out.print("请输入两个整数:");
 5         int a = sc.nextInt();
 6         int b = sc.nextInt();
 7         int s = getMax(1, 2);
 8     }
 9     public static int getMax(int a, int b) {
10         return a > b ? a : b;
11     }
12     
13 }

练习

  定义一个方法,用来比较两个小数是否相等.  调用, 键盘录入两个小数, 键盘录入对象接收小数的方式:nextDouble()

public class Dome1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入两个小数:");
        double c = sc.nextDouble();
        double d = sc.nextDouble();
        String mag = xiangD(c, d);
        System.out.println(mag);
    }
    public static String xiangD(double a, double b) {
        return a == b ? "相等" : "不相等";
    }
}

练习

定义一个方法,传入一个正整数, 要求计算出,1到整数的和 :比如传入100, 返回 5050

 1 public class Dome1 {
 2     public static void main(String[] args) {
 3         Scanner sc = new Scanner(System.in);
 4         System.out.print("请输入一个整数:");
 5         int num = sc.nextInt();
 6         int sum = addNum(num);
 7         System.out.println(sum);
 8     }
 9     public static int addNum(int a) {
10         int sum = 0;
11         for (int i = 1; i <= a ; i++) {
12             sum += i;
13         }
14         return sum;
15     }
16 }

方法的重载

  1.重载:  Overload

  2.方法的重载概念:

    在同一个类中, 方法名相同,但是参数列表不同,与返回值类型无关, 这样多个方法之间的关系就是重载.

        3.概念的说明:

       1. 在同一个类中: 必须是写在一个类中的方法, 不同类的中是不可能发生重载的.

       2. 方法名相同: 方法名要一模一样

       3. 参数列表不同: 参数的类型不同, 参数的个数, 参数的顺序不同. 与参数的名字没有关系.  

       4. 与返回值类型无关:  即使返回值类型不同, 也不算重载, 这叫做方法重复.

  4. 方法重载的好处

       如果没有方法的重载, 咱们有很多个相同逻辑的代码段(方法),就需要为这多个相同逻辑的代码段取多个名字, 对于方法定义这来说,取名就是一个很重的负担. 同样对于方法的调用者来说也是一种负担,因为要记忆大量的名字.

       有了重载之后,同一个类中相同逻辑的代码段,就可以只取一个名字, 定义方法的人工作量减轻了,调用者只需要记忆一个名字,就能访问多个相同逻辑的方法.

  5.之前的学习咱们就使用了重载的好处

      1.每次打印内容用的方法: println, print 在他们所在的类型,都定义大量同名方法,但是这些参数列表都不同相同, println, print 都存在重载的方法.  

posted @ 2020-07-17 21:00  zcb_bai  阅读(250)  评论(0编辑  收藏  举报