函数重载,数组,一些算法

Posted hbxzj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数重载,数组,一些算法相关的知识,希望对你有一定的参考价值。

函数:

函数的作用: 将一个功能代码封装起来,已达到功能代码被复用。

函数 的定义格式:

修饰符 返回值类型 函数名(形参列表){
函数体;

}

 

函数的特点和注意的细节:

1. 函数就是将一个功能代码封装起来,已达到功能代码可以被复用起来的效果。
2. 如果一个函数没有返回值,那么函数 的返回值类型要使用void表示,
3. 函数定义好之后,需要被调用才会执行。 main函数是由jvm调用,不需要我们手动调用的。
4. 一个 函数可以被重复调用多次。
5. 如果一个函数的返回值类型是void,那么也可以出现return关键字,但是return关键字后面不能跟有数据。

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


函数重载的作用: 可以使用一个函数名定义多个函数,以应对不同类型的参数。

函数重载的要求:

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

 

数组: 数组就是存储同一种类型数据 的集合 容器。

数组的特点:

1. 数组只能存储同一种数据类型的数据。
2. 数组一旦初始化,长度固定。
3. 在一个数组中元素与元素之间的内存地址是连续 的。

 

数组的初始化方式:

动态初始化

数据类型[] 变量名 = new 数据类型[长度];


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

 

数组常见的问题:

第一种: 空指针异常。
原因: 引用类型变量没有指向任何的对象,而使用了对象的功能或者是访问了对象的属性。

第二种: 角标越界异常
原因: 访问了不存在的索引值。

 

数组常见的操作:

需求2: 定义一个函数接收一个数组对象,然后把数组中最大值放在第一位。 其他元素不能丢失,顺序无所谓。

class Demo6 
{
    public static void main(String[] args) 
    {
        int[] arr = {13,11,17,4,19};
        //int max = getMax(arr);
        //System.out.println("最大值:"+ max);
        changeMax(arr);

    }

    //需求:把最大值放在第0位
    public static void  changeMax(int[] arr){
        for(int i = 1 ; i<arr.length ; i++){
            if(arr[0]<arr[i]){
                int temp  = arr[i];
                arr[i] = arr[0];
                 arr[0] = temp;
            }
        }
    
        //遍历数组元素,查看效果
        for(int i  = 0 ; i< arr.length ; i++){
            System.out.print(arr[i]+",");
        }
    }



    //需求1: 定义一个函数接收一个数组对象,然后找出数组对象中的最大值返回。 
    public static  int getMax(int[] arr){
        int max = arr[0] ;     //定义一个变量记录最大值
        for(int i = 1; i < arr.length ; i++){
            if(arr[i]>max){  //如果发现有元素比max大,那么max则记录当前的元素。
                max = arr[i];
            }
        }    
        return max;
    }
}

需求:数组元素反转(就是把元素对调)

public class Demo01 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //数组元素反转(就是把元素对调)
        
        int[] arr = {120,119,110,528,520,99,23};
        //{520,528,110,119,120};
        
        //1.算下对调次数
        int count = arr.length / 2;
        
        //2.打印对调的索引
        for(int i = 0; i < count; i++){
            int left = i;//左边索引
            int right = arr.length - i - 1;//右边索引
            System.out.println("左边的索引:" + left + " 右边的索引:" + right);
            
            //把左边的值赋值给临时变量
            int tmp = arr[left];
            //把右边的值赋值给左边
            arr[left] = arr[right];
            //把临时变量赋值给右边
            arr[right] = tmp;
        }
        
        //3.遍历
        for(int i = 0;i < arr.length; i++){
            System.out.println(arr[i]);
        }
        
        
    }

}

需求: 定义一个函数接收一个数组与一个要查找的元素,然后返回元素在数组中的索引值。如果不存在
返回-1表示。


二分法(折半查找法): 折半查找法只适用于有序的数组。

 

 



以上是关于函数重载,数组,一些算法的主要内容,如果未能解决你的问题,请参考以下文章

几个关于js数组方法reduce的经典片段

泛型函数的重载可以对其他重载开放吗?

北大程序设计与算法三 (c++程序设计)运算符重载

web代码片段

C++中赋值运算操作符和=重载有啥区别?

几个关于js数组方法reduce的经典片段