AI智能应用开发从起点-终点 3.Java的基础语法(第2弹)

1 阅读9分钟

 

一、方法

1.方法的介绍:

方法就相当于一个实现某样功能的代码块,好比说我需要实现多个需求,但是把多个需求的代码全写在一块就显得十分拥挤和不美观,同时也容易让思路混乱,所以就把一块块要实现的需求的功能代码,分割成一个个方法。不仅提高美观度,还提高了复用性,方法可以重复使用,上代码给大家看看,


public class MethodDef
{
//    一个标准的方法,main函数,是可以运行的,也是程序的入口
    public static void main(String[] args) {
        eat();

        drink();

        play();

        happy();

    }
//    方法的定义
    public static void  eat(){
        System.out.println("吃");
    }
    public static void drink(){
        System.out.println("喝");
    }

    public static void play(){
        System.out.println("玩");
    }

    public static void happy(){
        System.out.println("乐");
    }
}

2.方法的定义:

这边正好说一下代码的定义方法

​编辑

3.带参数的方法:

​编辑

如果方法中的数据可以由调用者传入,那数据是不是就灵活了呢

是的,我们可以在方法的小括号中声明参数,准备接受调用者传入的数据

这些参数本质来说就是变量,接受数据用的

​编辑

public class MethodPratice {
    public static void main(String[] args) {
//判断两数之间的最大值

        getMax(10,20);
    }

    public static void getMax(int num1, int num2 ){
        int result = num1>num2? num1: num2;
        System.out.println("最大值:"+ result);

    }

}

4.带返回值的方法

A 方法产生的数据, B 方法想要使用的话, 就需要定义带返回值的方法

​编辑

public class MethodWithParamsDemo {
    public static void main(String[] args) {
//        计算不同商品的价格,参数是:单价、数量
        double price = getPrice(53.5, 5);
        System.out.println("商品的单价是:"+price);

//  求两数之余
    }
    public static double getPrice(double money,int num ){
        double price= money*num;

        return price;
    }
}

5.方法的重载

在同一个类中,定义了多个同名的方法,但每个方法具有不同的参数类型或参数个数,这些同名的方法,就构成了重载关系 (Overload)

给大家出一个小题目:如果做出来了,把答案发在评论区,我看到了会回答

 同一个类中,下面方法可以跟
public void method(double a , int b){

}构成重载的是:
A. public static void method(){}
B. public String method(double b, int a){}
C. private int method(double a){}
D. public void method2(int a, int b , int c){}

6.方法的注意事项

  1. 方法注意事项 -
  2. 方法不调用就不执行 -
  3. 方法与方法之间是平级关系,不能嵌套定义
    • 方法的编写顺序和执行顺序无关
    • 方法的返回值类型为void,表示该方法没有返回值,
  4. 没有返回值的方法可以省略return语句不写,如果要编写return,后面不能跟具体的数据。

二 流程控制语句

流程控制语句 : 通俗的说就是可以通过一些语句,来控制程序的执行流程,

1.顺序结构

就是java默认的执行流程,从上往下执行

2.分支结构

if语句三种格式:

格式: if(判断条件){ 语句体 }

​编辑

代码说明

public class IfDemo {
    public static void main(String[] args) {
        System.out.println("开始");
        int age = 19;
        if (age >= 18) {
            System.out.println("可以上网吧");
        }
        System.out.println("结束");
    }
}

格式: if(判断条件){ 语句体 }else{ 语句体 }

​编辑

public class IfDemo {
    public static void main(String[] args) {
        System.out.println("开始");
        int age = 19;
        if (age >= 18) {
            System.out.println("可以上网吧");
        } else {
            System.out.println("未成年人禁止入内");
        }
        System.out.println("结束");
    }
}

格式: if(判断条件){ 语句体 }else if(判断条件){ 语句体 } else{ 语句体 }

​编辑

