【初探Java之路 三 】Java基本语法 二

  • 👏作者简介:大家好,我是小白,一名Java练习生,喜欢唱跳rap篮球

  • 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦

  • 📝联系方式:19177258062,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬👀

目录

1. 引言

 2. 流控制语句

 (1)顺序控制

 (2)条件语句

A. if语句

 B.else if语句

C.else语句

D.switch语句

(3)循环语句

A.for循环

B.while循环

 C.do-while循环

3.注释

(1)单行注释

 (2)多行注释

4. 数组

(1)数组的声明和初始化

 (2)遍历数组

 (3)增强型for循环

5. 二维数组

 (1)二维数组的声明和初始化

 (2)遍历二维数组

6. 方法

(1)方法概述

(2)方法的定义和调用

 A.无参数方法定义和调用

 1.无参数方法定义和调用(掌握)

 2.方法调用过程图解(理解)

 3.无参数方法的练习(应用)

 B.带参数方法定义和调用

 1.带参数方法定义和调用(掌握)

 2.形参和实参(理解)

3.带参数方法练习(应用)

C.带返回值方法的定义和调用

  1.带返回值方法定义和调用(掌握)

 2.带返回值方法练习(应用)

 (3)方法的注意事项

 A.方法的注意事项(掌握)

B.方法的通用格式(掌握)

(4)方法重载

A.方法重载(理解)

 B.方法重载练习(掌握)

 (5)方法的参数传递

 A.方法参数传递基本类型(理解)

 B.方法参数传递引用类型(理解)

 C.数组遍历(应用)

 D.数组最大值(应用)

7. 总结和下一步


1. 引言

        欢迎来到我们的Java之旅第三篇!今天,我们将探索流控制语句、注释、数组、二维数组和方法。这些都是Java编程的基础,掌握它们,你的编程技能将更上一层楼!🚀

 2. 流控制语句

 (1)顺序控制

         顺序控制就是程序会由上而下,由左及右依次逐行执行,就和我们写文章一样。Java中对变量是先定义再使用,以下这种写法在Java中是万万不能通过的,但是有的语言可以:

int num2 = numl + 1;
int num1 = 23;

 (2)条件语句

        条件语句就像人生的岔路口,根据不同的条件选择不同的路径。主要有ifelse ifelseswitch

A. if语句

        当你只有一个条件需要判断时使用。

int age = 18;
if (age >= 18) {
    System.out.println("你是成年人了!");
}

         解释: 这里我们在判断age是否大于或等于18。如果是,就打印出"你是成年人了!"。这是一个简单的“如果……就……”语句。

 B.else if语句

         当你有多个条件需要判断时使用。

int score = 85;
if (score >= 90) {
    System.out.println("优秀!");
} else if (score >= 60) {
    System.out.println("及格!");
} else {
    System.out.println("不及格!");
}

        解释: 这个例子判断一个分数。首先检查是否大于等于90,如果是,打印"优秀!"。否则,检查是否大于等于60,如果是,打印"及格!"。如果都不是,打印"不及格!"。 

C.else语句

         当所有条件都不满足时的兜底选择。

int temperature = 15;
if (temperature > 30) {
    System.out.println("太热了!");
} else if (temperature >= 15) {
    System.out.println("天气很好!");
} else {
    System.out.println("有点冷!");
}

        解释: 这个例子根据温度来打印信息。如果温度超过30度,打印"太热了!";如果在15度以上但不超过30度,打印"天气很好!";否则,打印"有点冷!"。 

D.switch语句

        当有多个具体值需要判断时使用,比多重if-else更清晰。

int day = 3;
switch (day) {
    case 1:
        System.out.println("今天是星期一");
        break;
    case 2:
        System.out.println("今天是星期二");
        break;
    case 3:
        System.out.println("今天是星期三");
        break;
    default:
        System.out.println("今天不是星期一到星期三");
}

         解释: 这里根据day的值来决定打印哪一天。case语句后跟的是具体的值,如果匹配就执行相应的代码。default部分是在没有匹配时执行的代码。

(3)循环语句

        循环语句就像是你每天重复的习惯动作,根据不同条件反复执行某些代码。主要有forwhiledo-while循环。

A.for循环

        当你知道需要循环的次数时使用。

for (int i = 0; i < 5; i++) {
    System.out.println("这是第 " + (i+1) + " 次循环");
}

        解释: 这个for循环从i=0开始,每次循环i增加1,当i小于5时继续循环。每次循环都会打印出当前的循环次数。

