java基础学习5(函数,函数重载与数组)

函数:

定义

函数的作用: 为了提高功能代码的复用性。

函数的定义格式:

修饰符  返回值类型  变量名(形式参数){
	函数体
}

函数的特点:
1. 函数是把一个功能的代码 封装起来以达到提高功能 代码的复用性。
2. 函数定义好之后,需要调用才能执行的。
3. 如果一个函数没有返回值类型,那么就使用void关键字表示。

return 关键字

作用:
1. 返回数据给函数的调用者。
2. 函数一旦执行到了return关键字,那么该函数马上结束。 (能结束一个函数)

注意:一个函数的返回值类型 是void,那么也可以出现return关键字,但是return关键字的后面不能有数据。

break关键字与return关键字的区别:
1.break关键字是结束一个循环。
2. return关键字是结束一个函数。

函数的重载

函数的重载:在一个类中出现两个或者两个以上的同名函数,这个称作为函数的重载。

函数重载的作用: 同一个函数名可以出现了不同的函数,以应对不同个数或者不同数据类型的参数。

函数重载的要求:
1. 函数名一致。
2. 形参列表不一致。(形式参数的个数或者是对应的数据类型不一致)
3. 与函数的返回值类型是无关的。

数组

特点

数组的特点:
1. 数组只能存储同一种 数据类型的数据。
2. 数组是会给存储到数组中 的元素分配一个索引值的,索引值从0开始,最大的索引值是length-1;
3. 数组一旦初始化,长度固定。
4. 数组中的元素与元素之间的内存地址是连续的。

一维数组

数组是存储同一种数据类型数据的集合容器。
数组的定义格式:
1.动态初始化:数据类型[] 变量名 = new 数据类型[长度];

分析数组:
左边: int[] arr 声明了一个int类型的的数组变量,变量名为arr。
int : 表示该数组容器只能存储int类型的数据。
[] : 这是一个数组类型。
arr : 变量名.

右边:new int[50]; 创建了一个长度为50的int类型数组对象。
			new : 创建数组对象的关键字。
			int:  表示该数组对象只能存储int类型数据。
			[]: 表示是数组类型。
			50 : 该数组最多能存储50个数据。数组的容量。

2.静态初始化: 数据类型[] 变量名 = {元素1,元素2…};

数组的好处: 对分配到数组对象中每一个数据都分配一个编号(索引值、角标、下标),索引值的范围是从0开始,最大是: 数组长度-1.

数组中最常见的问题:
1. NullPointerException 空指针异常
原因: 引用类型变量没有指向任何对象,而访问了对象的属性或者是调用了对象的方法。
2. ArrayIndexOutOfBoundsException 索引值越界。
原因:访问了不存在的索引值。

数组的排序

public class SortArr {
    public static void main(String[] args) {
        int[] arr = {11,1,9,0,12,34,43,23};
//        int[] newArr = selectionSort(arr);
//        int[] newArr = bubbleSort(arr);

//        for (int value:newArr) {
//            System.out.println(value);
//        }

        Arrays.sort(arr);
        int index = binarySearch(arr,23);
        System.out.println(index);

    }

    /**
     * 选择排序
     *
     * @param arr
     * @return
     */
    public static int[] selectionSort(int[] arr){
        for (int i = 0; i < arr.length; i++){
            for (int j = i+1; j < arr.length; j++){
                if ( arr[i] < arr[j] ){
                    int temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }

        return arr;
    }

    /**
     * 冒泡排序
     *
     * @param arr
     * @return
     */
    public static int[] bubbleSort(int[] arr){
        for (int i = 0; i < arr.length-1; i++){
            for (int j = 0; j < arr.length-1-i; j++){
                if ( arr[j] < arr[j+1] ){
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }

        return arr;
    }


    /**
     * 二分查找法
     *
     * @param arr
     * @param value
     * @return
     */
    public static int binarySearch(int[] arr, int value){
        int start = 0;
        int end = arr.length-1;

        while(start <= end){
            int middleIndex  = (start+end)/2;
            if (value>arr[middleIndex]){
                start = middleIndex+1;
            }else if(value<arr[middleIndex]) {
                end = middleIndex-1;
            }else {
                return middleIndex;
            }
        }

        return -1;
    }
}

二维数组

定义

二维数组 的定义格式:
数据类型[][] 变量名 = new 数据类型[长度1][长度2];
二维数组 的初始化方式:

动态初始化:
	
	数据类型[][] 变量名 = new 数据类型[长度1][长度2];


静态初始化:

	数据类型[][]  变量名 = {{元素1,元素2...},{元素1,元素2...},{元素1,元素2...} ..}
class Demo15{

	public static void main(String[] args) 
	{	
		//定义了一个二维数组
		int[][] arr = new int[3][4];
		arr[1][1] = 100;
		/*
		System.out.println("二维数组的长度:"+ arr.length);  // 3
		System.out.println("二维数组的长度:"+ arr[1].length); //
		*/
		
		System.out.println("数组的元素:"+ arr[1][1]);
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章