Java应用基础 Day2

目录

方法

方法的定义和调用

方法的重载

代码重构

数组

定义数组

访问数组

数组元素个数

演示

数组遍历

Debug

for循环

可变参数

二维数组


我是一个java小白,正处于学习阶段。

欢迎各位将文章有问题的地方在评论区提出指正!!!


方法

方法的定义和调用

方法(Method):是程序中最基本的功能单位,是用来实现功能的代码块。一个程序往往有很多的方法组成。

参数-方法名-返回值

写方法时候思考一下三点:

1)返回值是否需要,是什么

2)参数是什么?

3)方法名是什么?

案例:用户输入月份,展示对应的季节

java 复制代码
package p04;

import java.util.Scanner;

public class BurnRateDemo {
    //无返回值
    public static void monthToSeason(int month){
        String season = switch (month){
            case 1,2,3 -> "春天";
            case 4,5,6 -> "夏天";
            case 7,8,9 -> "秋天";
            default -> "冬天";
        };
        System.out.println(season);
    }

//不用对象接收返回值,直接调用方法
    public static void main(String[] args) {
        monthToSeason(5);

    }



}

案例:定义一个方法,传入任意整数,计算该数字的阶乘并返回

java 复制代码
package p04;

import java.util.Scanner;

public class BurnRateDemo {
    public static int jieCheng(int n){
        int i = 1;
        int result = 1;
        while(i <= n){
            result *= i;
            i++;
        }
        return result;

    }
    public static void main(String[] args) {
//        int r = jieCheng(5);
//        System.out.println(r);
        System.out.println(jieCheng(5));
    }
}
   

方法的重载

方法重载是指在同一个类中,定义多个同名方法,但是这些方法的参数列表不同(参数类型个数顺序)不同。

什么时候使用?

看如下两个案例

案例

需求:定义几个方法,满足下列要求 求两个整数和 求三个整数和 求两个浮点数和。

需求:定义几个方法,模拟消息发送功能 方法一:基于手机号发送,需要知道手机号和消息内容 方法二:基于邮箱发送,需要知道邮箱地址、邮件主题、邮件内容。


代码重构

重构:通过改变代码结构提高代码的可读性和可维护性,但是不改变代码的功能。

代码的规范:

优雅的命名:自定义名称尽量使用能表达其作用的英文单词。

类名:使用名词,每个单词首字母大写,其它字母小写。比如 MathTeacher

变量名:使用名词,除第一个单词外,单词首字母大写,其它字母小写。比如:firstName

方法名:使用动词,除第一个单词外,单词首字母大写,其它字母小写。比如:haveLanuch

简短的方法:方法中代码不易过长,通常不超过20行。

代码复用:尽量避免写相同或者是相似的代码,把他们抽取为方法。


数组

数组是一种特殊的引用数据类型 ,可以存储多个相同类型 数据,在内存中是一片连续空间。数组的类型是动态的,与存储的数据类型有关。

例如数组存储int类型数据,数组的类型就是int[]

定义数组

java 复制代码
String[] foods = {"白灼虾", "煮鸡蛋", "清蒸鲈鱼"};
java 复制代码
int[] array = new int[5]

之所以数组从0开始计数,是由于当将第一个地址带入公式时等于0,少一次减法运算,我们可以将(n-1)看成索引。

访问数组

1)给数组赋值

java 复制代码
array[1] = 2;

2)拿出数组中的值

java 复制代码
System.out.print(array[1]);

数组元素个数

java 复制代码
int len = array.length;

演示

java 复制代码
public class BurnRateDemo {


    public static void main(String[] args) {
        String[] person = new String[3];
        person[0] = "张三";
        person[1] = "李四";
        person[2] = "王五";
        System.out.println(person[0]);
        System.out.println(person[1]);
        System.out.println(person[2]);
        //注意这样会导致数组越界
         //System.out.println(person[3]);
    }
}

数组遍历

遍历(Traversal):按照一定的顺序依次访问某个多元素数据集中的数据。

1)定义变量,初始为0,作为数组索引

2)每次访问完数组元素,索引自增1

3)判断索引是否超过数组边界

java 复制代码
int[] arr = {1, 2, 3, 4, 5};
int i = 0; // 1.定义变量,初始为0,作为数组索引
while (i < arr.length) { // 3.判断索引是否超过数组边界
    System.out.println(arr[i]);   
    i++;// 2.每次访问完数组元素,索引自增1

}

案例

需求:定义一个方法,接收任意int数组,用while循环遍历并打印

需求:定义一个方法,接收任意int数组,用while循环遍历并将数组元素拼接为[1, 2, 3]格式并返回


Debug

到时候我会单独做一期有关debug的文章


for循环

1)for循环与while循环功能类似,但语法更简洁,紧凑,更适合用来遍历数据

2)while循环存在人为的干预,for执行顺讯严格,循环全自动

3)通常不确定循环次数用while循环;确定循环次数或者是遍历多元素的数据集时用for循环

java 复制代码
for (0-初始化变量 ; 1-循环判断条件; 3-更新变量)  {	
    2-循环执行的代码;
}
//数字是执行的顺序
java 复制代码
     for(int i = 0; i < arr.length; i++){
            System.out.println(arr[i]);
        }

for循环的快捷方式

java 复制代码
arr.fori

可变参数

当一个方法的参数类型确定,但是参数个数不确定,可以使用可变参数

java 复制代码
返回值 方法名(数据类型 ... 参数名){
}
java 复制代码
int add(int ... nums) {
}

调用可变参数方法时,可以传入0个或N个参数:

java 复制代码
int sum = add();
sum = add(10, 20);
sum = add(10, 20, 30, 40);

可变参数本质是一个数组,可以用数组的方式来获取可变参数中的每一个值

java 复制代码
public static int add(int ... nums) {
    int sum = 0;
    for (int i = 0; i < nums.length; i++) {
        sum += nums[i];
    }
    return sum;
}

二维数组

如果一个数组的元素类型是一维数组,那么这个数组就是二维数组。

java 复制代码
int[] arr = {1,3,5,7,9};
int[][] arr = {1,3,5,7,9},{2,3,6,8,10};

int[][] arr = {1,3,5,7,9},

{2,3,6,8,10};

java 复制代码
//第一行第二列
arr2[1][3]  
//取值为8

注:此图片来自于黑马程序员

相关推荐
开源之眼6 小时前
《github star 加星 Taimili.com 艾米莉 》为什么Java里面,Service 层不直接返回 Result 对象?
java·后端·github
Maori3167 小时前
放弃 SDKMAN!在 Garuda Linux + Fish 环境下的优雅 Java 管理指南
java
用户908324602737 小时前
Spring AI 1.1.2 + Neo4j:用知识图谱增强 RAG 检索(上篇:图谱构建)
java·spring boot
小王和八蛋7 小时前
DecimalFormat 与 BigDecimal
java·后端
beata8 小时前
Java基础-16:Java内置锁的四种状态及其转换机制详解-从无锁到重量级锁的进化与优化指南
java·后端
IT探险家8 小时前
你的第一个 Java 程序就翻车?HelloWorld 的 8 个隐藏陷阱
java
随风飘的云8 小时前
SpringBoot 的自动配置原理
java
SimonKing8 小时前
觅得又一款轻量级数据库管理工具:GoNavi
java·后端·程序员
Seven979 小时前
BIO详解:解锁阻塞IO的使用方式
java
oak隔壁找我19 小时前
JVM常用调优参数
java·后端