B.while循环

        当你不知道具体循环次数,需要根据条件判断时使用。

int count = 0;
while (count < 5) {
    System.out.println("这是第 " + (count+1) + " 次循环");
    count++;
}

        解释: 这个while循环在count小于5时继续执行。每次循环都会打印出当前的循环次数,然后count增加1。 

 C.do-while循环

        至少执行一次循环,即使条件不满足

int number = 0;
do {
    System.out.println("当前数字是 " + number);
    number++;
} while (number < 5);

         解释: 这个do-while循环首先执行一次循环,然后检查条件number < 5,如果条件满足,继续循环。这确保了循环至少执行一次。

3.注释

        注释是代码中的“注解”,用于解释代码的作用,方便自己和他人理解。

(1)单行注释

        //开头。

// 这是一个单行注释
System.out.println("Hello, World!");

         解释: 单行注释以//开头,后面的内容不会被编译器执行。

 (2)多行注释

        /* ... */包裹。

/*
 这是一个多行注释
 可以写多行内容
*/
System.out.println("Hello, World!");

         解释: 多行注释用/*开始,*/结束,可以包含多行注释内容。

 (3)文档注释

        /** ... */包裹,常用于方法和类的说明。

/**
 * 这是一个文档注释
 * @param args 命令行参数
 */
public static void main(String[] args) {
    System.out.println("Hello, World!");
}

         解释: 文档注释用/**开始,*/结束,通常用于生成文档,包含方法、参数等说明。

4. 数组

        数组就像是一个能存放多个相同类型数据的容器,通过索引访问每个元素。

(1)数组的声明和初始化

int[] numbers = new int[5]; // 声明一个包含5个整数的数组
numbers[0] = 10; // 给第一个元素赋值
numbers[1] = 20; // 给第二个元素赋值

// 或者直接初始化
int[] scores = {85, 90, 78, 92, 88};

        解释: numbers是一个能存放5个整数的数组,numbers[0]表示第一个元素。你也可以像scores那样直接初始化数组。 

 (2)遍历数组

for (int i = 0; i < scores.length; i++) {
    System.out.println("第 " + (i+1) + " 个成绩是:" + scores[i]);
}

        解释: 这个for循环遍历数组中的每个元素,并打印它们。scores.length表示数组的长度。 

 (3)增强型for循环

for (int score : scores) {
    System.out.println("成绩:" + score);
}

         解释: 这个增强型for循环简化了遍历数组的操作,score变量直接获取数组中的每个元素。

5. 二维数组

        二维数组就像是一个表格,包含多行多列的数据。

 (1)二维数组的声明和初始化

int[][] matrix = new int[3][4]; // 3行4列的二维数组

// 或者直接初始化
int[][] table = {
    {1, 2, 3, 4},
    {5, 6, 7, 8},
    {9, 10, 11, 12}
};

        解释: matrix是一个包含3行4列的二维数组,table是直接初始化的二维数组。

 (2)遍历二维数组

for (int i = 0; i < table.length; i++) {
    for (int j = 0; j < table[i].length; j++) {
        System.out.print(table[i][j] + " ");
    }
    System.out.println(); // 换行
}

        解释: 这个嵌套的for循环遍历二维数组中的每个元素,并按行打印。table.length表示行数,table[i].length表示第i行的列数。

6. 方法

(1)方法概述

方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集

  • 注意:

    • 方法必须先创建才可以使用,该过程成为方法定义

    • 方法创建后并不是直接可以运行的,需要手动使用后,才执行,该过程成为方法调用

 

(2)方法的定义和调用

 A.无参数方法定义和调用

 1.无参数方法定义和调用(掌握)

 定义格式:

public static void 方法名 (   ) {
	// 方法体;
}

 范例:

public static void method (    ) {
	// 方法体;
}

 调用格式:

方法名();

 范例:

method();

 注意:

          方法必须先定义,后调用,否则程序将报错

 

 2.方法调用过程图解(理解)

         总结:每个方法在被调用执行的时候,都会进入栈内存,并且拥有自己独立的内存空间,方法内部代码调用完毕之后,会从栈内存中弹栈消失。

 

 3.无参数方法的练习(应用)
  • 需求:设计一个方法用于打印两个数中的较大数

  • 思路:

    • ①定义一个方法,用于打印两个数字中的较大数,例如getMax()

    • ②方法中定义两个变量,用于保存两个数字

    • ③使用分支语句分两种情况对两个数字的大小关系进行处理

    • ④在main()方法中调用定义好的方法

  • 代码:

public class MethodTest {
    public static void main(String[] args) {
        //在main()方法中调用定义好的方法
        getMax();
    }

    //定义一个方法,用于打印两个数字中的较大数,例如getMax()
    public static void getMax() {
        //方法中定义两个变量,用于保存两个数字
        int a = 10;
        int b = 20;

        //使用分支语句分两种情况对两个数字的大小关系进行处理
        if(a > b) {
            System.out.println(a);
        } else {
            System.out.println(b);
        }
    }
}

 

 B.带参数方法定义和调用

 1.带参数方法定义和调用(掌握)
  • 定义格式:

        参数:由数据类型和变量名组成 - 数据类型 变量名

        参数范例:int a

public static void 方法名 (参数1) {
	方法体;
}

public static void 方法名 (参数1, 参数2, 参数3...) {
	方法体;
}
  •  范例:
public static void isEvenNumber(int number){
    ...
}
public static void getMax(int num1, int num2){
    ...
}
  •  注意:
    • 方法定义时,参数中的数据类型与变量名都不能缺少,缺少任意一个程序将报错

    • 方法定义时,多个参数之间使用逗号( ,)分隔

  •  调用格式:
方法名(参数);

方法名(参数1,参数2);
  •  范例:
isEvenNumber(10);

getMax(10,20);

         注意:方法调用时,参数的数量与类型必须与方法定义中的设置相匹配,否则程序将报错

 

 2.形参和实参(理解)
  1. 形参:方法定义中的参数
    1. 等同于变量定义格式,例如:int number
  2. 实参:方法调用中的参数
    1. 等同于使用变量或常量,例如: 10 number

 

3.带参数方法练习(应用)
  • 需求:设计一个方法用于打印两个数中的较大数,数据来自于方法参数 }

  • 思路:

    • ①定义一个方法,用于打印两个数字中的较大数,例如getMax()

    • ②为方法定义两个参数,用于接收两个数字

    • ③使用分支语句分两种情况对两个数字的大小关系进行处理

    • ④在main()方法中调用定义好的方法(使用常量)

    • ⑤在main()方法中调用定义好的方法(使用变量)

  • 代码:

public class MethodTest {
    public static void main(String[] args) {
        //在main()方法中调用定义好的方法(使用常量)
        getMax(10,20);
        //调用方法的时候,人家要几个,你就给几个,人家要什么类型的,你就给什么类型的
        //getMax(30);
        //getMax(10.0,20.0);

        //在main()方法中调用定义好的方法(使用变量)
        int a = 10;
        int b = 20;
        getMax(a, b);
    }

    //定义一个方法,用于打印两个数字中的较大数,例如getMax()
    //为方法定义两个参数,用于接收两个数字
    public static void getMax(int a, int b) {
        //使用分支语句分两种情况对两个数字的大小关系进行处理
        if(a > b) {
            System.out.println(a);
        } else {
            System.out.println(b);
        }
    }
}

 

C.带返回值方法的定义和调用

  1.带返回值方法定义和调用(掌握)
  •  定义格式
public static 数据类型 方法名 ( 参数 ) { 
	return 数据 ;
}
  • 范例
public static boolean isEvenNumber( int number ) {           
	return true ;
}
public static int getMax( int a, int b ) {
	return  100 ;
}
  • 注意:方法定义时return后面的返回值与方法定义上的数据类型要匹配,否则程序将报错
  • 调用格式
方法名 ( 参数 ) ;
数据类型 变量名 = 方法名 ( 参数 ) ;
  • 范例
isEvenNumber ( 5 ) ;
boolean  flag =  isEvenNumber ( 5 ); 
  • 注意:方法的返回值通常会使用变量接收,否则该返回值将无意义

 

 2.带返回值方法练习(应用)
  • 需求:设计一个方法可以获取两个数的较大值,数据来自于参数

  • 思路:

    • ①定义一个方法,用于获取两个数字中的较大数

    • ②使用分支语句分两种情况对两个数字的大小关系进行处理

    • ③根据题设分别设置两种情况下对应的返回结果

    • ④在main()方法中调用定义好的方法并使用变量保存

    • ⑤在main()方法中调用定义好的方法并直接打印结果

  • 代码:

public class MethodTest {
    public static void main(String[] args) {
        //在main()方法中调用定义好的方法并使用变量保存
        int result = getMax(10,20);
        System.out.println(result);

        //在main()方法中调用定义好的方法并直接打印结果
        System.out.println(getMax(10,20));
    }

    //定义一个方法,用于获取两个数字中的较大数
    public static int getMax(int a, int b) {
        //使用分支语句分两种情况对两个数字的大小关系进行处理
        //根据题设分别设置两种情况下对应的返回结果
        if(a > b) {
            return a;
        } else {
            return b;
        }
    }
}

 

 (3)方法的注意事项

 A.方法的注意事项(掌握)

  • 方法不能嵌套定义
    • 示例代码:

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

    }

    public static void methodOne() {
		public static void methodTwo() {
       		// 这里会引发编译错误!!!
    	}
    }
}
  •  void表示无返回值,可以省略return,也可以单独的书写return,后面不加数据
    • 示例代码:

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

    }
    public static void methodTwo() {
        //return 100; 编译错误,因为没有具体返回值类型
        return;	
        //System.out.println(100); return语句后面不能跟数据或代码
    }
}

 

B.方法的通用格式(掌握)

  • 格式:

public static 返回值类型 方法名(参数) {
   方法体; 
   return 数据 ;
}
  • 解释:

    • public static 修饰符,目前先记住这个格式

      返回值类型 方法操作完毕之后返回的数据的数据类型

      如果方法操作完毕,没有数据返回,这里写void,而且方法体中一般不写return

      方法名 调用方法时候使用的标识

      参数 由数据类型和变量名组成,多个参数之间用逗号隔开

      方法体 完成功能的代码块

      return 如果方法操作完毕,有数据返回,用于把数据返回给调用者

  • 定义方法时,要做到两个明确

    • 明确返回值类型:主要是明确方法操作完毕之后是否有数据返回,如果没有,写void;如果有,写对应的数据类型

    • 明确参数:主要是明确参数的类型和数量

  • 调用方法时的注意:

    • void类型的方法,直接调用即可

    • 非void类型的方法,推荐用变量接收调用

 

 

(4)方法重载

A.方法重载(理解)

  • 方法重载概念

    方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载

    • 多个方法在同一个类中

    • 多个方法具有相同的方法名

    • 多个方法的参数不相同,类型不同或者数量不同

  • 注意:

    • 重载仅对应方法的定义,与方法的调用无关,调用方式参照标准格式

    • 重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关,换句话说不能通过返回值来判定两个方法是否相互构成重载

  • 正确范例:

public class MethodDemo {
	public static void fn(int a) {
    	//方法体
    }
    public static int fn(double a) {
    	//方法体
    }
}

public class MethodDemo {
	public static float fn(int a) {
    	//方法体
    }
    public static int fn(int a , int b) {
    	//方法体
    }
}
  •  错误范例:
public class MethodDemo {
	public static void fn(int a) {
    	//方法体
    }
    public static int fn(int a) { 	/*错误原因:重载与返回值无关*/
    	//方法体
    }
}

public class MethodDemo01 {
    public static void fn(int a) {
        //方法体
    }
} 
public class MethodDemo02 {
    public static int fn(double a) { /*错误原因:这是两个类的两个fn方法*/
        //方法体
    }
}

 

 B.方法重载练习(掌握)

  • 需求:使用方法重载的思想,设计比较两个整数是否相同的方法,兼容全整数类型(byte,short,int,long)

  • 思路:

    • ①定义比较两个数字的是否相同的方法compare()方法,参数选择两个int型参数

    • ②定义对应的重载方法,变更对应的参数类型,参数变更为两个long型参数

    • ③定义所有的重载方法,两个byte类型与两个short类型参数

    • ④完成方法的调用,测试运行结果

  • 代码:

public class MethodTest {
    public static void main(String[] args) {
        //调用方法
        System.out.println(compare(10, 20));
        System.out.println(compare((byte) 10, (byte) 20));
        System.out.println(compare((short) 10, (short) 20));
        System.out.println(compare(10L, 20L));
    }

    //int
    public static boolean compare(int a, int b) {
        System.out.println("int");
        return a == b;
    }

    //byte
    public static boolean compare(byte a, byte b) {
        System.out.println("byte");
        return a == b;
    }

    //short
    public static boolean compare(short a, short b) {
        System.out.println("short");
        return a == b;
    }

