Java学习笔记(二)--函数、函数重载、数组

Java学习笔记(二)–函数、函数重载、数组

1. 函数简述

将需要频繁调用的代码封装成一段独立的程序,可供其他函数调用执行,这种封装形式即可称作函数

public class FunctionDemo1{
    public static void main(String[] args){
        /**
        int a = 4+5;
        System.out.println("a="+a);
        int b = 3+9;
        System.out.println("b="+b);
      */
        add(4,5);//我不想每次都写那么多代码,我就将运算过程封装成一个add()函数来用
    }
    public static int add(int a, int b){
        return a+b; 
    }
}

2. 函数格式

修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,…)
    {
            执行语句;
            return 返回值;
    }

返回值类型: 运行这段程序得出的一个运算结果,结果类型,如果函数没有返回值则用void来表示该函数没有返回值。
函数名:仅仅是一个标识符,可以随意起名字。
形式参数:是一个变量,用于存储调用函数传递进来的实际参数。
实际参数:传递给形式参数的具体数值,调用函数时提供。
返回值:返回给调用者。

3. 函数的特点
- 定义函数可以将功能代码进行封装
- 便于对该功能进行复用
- 函数只有被调用才会被执行
- 函数的出现提高了代码的复用性
- 对于函数没有具体返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一行可以省略不写。
注意:
- 函数中只能调用函数,不可以在函数内部定义函数,为平级关系。
- 定义函数时,函数的结果应该返回给调用者,交由调用者处理。

4. 函数的重载

定义:在同一个类中,有一个以上的同名函数,只要函数的参数列表或参数类型不一样即可,与返回值无关, 这些统称为方法的重载。
增强方法的阅读性,优化了程序设计。

形式

public class HelloJJAVA {
    //main方法//简单理解,就不多做其他举例了
    public static void main(String[] str) {

    }
    //参数为int型
    private static int getNum(int a) {
        return a;
    }
    //参数为两个int型//当然可以是其他数据类型
    private static int getNum(int a, int b) {
        return a + b;
    }
    //参数为三个int型//当然可以是其他数据类型
    private static int getNum(int a, int b, int c) {
        return a + b + c;
    }
}

5. 数组

概念:同一种类型数据的集合。其实数组就是一个容器。

数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。
格式1:
元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
示例:int[] arr = new int[4];
格式2:
元素类型[] 数组名 = new 元素类型[]{元素,元素,……};

int[] arr = new int[]{1,2,3,4};
int[] arr = {1,2,3,4};

5.1 数组遍历

//数组的第一个常见操作.遍历 | 数组长度arr.length
public static void main(String[] args) {
        int[] arr = { 0, 1, 2 };
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
            // System.out.println("arr["+i+"]="+arr[i]); 打印效果 arr[0]=1;
        } 
    }

5.2 数组常见异常

1)数组越界异常

//一数组角标越界异常:,注意:数组的角标从0开始。
public static void main(String[] args) {
        int[] arr = { 1, 2, 3 };//0 1 2
        System.out.println(arr[3]);//3越界
        //java.lang.ArrayIndexOutOfBoundsException
}

2)空指针异常

//二 空指针异常:
public static void main(String[] args) {
        int[] arr = { 1, 2, 3 };
        arr = null;
        System.out.println(arr[1]);
        // java.lang.NullPointerException
    }

5.3 数组常见操作

1)获取最大值

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;
    }

2)直接排序

/**
    选择排序。
    以一个角标的元素和其他元素进行比较。
    在内循环第一次结束,最值出现的头角标位置上。
    */

public static void selectSort(int[] arr){
        for(int x=0; x<arr.length-1; x++){
            for(int y=x+1; y<arr.length; y++){
                if(arr[x]>arr[y]){
                    int temp = arr[x];
                    arr[x] = arr[y];
                    arr[y] = temp;
                }
            }
        }
    }

3)冒泡排序

/**
    冒泡排序。
    比较方式:相邻两个元素进行比较。如果满足条件就进行位置置换。
    原理:内循环结束一次,最值出现在尾角标位置。
    */
    public static void bubbleSort(int[] arr){
        for(int x=0; x<arr.length-1; x++){
            //-x:让每次参与比较的元减-1:避免角标越界。
            for(int y=0; y<arr.length-x-1; y++){
                if(arr[y]>arr[y+1]){
                    int temp = arr[y];
                    arr[y] = arr[y+1];
                    arr[y+1] = temp;
                }
            }
        }
    }

4)二分法

/**
    为了提高查找效率,可使用折半查找的方式,注意:这种查找只对有序的数组有效。
    这种方式也成为二分查找法。
    */
    public static int halfSeach(int[] arr,int key){
        int min,mid,max;
        min = 0;
        max = arr.length-1;
        mid = (max+min)/2;
        while(arr[mid]!=key){
            if(key>arr[mid])
                min = mid + 1;
            else if(key<arr[mid])
                max = mid - 1;

            if(min>max)
                return -1;

            mid = (max+min)/2;
        }
        return mid;
    }

5)数组翻转

/**
    反转其实就是头角标和尾角标的元素进行位置的置换,
    然后在让头角标自增。尾角标自减。
    当头角标<尾角标时,可以进行置换的动作。
    */
    public static void reverseArray(int[] arr)
    {
        for(int start=0,end=arr.length-1; start<end; start++,end--)
        {
            swap(arr,start,end);
        }
    }
    //对数组的元素进行位置的置换。
    public static void swap(int[] arr,int a,int b)
    {
        int temp = arr[a];
        arr[a] = arr[b];
        arr[b] = temp;
    }

5.4 二维数组
遍历: toString() 将数组的元素以字符串的形式返回
排序: sort() 将数组按照升序排列
查找: binarySearch()在指定数组中查找指定元素,返回元素的索引,如果没有找到返回(-插入点-1) 注意:使用查找的功能的时候,数组一定要先排序。

二维数组:实质就是存储是一维数组

数组定义:
数组类型[][] 数组名 = new 数组类型[一维数组的个数][每一个一维数组中元素的个数];

数组的初始化:
静态初始化:
int [][] a = new int[][]{ {1,3,5,9},{4,6,8,10},{1,3,6,4} };
动态初始化:

int[][] a = new int[3][4];
    for(int i = 0; i < a.length; i ++){
        for(int j = 0; j < a[i].length; j ++){
            a[i][j] = ++ value;
        }
    }
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值