A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xicheng26 中级黑马   /  2015-5-14 18:22  /  416 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

01、函数的概述
        函数:
                定义在类中,具有特定功能的一段小程序。

        格式:
                修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,.....)
                {
                        执行语句;
                        return返回值;
                }
        解释:
                修饰符:public  static
                返回值类型:这段程序最终返回的结果的数据类型。
                函数名:其实就是函数的名称,方便调用。
                参数:
                        参数类型:其实就是数据类型。
                                形式参数:就是接收实际参数的变量。
                                实际参数:实际参与运算的那个变量。
                执行语句:
                        就是按照正常的逻辑完成的功能代码。
                返回值:
                        就是程序的结果。
                return  返回值:
                        将来在哪里调用这个函数,那么,return就把结果返回到哪里。

02、函数的定义和调用
        main是主函数,默认被jvm调用了
        写一个函数,用于求两个int类型的数的和。
        注意:
                A:函数与函数是平级关系,不能嵌套定义。
                B:函数只有被调用才执行。
        函数的调用:具有明确返回值的函数的调用。
                A:单独调用。一般是没有意义的。
                        事例:sum(x,y);
                B:输出调用。因为,我可能还需要对结果进行计算。所以,不够好。
                        事例: System.out.println(sum(x,y));
                C:赋值调用。推荐方式。
                   首先看函数,返回值类型是什么,我们就应该用什么类型接收。
                        事例:        int sum = sum(x,y);
                                        System.out.println(sum);

03、求两个数中的最大值
        用函数来做:
                A:先用if--else来做。
                B:用条件运算符来做。
        总结下:
                那个是形参,那个是实参。

04、函数的调用过程图解
        在函数中定义的变量,和实际传递过来的没有关系。
        A:在main函数中,调用方法sum(x,y);。
        B:然后走到sum函数中,将实参传递过来。
        C:然后执行函数中的语句。
        D:将结果return到main函数中调用sum()函数的地方。
       
05、函数是什么结束的
        函数是怎么开始的?
                被JVM虚拟机调用,调到main()函数中,从而来被执行。
        函数是怎么结束的?
                函数其实是有关键字return让他结束的。
                注意:
                        void类型的函数,其实最后一行,默认有一个return;
                       
06、比较两个int类型的数据是否相等
        需求:比较两个int类型的数据是否相等
        思路:
                A:返回值类型:boolean
                B:参数列表:int a,int b
        Demo:
                方式1:用if--else来做
                方式2:用条件运算符来做
                方式3:直接 return a==b

07、输出一个长方形的函数
        需求:根据给定的行数和列数输出一个*组成的长方形。
        思路:
                返回值类型:void
                参数列表:int row,int col

08、函数重载
        在很多时候,我们的功能可能是相同的,但是,参数可能不同,
        如果起不同的名字,当然是可以的。
        但是,又由于函数的名字 -- 见名知意。
        所以,很多时候,我们必须用一个有意义的名字。
        在这种情况下,Java就提供了一种机制:函数重载。
        特点:
                函数名相同,参数列表不同(个数,对应的数据类型)。
                与返回值类型无关。
        注意:
                永远建议,写的什么类型的形式参数,你就应该用什么类型的实际参数调用。
                如果实际类型是小的,形式类型是大的,可以这样写,程序不报错。反之不行。

09、数组的概述
        数据类型:
                基本类型:4类8种
                引用类型:类,接口,数组
        数组:就是存储多个同一种数据类型元素的容器。
        好处:
                可以自动给数组中的元素从0开始编号(索引),方便操作这些数据。
        格式:
                元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
                事例: int[] arr = new int[10];
                        左边:
                                int:表示数据的类型。
                                []:表示这是一个数组。
                                arr:数组的名字。

                        右边:
                                new:申请内存空间。
                                int:表示数据的类型。
                                []:表示这是一个数组。
                                10:数组的长度。
        我要获取第一个元素,怎么办?
        通过索引获取,格式:数组名[索引]
               
