Java基础(方法和数组)

1.方法
1.1 方法基本格式
权限修饰符 是否静态 返回值类型 方法名 (形式参数列表) {方法体}
核心:形式参数列表, 返回值类型
1.2 方法分类
// 有参数有返回值 (重点)
publicstaticintadd (intnum1 , intnum2){
    returnnum1+num2;
}
// 无参数无返回值
publicstaticvoidtest () {
    System.out.println('无参数无返回值');
}
// 无参数有返回值
publicstaticintgiveMeNumber() {
    return666;
}
// 有参数无返回值
publicstaticvoidprintIntValue(intnum) {
    System.out.println("用户提供的数据:"+num);
}
1.3方法案例
1.3.1封装一个方法,返回两个整数里较大的数
    /**
     * 返回调用者提供两个 int 类型数据章较大那个
     * @param num1 用户提供的 int 类型数据
     * @param num2 用户提供的 int 类型数据
     * @return 返回较大的数
     */
    privatestaticintmaxOfNum(intnum1, intnum2) {
        returnnum1>num2?num1 : num2;
    }
1.3.2封装一个方法,返回两个浮点数里较小的数
    /**
     * 返回调用者提供两个 double 类型数据章较小那个
     * @param num1 用户提供的 double 类型数据
     * @param num2 用户提供的 double 类型数据
     * @return 返回较小的数
     */
    privatestaticdoubleminOfNum(doublenum1, doublenum2){
        returnnum1<num2?num1 : num2;
    }
1.3.3封装一个方法,判断一个字符是否是大写字母
    /**
     * 判断字符是否是大写字母
     * @param ch 需要进行判断的 char 类型字符
     * @return 是大写字母返回 true,不是返回 false
     */
    privatestaticbooleanisMyUpper(charch) {
        returnch>='A'&&ch<='Z';
    }
1.3.4封装一个方法,判断一个字符是否是数字字符
   /**
     * 判断字符是否是数字字符
     * @param ch 需要进行判断的 char 类型字符
     * @return 是数字字符返回 true,不是返回 false
     */
    publicstaticbooleanisMyNumber (charch){
        returnch>='0'&&ch<='9';
    }
1.3.5封装一个方法,传入一个字符,如果是大写则转化为小写,否则保持不变
    /**
     * 传入字符是大写字母则转换为小写字母,不是则不变
     * @param ch 用户提供的 char 类型字符
     * @return 返回 char 类型字符
     */
    publicstaticchartoMyLower (charch){
        if(ch>='A'&&ch<='Z'){
            ch+='a'-'A';
        }
        returnch;
    }
1.3.6封装一个方法,实现正整数逆序
    /**
     * 实现逆序操作
     * @param number 用户提供的想要逆序的 int 类型数据
     */
    publicstaticvoidreverse(intnumber) {
        while (number>0 ){
            System.out.print(number%10);
            number/=10;
        }
    }
1.3.7封装一个方法,判断输入年份是否是闰年
    /**
     * 判断是否是闰年
     * @param year 用户输入的年份
     * @return 是闰年返回 true,否则返回 false
     */
    publicstaticbooleanisLeap (intyear) {
        returnyear%4==0&&year%100!=0||year%400==0;
    }
2.数组
2.1 数组解决的问题和尚未解决的问题

数组作为一个最为基础的整体性数据,可用以存储

1. 相同数据

2. 多个数据元素

面临其他问题

1. 数据类型支持不友好

2. 数据容量不可变

3. 数值配套方法少

2.2 数组的基本格式
数据类型[] 数组名 = new 数据类型[容量]

数据类型

明确当前数组存储数据类型,严格要求数据类型一致化

[]

表示当前创建的为数组类型

数组名

1. 操作数组使用的名称,存储当前数组占用内存空间首地址

2. 数组名为引用类型

new

1. 根据当前数据所需,在内存的【堆区】申请所需的内存空间

2. 对当前内存空间中的数据进行擦除操作

数据类型

前后一致,严格遵守数据类型一致化要求

[容量]

1. 在 int 范围内,最大值是 Integer.Max_VALUE - 8

2. 数据容量一旦确定,无法修改

2.3数组案例
2.3.1指定数组最大值下标位置
    /**
     * 获取指定数组中最大值下标位置
     * @param arr 目标 int 类型数组
     * @return 数组中最大值下标位置
     */
    private static int getMaxValueIndex(int[] arr) {
        // 假设最大值在下标为 0 的位置
        int max = 0;
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] > arr[max]) {
                max = i;
            }
        }
        return max;
    }
2.3.2指定数组最小值下标位置
    /**
     * 找出数组中最小值下标位置
     * @param arr 目标 int 类型数组
     * @return 最小值下标位置
     */
    private static int getMinIndex(int[] arr) {
        // 假设下标为 0 位置是最小值
        int min = 0;
        for (int i = 1; i < arr.length; i++) {
            if(arr[i] < arr[min]){
                min = i;
            }
        }
        return min;
    }