public class IfDemo1 {
    public static void main(String[] args) {
        System.out.println("开始");
        
        int num = 8;

        if (num == 1) {
            System.out.println("会员身份");
        } else if (num == 2) {
            System.out.println("非会员身份");
        } else {
            System.out.println("数据有误");
        }
    }
}

注意事项

注意事项:

  • If 语句中,如果大括号控制的是一条语句,大括号可以省略不写 - (Tips : 刚入门的话不建议省略,编写 {} 可以提高代码阅读性)

  • if 语句的 ( ) 和 { } 之间不要写分号

  • if 语句的 ( ) 中需要产生 boolean 类型的结果,根据结果决定程序的走向

if语句三道练习题
public class IfTest1 {
    public static void main(String[] args) {
//        红茶妹妹有21元钱,她攒了几天钱之后自己的钱比原来的两倍还多三块。绿茶妹妹有24元钱,她攒了几天钱之后自己的钱正好是原来的两倍。
//        那么红茶和绿茶现在的钱一样多,请问对么?请编写程序进行判断。
        int redSister = 21;
        redSister= 21*2+3;
        int greenSister  = 24*2;

        if (greenSister == redSister){
            System.out.println("对");
        }else {
            System.out.println("不对");
        }
    }
}

public class IfTest2 {
    public static void main(String[] args) {
//        根据用户输入的年龄,输出对应的阶段:
//        小孩(0-12岁)、
//        青少年(13-18岁)
//        、成年人(19-59岁)和老年人(60岁及以上)
        Scanner sc = new Scanner(System.in);
        System.out.println("输入年龄:");
        int num = sc.nextInt();

        if (num>=0&& num<=12){
            System.out.println("小孩(0-12岁)");
        }else if (num>=13&& num<=18){
            System.out.println("青少年(13-18岁)");
        }else if (num>=19&& num<=59){
            System.out.println("成年人(19-59岁)");
        }else if (num>=60){
            System.out.println("老年人(60岁及以上)");
        }



    }
}

public class IfTest3 {
    public static void main(String[] args) {
//        定义一个字符,判断它是大写字母、小写字母还是其他字符。

        char chars = 'a';
        if (chars>='A'&&chars<='Z'){
            System.out.println("大写字母");
        }else if (chars>='a'&&chars<='z'){
            System.out.println("小写字母");
        }else {
            System.out.println("其他字符");
        }
    }
}

switch语句

   switch语句格式 :

            switch (将要匹配的值) {
                case1:
                    语句体1;
                    break;
                case2:
                    语句体2;
                    break;
                ...
                default:
                    语句体n+1;
                    break;
            }

        执行流程:

            1. 拿着 () 中将要匹配的值, 跟case给出的选项, 逐个进行匹配
                    匹配成功, 执行对应的语句体, 再由break结束掉整个的switch语句
            2. 如果给出的所有case, 都匹配失败了, 将会执行最后的 default, 由break结束掉整个的switch语句

代码解释

package com.itheima.mswitch;

import java.util.Scanner;