10、数组的内存图解
        Java中对内存分五块:
                栈:变量,或者方法的执行
                堆:所有new出来的
                方法区:方法,String常量池,静态区(面向对象讲)
                本地方法区:跟系统相关的方法。
                寄存器:由CPU执行。
        堆:new建立的实例都存放在堆内存中
                1、每一个new出来的东西都有地址值。
                        本身是一个十进制,显示的时候是一个16进制的数据。
                2、每一个实例中的内存都有默认值。
                        整数:0,浮点数:0.0;
                        字符型:'\u000',布尔型:false
                3、会在不确定的时间内被垃圾回收器回收。
        栈:当数据使用完毕(超出了它的作用域),它就自动从内存中消失。
                局部变量:
                        定义在方法中或者方法声明上的形式参数都叫局部变量。

11、数组的定义方式
        方式1:
                数据类型[] 变量名 = new 数据类型[个数或者长度];
        方式2:
                数据类型[] 变量名 = new 数据类型[]{元素1,元素2,元素3....};
        方式3:
                数据类型[] 变量名 = {元素1,元素2,元素3....};

12、数组的常见问题
        先用Demo演示,后画图做讲解。
        A:数组越界异常。你访问了不存在的索引。
                ArrayIndexOutOfBoundsException
        B:空指针异常。一个实例(对象)已经不存在了,你还去访问它的内容。
                NullPointerException
                把一个null赋值给一个引用类型数据,其实就是让这个引用类型的变量,不再指向堆内存的数据,这样的话,原本指向的内容就是垃圾了。
       
13、多个数组指向同一个实例
        先用Demo演示,后画图做讲解。
        两个引用变量指向同一个堆内存空间。
        int[] arr = {1,2,3};
        arr[0] = 1;
        arr[1] = 2;
        arr[2] = 3;
        int[] arr1 = arr;
        arr1[1] = 10;
        System.out.println(arr[1]);  //10
        System.out.println(arr1[2]); //3

14、数组操作:遍历
        把数据存储起来就是为了使用,而要使用数组中的数据,就必须通过索引。
        数组遍历:获取数组中的所有元素。
        如果数组太长,我们没办法一个个的去数,为此,Java提供了一个属性:length
        格式:
                数组名.length
       
        例题:写功能(函数)完成数组的遍历。

15、数组操作:获取最值
        获取数组中的最大值。
        思路:
                1、需要进行比较,并定义变量。记录住每次比较后较大的值。
                2、对数组中的元素进行遍历取出,和变量中记录的元素进行比较,
                        如果遍历到的元素大于变量中记录的元素,就用变量记录住该大的值。
                3、遍历结束,该变量记录的就是最大值。

16、数组操作:基本查找
        根据给定的值,去找它在数组中的位置(索引)。

17、二维数组概述及内存图
        索引的别名:角标,下标,编号。建议叫索引。
        二维数组:
                每一个元素其实是一个一维数组。
        格式:       
                int[][] arr = new int[3][2];
        解释:
                定义了名称为arr的二维数组,
                二维数组中有3个一维数组,
                每一个一维数组中有2个元素,
                一维数组的名称为别为:arr[0],arr[1],arr[2]
                给第一个一维数组的索引为1的元素赋值,写法是:
                        arr[0][0] = 10;

18、二维数组的定义格式:
        方式1:
                int[][] arr = new int[3][2];
                规则的矩形。
        方式2:
                int[][] arr = new int[3][];
                非规则的矩形。
                解释:
                        二维数组中有三个一维数组,
                        每个一维数组都是默认初始化值null,
                        可以对这三个一维数组分别进行初始化
                        arr[0] = new int[3];
                        arr[1] = new int[1];
                        arr[2] = new int[2];
        方式3:
                int[][] arr = {1,4,3},{9,3,7,5},{2,1};

19、二维数组的遍历
        思路:
                A:二维数组的每一个元素是一维数组
                        获取到每一个一维数组。
                B:一维数组的遍历我们讲过了。
        arr.length:获取二维数组的长度,其实也就是一维数组的个数。
        arr[x].length:获取的是每一个一维数组的长度。
        arr[x][y]:获取的是二维数组的元素。

20、二维数组的应用
                某个商场,每个月都有销售额。每个季度也有销售额,年终还得有销售额。
                例题:
                        已知某个商场每月的销售额,求该商场每个季度的销售额以及年终销售额。







评分

参与人数 1黑马币 +20 收起 理由
巴塞罗那的凌晨 + 20 赞一个!

查看全部评分

2 个回复

倒序浏览
写的真好
回复 使用道具 举报
这么多啊,第五天内容.....
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马