2.3.3指定数组最大值元素个数
      /**
     * 找出数组中最大值数据个数
     * @param arr 指定查询数据的 int 类型数组
     * @return 最大值数据个数
     */
    private static int getMaxValueCount(int[] arr) {
        // count 计数器
        int count = 1;
        // 假设下标为 0 为最大值
        int max = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] > max) {
                // 发现当前 max 存储数据不是最大值
                // max 存取较大值,同时 count 重新赋值为 1
                max = arr[i];
                count = 1;
            }else if(max == arr[i]) {
                // max 和当前数组中下标为 i 的元素一致,count 计数
                count ++;
            }
        }
        return count;
    }
2.3.4找出指定元素在在指定数组中第一次出现的下标位置
    /**
     * 在目标数组中,找到数据的第一次下标位置
     * @param arr 用户指定的 int 类型目标数组
     * @param num 用户指定的 int 类型目标数据
     * @return 如果目标存在,返回值大于等于 0,否则返回值为 -1
     */
    private static int indexOf(int[] arr, int num) {
        /*
        index 初始化为 -1
        如果找到目标元素,将目标元素下标赋值给 index ,index 大于等于 0
        如果目标数据未找到, index == -1
         */
        int index = -1;
        for (int i = 0; i < arr.length; i++) {
            if  (num == arr[i]) {
                index = i;
                break;
            }
        }
        return index;
    }
2.3.5找出指定元素在在指定数组中最后一次出现的下标位置
    /**
     * 在目标数组中找到指定数据最后一次出现的下标位置
     * @param arr 用户指定的 int 类型目标数组
     * @param num 用户指定的 int 类型目标数据
     * @return 如果目标数据存在,返回值大于等于 0 ,否则返回值为 -1
     */
    private static int lastIndexOf(int[] arr, int num) {
        int index = -1;
        for (int i = arr.length -1; i >= 0; i--) {
            if (num == arr[i]) {
                index = i;
                break;
            }
        }
        return index;
    }
2.3.6指定数组内容逆序
    /**
     * 数组内容逆序
     * @param arr 进行逆序操作的数组
     */
    private static void reverse(int[] arr) {
        for (int i = 0; i < arr.length / 2; i++) {
            int temp = arr[i];
            arr[i] = arr[arr.length - i - 1];
            arr[arr.length - i - 1] = temp;
        }
        System.out.println(Arrays.toString(arr));
    }
2.3.7在指定下标位置添加元素
    /**
     * 指定下标位置,添加目标数据
     * @param arr 添加数据的目标数组
     * @param index 指定下标位置
     * @param number 添加数据内容
     * @return 添加操作成功返回 true ,否则返回 false
     */
    private static boolean add(int[] arr, int index, int number) {
        // 判断输入下标是否合法
        if(index < 0 || index > arr.length - 1){
            return false;
        }
        //需要利用循环进行数组元素移动
        for (int i = arr.length - 1; i > index; i--) {
            arr[i] = arr[i - 1];
        }
        // 指定下标位置添加目标元素
        arr[index] = number;
        return true;
    }
2.3.8删除数组中指定下标元素内容
    /**
     * 指定数组中,删除指定下标元素,返回值是被删除的元素数据内容
     * @param arr 删除操作的源数据数组
     * @param index 指定删除的下标位置
     * @return 被删除的数据内容
     */
    private static int remove(int[] arr, int index) {
        if(index < 0 || index > arr.length -1) {
            throw new IllegalArgumentException("输入数据不合法");
        }
        // 【核心】使用一个变量,存储被删除数据内容,以防用户误删数据
        int temp = arr[index];
        // 利用循环移动数据,进行删除才操作,从删除数据下标位置开始,到最后一个有效元素结束
        for (int i = index; i < arr.length - 1; i++) {
            arr[i] = arr[i + 1];
        }
        // 原本数组最后一个有效元素位置默认赋值为 0
        arr[arr.length - 1] = 0;
        return temp;
    }
2.3.9选择排序算法实现
    /**
     * 针对 int 类型数组选择排序算法实现
     * @param arr int[] 类型数组
     */
    private static void selectSort(int[] arr) {
        // 完成排序算法,执行的核心模块次数是当前数组有效元素个数
        for (int i = 0; i < arr.length - 1; i++) {
            // 按照排序规则要求,找极值对应的下标位置
            int index = i;
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[index] < arr[j]) {
                    index = j;
                }
            }
            // 进行数据交换操作,和目标存储极值对应的下标数据进行交换
            if (index != i) {
                int temp = arr[index];
                arr[index] = arr[i];
                arr[i] = temp;
            }
        }
    }
2.3.10冒泡排序算法实现
    /**
     * 针对 int[] 类型数组冒泡排序算法实现
     * @param arr int[] 类型数组
     */
    private static void bobbleSort(int[] arr) {
        for (int i = 0; i < arr.length -1; i++) {
            for (int j = 0; j < arr.length - i - 1; j++) {
                if (arr[j] > arr[j+1]) {
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值