Java函数和数组 | Java随笔记

1,689 阅读3分钟

「这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战


相关文章

Java随笔记:Java随笔记


  • 刚下班到家。。。无能为力。。。水,就硬水~
   1、函数
        1)函数的定义:就是定义在类中的具有特定功能的一段独立小程序。函数也被称为方法。
        格式:
            修饰符 返回值类型 函数名 (参数类型 形式参数1 , 参数类型 形式参数2 , .... ){
                执行语句;
                return 返回值;
            } 

        返回值类型:函数运行后的结果的数据类型。
        参数类型:是形式参数的数据类型。
        形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数。
        实际参数:传递给形式参数的具体数值。
        return:用于结束函数。
        返回值:该函数运算后的结果,该结果会返回给调用者。
    注意:返回值是void时,return可以省略。

    范例:
        //对两个数值进行相加,并且返回 和 的值
        public static int plus(int a , int b){
            return a+b;
        }


        2)函数的特点:
            定义函数可以将功能代码封装。
            便于对该功能的复用。
            函数只有被调用才被执行。
            函数的出现提高了代码的复用性。
        注意:函数中只能调用函数,不可以在函数内部定义函数。
            定义函数时,函数的结果应该返回调用者,交由调用者进行处理。


        3)函数的应用:
            栈:先进后出


        4)函数的重载:overload
            概念:
                在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可。
            特点:
                与返回值类型无关,只看参数列表。
            好处:
                方便于阅读,优化了程序设计。
            示例:
                //返回两个整数的和
                public static int add(int x,int y){return x+y;}

                //返回三个整数的和——参数个数不同
                public static int add(int x,int y,int z){return x+y+z;}

                //返回两个小数的和——参数类型不同
                public static double add(double x,double y){return x+y;}
            范例:打印自定义乘法口诀表
                public static void printCFB(int num){
                    for(int x = 1; x <= num; x++){
                        for(int y = 1; y <= x; y++){
                            System.out.print(y+"*"+x+"="+y*x+"\t");
                        }
                        System.out.println();
                    }
                }

                public static void printCFB(){
                    for(int x = 1; x <= 9; x++){
                        for(int y = 1; y <= x; y++){
                            System.out.print(y+"*"+x+"="+y*x+"\t");
                        }
                        System.out.println();
                    }
                }

                解析:
                    传几过来就打印到几的乘法口诀表,不传值打印 9*9 乘法口诀表



    2、数组
        1)定义:
            概念:同一数据类型数据的集合。其实数组就是一个容器。
            好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。
            格式1:
                元素类型[] 数组名 = new 元素类型[元素的个数或者说数组长度];
                示例:int[] arr = new int[5];
            格式2:
                元素类型[] 数组名 = new 元素类型[]{元素,元素,元素,.......};
                示例:int[] arr = new int[]{1,2,3,4};
                    int[] arr = {1,2,3,4};
            

        2)内存分配及特点:
            内存划分:
                寄存器
                本地方法区
                方法区
                栈内存:特点是处理速度快
                    存储都是局部变量(方法内的变量,只在当前方法内有用,如:形式参数,方法内变量,for循环内的参数)。
                    一旦变量离开自己的作用域,其内存就会被自动释放。
                    所有变量都在栈里面。除了静态变量。
                    局部代码块:
                        {
                            int a = 3//限定局部变量的生命周期,运行完立马释放
                        }
                堆内存:
                    存储的是对象。凡是 new 建立的都存在堆中。
                    特点是:
                        每一个实体都有一个首地址值。
                        堆内存中的每一个变量都有默认的初始化值,根据类型的不同而不同。整数是0、小数0.0或者0.0f、oolean falsechar '\u0000'。
                        垃圾回收机制:引用数据类型(相当于c++中的指针)存储在此。当 arr = null; 引用消失。堆中的对象变成’垃圾‘,’垃圾回收机制‘会进行回收。c++是手动清理,使用析构函数进行回收。

        
        3)操作常见问题:
            数组越界:
                ArrayIndexOutOfBoundsException
                当访问到数组中不存在的角标时,就会发生该异常。
            空指针异常:
                NullPointerException
                当引用型变量没有任何实体指向时,还在用其操作实体,就会发生该异常。
            
            
        4)常见操作:
            核心思想:就是对角标的操作
            遍历:循环遍历
            长度:arr.length
            存: arr[0] = 1;
            取: arr[i];

            最值操作:
                最大值或最小值
                int[] arr = {1,2,3,6,5,4};
                int max = 0;//存储最大值
                for(int i = 0; i <= arr.length-1; i++){
                    if(arr[i]>max){
                    max = arr[i]; 
                    }
                }
                System.out.println("该数组最大值为:"+max);
            
            排序和查找:单独写一篇详细解析!
                选择排序:

                冒泡排序:

            
        
        
        5)数组的应用:
            如果数据出现了对应关系,而且对应关系的一方是有序的数字编号,并作为角标使用,这时候要想到使用数组。



        6)数组中的数组:
            二维数组:
                格式1int[][] arr = new int[3][2];
                    定义了名称为arr的二维数组。
                    二维数组中有3个一维数组。
                    每一个一维数组中有2个元素。
                    给第一个一维数组的元素角标写法为:arr[0][1] = 78;
                格式2int[][] arr = new int[3][];
                    二维数组中三个一维数组。
                    每一个一维数组的初始化值为null。
                    可以对这三个一维数组分别进行初始化。
                        arr[0] = new int[3];
                        arr[1] = new int[1];
                        arr[2] = new int[2];
                格式3int[][] arr = {{1,2},{2,3,7},{6,7}};
            遍历:
                for(int i = 0; i < arr.length; i++){
                    for(int j = 0; j < arr[i].length; j++){
                        System.out.print("arr" + arr[i][]j);
                    }
                }


路漫漫其修远兮,吾必将上下求索~

如果你认为i博主写的不错!写作不易,请点赞、关注、评论给博主一个鼓励吧~hahah