    //long
    public static boolean compare(long a, long b) {
        System.out.println("long");
        return a == b;
    }

}

 

 (5)方法的参数传递

 A.方法参数传递基本类型(理解)

  •  测试代码:
public class ArgsDemo01 {
    public static void main(String[] args) {
        int number = 100;
        System.out.println("调用change方法前:" + number);
        change(number);
        System.out.println("调用change方法后:" + number);
    }

    public static void change(int number) {
        number = 200;
    }
}
  • 结论:

    • 基本数据类型的参数,形式参数的改变,不影响实际参数

  • 结论依据:

    • 每个方法在栈内存中,都会有独立的栈空间,方法运行结束后就会弹栈消失

 B.方法参数传递引用类型(理解)

  •  测试代码:
public class ArgsDemo02 {
    public static void main(String[] args) {
        int[] arr = {10, 20, 30};
        System.out.println("调用change方法前:" + arr[1]);
        change(arr);
        System.out.println("调用change方法后:" + arr[1]);
    }

    public static void change(int[] arr) {
        arr[1] = 200;
    }
}
  • 结论:

    • 对于引用类型的参数,形式参数的改变,影响实际参数的值

  • 结论依据:

    • 引用数据类型的传参,传入的是地址值,内存中会造成两个引用指向同一个内存的效果,所以即使方法弹栈,堆内存中的数据也已经是改变后的结果

 C.数组遍历(应用)

  • 需求:设计一个方法用于数组遍历,要求遍历的结果是在一行上的。例如:[11, 22, 33, 44, 55]

  • 思路:

    • ①因为要求结果在一行上输出,所以这里需要在学习一个新的输出语句System.out.print(“内容”);

      System.out.println(“内容”); 输出内容并换行

      System.out.print(“内容”); 输出内容不换行

      System.out.println(); 起到换行的作用

    • ②定义一个数组,用静态初始化完成数组元素初始化

    • ③定义一个方法,用数组遍历通用格式对数组进行遍历

    • ④用新的输出语句修改遍历操作

    • ⑤调用遍历方法

  • 代码:

public class MethodTest01 {
    public static void main(String[] args) {
        //定义一个数组,用静态初始化完成数组元素初始化
        int[] arr = {11, 22, 33, 44, 55};

        //调用方法
        printArray(arr);
    }

    //定义一个方法,用数组遍历通用格式对数组进行遍历
    /*
        两个明确:
            返回值类型:void
            参数:int[] arr
     */
    public static void printArray(int[] arr) {
        System.out.print("[");
        for(int x=0; x<arr.length; x++) {
            if(x == arr.length-1) {
                System.out.print(arr[x]);
            } else {
                System.out.print(arr[x]+", ");
            }
        }
        System.out.println("]");
    }
}

 D.数组最大值(应用)

  • 需求:设计一个方法用于获取数组中元素的最大值

  • 思路:

    • ①定义一个数组,用静态初始化完成数组元素初始化

    • ②定义一个方法,用来获取数组中的最大值,最值的认知和讲解我们在数组中已经讲解过了

    • ③调用获取最大值方法,用变量接收返回结果

    • ④把结果输出在控制台

  • 代码:

public class MethodTest02 {
    public static void main(String[] args) {
        //定义一个数组,用静态初始化完成数组元素初始化
        int[] arr = {12, 45, 98, 73, 60};

        //调用获取最大值方法,用变量接收返回结果
        int number = getMax(arr);

        //把结果输出在控制台
        System.out.println("number:" + number);
    }

    //定义一个方法,用来获取数组中的最大值
    /*
        两个明确:
            返回值类型:int
            参数:int[] arr
     */
    public static int getMax(int[] arr) {
        int max = arr[0];

        for(int x=1; x<arr.length; x++) {
            if(arr[x] > max) {
                max = arr[x];
            }
        }
        return max;
    }
}

 

7. 总结和下一步

        今天,我们学习了Java中的流控制语句、注释、数组、二维数组和静态方法。掌握这些知识,你已经可以编写更复杂的Java程序了!下一篇文章,我们将深入探讨Java的面向对象编程(OOP)概念,如类和对象、继承、多态等。准备好了吗?继续加油!🚀

        希望你享受今天的学习过程,继续保持这种好奇心和热情。Happy coding! 😄🚀

        如果你能看到这,那博主必须要给你一个大大的鼓励,谢谢你的支持!喜欢的可以点个关注

我们下期再见。

  • 33
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值