public class SwitchDemo1 {
    /*
         switch语句格式 :

            switch (将要匹配的值) {
                case 值1:
                    语句体1;
                    break;
                case 值2:
                    语句体2;
                    break;
                ...
                default:
                    语句体n+1;
                    break;
            }

        执行流程:

            1. 拿着 () 中将要匹配的值, 跟case给出的选项, 逐个进行匹配
                    匹配成功, 执行对应的语句体, 再由break结束掉整个的switch语句
            2. 如果给出的所有case, 都匹配失败了, 将会执行最后的 default, 由break结束掉整个的switch语句

        需求: 键盘录入一个整数, 根据录入的数值, 程序打印出对应的星期
                1 ---> 星期一
                2 ---> 星期二
                ...
                7 ---> 星期日
                8 ---> 您的输入有误
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入: ");
        int week = sc.nextInt();

        switch (week) {
            case 1:
                System.out.println("星期一");
                break;
            case 2:
                System.out.println("星期二");
                break;
            case 3:
                System.out.println("星期三");
                break;
            case 4:
                System.out.println("星期四");
                break;
            case 5:
                System.out.println("星期五");
                break;
            case 6:
                System.out.println("星期六");
                break;
            case 7:
                System.out.println("星期日");
                break;
            default:
                System.out.println("您的输入有误");
                break;
        }
    }
}

注意事项

表达式类型只能是byte、short、int、char 不支持 double、float、long JDK5开始支持枚举 JDK7开始支持String case给出的值不允许重复,且只能是字面量,不能是变量 正常使用switch的时候,不要忘记写break,否则会出现穿透现象

循环结构

for循环(先判断后执行)

格式: for(条件判断语句;初始化语句;条件控制语句) { 循环体语句; }

​编辑

public class Fortest2 {
    public static void main(String[] args) {

//        使用for循环,求出1-100之间的奇数之和。
        int sum = 0;
        for (int i = 1; i < 101; i++) {
            if (i%2!=0){
                sum+=i;
            }
        }
        System.out.println(sum);
    }
}

注意事项:
  1. 循环 { } 中定义的变量, 在每一轮循环结束后, 都会从内存中释放

  2. 循环 ( ) 中定义的变量, 在整个循环结束后, 都会从内存中释放

  3. 循环语句 ( ) 和 { } 之间不要写分号

while循环(先判断后执行)

初始化语句; while(判断语句){ 循环体语句; 控制语句; }

​编辑

package com.itheima.homework;

public class whileTest1 {
    public static void main(String[] args) {
//        使用while循环,实现求1-100之间的偶数之和

        int sum = 0;
        int i = 0;
        while ( i<100){
            if (i%2==0){
                sum+=i;
            }
            i++;
        }

        System.out.println(sum);
    }
}

public class Mount {
    public static void main(String[] args) {
//        需求:世界最高山峰珠穆朗玛峰高度是:8848.86米=884886O毫米,假如我有一张足够大的纸,它的厚度是O.1毫米。
//        请问:该纸张折叠多少次,可以折成珠穆朗玛峰的高度?*/
        int count = 0;

        double paper =0.1;
        while (paper<8848460){
            paper=paper*2;
            count++;
        }
        System.out.println(count);
    }
}

do ...while(先执行后判断)(了解即可)

​编辑

就是不管判断通不通过,都会执行一次

​编辑

break and continue

​编辑

package com.itheima.LoopDemo;

public class breakandcontinue {
    public static void main(String[] args) {
        /*
        break: 跳出, 结束循环或switch语句
     */
        for (int i = 0; i < 5; i++) {
            if (i==3){
                break;
            }
            System.out.println(i+"正在学习");
        }

          /*
        continue: 跳过某次循环, 继续下一次循环
     */
        for (int i = 0; i < 50; i++) {
            if (i==3|| i==11){
                continue;
            }
            System.out.println("老"+i+"s ");
        }

        lo:
        for (int i = 1; i <= 5; i++) {
            for (int j = 1; j <= 5; j++) {
                if (j == 2) {
                    break lo;
                }
                System.out.println("HelloWorld");
            }
        }
    }
}

Random生成随机数

​编辑

猜数字小游戏

package com.itheima.test;

import java.util.Random;
import java.util.Scanner;

public class RandomTest {
    public static void main(String[] args) {
        guessNumber();
    }

    public static void guessNumber() {
        // 1. 召唤Random精灵
        Random r = new Random();
        // 2. 召唤Scanner精灵
        Scanner sc = new Scanner(System.in);
        // 3. 指挥Random产生随机数  int randomNumber
        int randomNumber = r.nextInt(100) + 1;

        while (true) {
            // 4. 录入用户猜的数据  int inputNumber
            System.out.println("请输入: ");
            int inputNumber = sc.nextInt();
            // 5. 比大小, 给出提示
            if (inputNumber > randomNumber) {
                System.out.println("猜大了!");
            } else if (inputNumber < randomNumber) {
                System.out.println("猜小了!");
            } else {
                System.out.println("恭喜, 猜中了!");
                break;
            }
        }
    }
}