第三章_Java基础语法[下]
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
•
表示获取第m+1个一维数组的第n+1个元素
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 二维数组定义格式
格式2
• • • •
数据类型[][] 变量名 = new 数据类型[m][]; m表示这个二维数组有多少个一维数组 这一次没有直接给出一维数组的元素个数,可以动态 的给出。 举例:
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 方法重载
方法重载概述
• 在同一个类中,允许存在一个以上的同名方法,只要
它们的参数个数或者参数类型不同即可。
方法重载特点
• 与返回值类型无关,只看方法名和参数列表 • 在调用时,虚拟机通过参数列表的不同来区分同名方
法
北京传智播客教育 www.itcast.cn
int类型的值,并且值分别是1,2,3。 其实这种写法还有一个简化的写法
•
int[] arr = {1,2,3};
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 数组操作常见的两个小问题
数组索引越界
• ArrayIndexOutOfBoundsException • 访问到了数组中的不存在的索引时发生。 • NullPointerException • 数组引用没有指向实体,却在操作实体中的元素时。
—高级软件人才实作培训专家! 二维数组练习
二维数组遍历 公司年销售额求和
• • • • •
某公司按照季度和月份统计的数据如下:单位(万元) 第一季度:22,66,44 第二季度:77,33,88 第三季度:25,45,65 第四季度:11,66,99
打印杨辉三角形(行数可以键盘录入)
北京传智播客教育 www.itcast.cn
• 数组是存储多个变量(元素)的东西(容器) • 这多个变量的数据类型要一致
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 数组概念
数组概念
•
•
数组是存储同一种数据类型多个元素的集合。也可以 看成是一个容器。 数组既可以存储基本数据类型,也可以存储引用数据 类型。
数组的定义格式
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 二维数组定义格式
格式1
• • • •
数据类型[][] 变量名 = new 数据类型[m][n]; m表示这个二维数组有多少个一维数组 n表示每一个一维数组的元素个数 举例:
• int[][] arr = new int[3][2]; • 定义了一个二维数组arr • 这个二维数组有3个一维数组,名称是arr[0],arr[1],arr[2] • 每个一维数组有2个元素,可以通过arr[m][n]来获取
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 二维数组概述
二维数组概述
• •
我们传智播客的Java基础班每个班有很多个学生,所 以,可以用数组来存储,而我们又同时有很多个Java 基础班。这个也应该用一个数组来存储。如何来表示 这样的数据呢?Java就提供了二维数组供我们使用。 由此可见:其实二维数组其实就是一个元素为一维数 组的数组。
空指针异常
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 数组练习(常见操作)
数组遍历(依次输出数组中的每一个元素) 数组获取最值(获取数组中的最大值最小值) 数组元素逆序 (就是把元素对调) 数组查表法(根据键盘录入索引,查找对应星期) 数组元素查找(查找指定元素第一次在数组中 出现的索引) 数组排序和二分查找(后面在数组高级部分讲 解)
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 方法注意事项
方法不调用不执行 方法与方法是平级关系,不能嵌套定义 方法定义的时候参数之间用逗号隔开 方法调用的时候不用在传递数据类型 如果方法有明确的返回值,一定要有return带 回一个值
北京传智播客教育 www.itcast.cn
数组的初始化方式
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 数组的初始化
动态初始化:初始化时只指定数组长度,由系 统为数组分配初始值。
• • •
格式:数据类型[] 数组名 = new 数据类型[数组长度]; 数组长度其实就是数组中元素的个数。 举例:
• int[] arr = new int[3]; • 解释:定义了一个int类型的数组,这个数组中可以存放3个
int类型的值。
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! Java中的内存分配
Java 程序在运行时,需要在内存中的分配空 间。为了提高运算效率,就对空间进行了不同 区域的划分,因为每一片区域都有特定的处理 数据方式和内存管理方式。
• • • • •
栈 存储局部变量 堆 存储new出来的东西 方法区 (面向对象部分讲) 本地方法区 (和系统相关) 寄存器 (给CPU使用)
数组概述
•
•
需求:现在需要统计某公司员工的工资情况,例如计 算平均工资、找到最高工资等。假设该公司有80名员 工,用前面所学的知识,程序首先需要声明80个变量 来分别记住每位员工的工资,然后在进行操作,这样 做会显得很麻烦。为了解决这种问题,Java就提供了 数组供我们使用。 那么数组到底是什么呢?有什么特点呢?通过上面的分 析:我们可以得到如下两句话:
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! Java中数组的内存图解
图解1:
• • •
定义一个数组,输出数组名及元素。然后给数组中的 元素赋值,再次输出数组名及元素。 定义两个数组,分别输出数组名及元素。然后分别给 数组中的元素赋值,分别再次输出数组名及元素。 定义两个数组,先定义一个数组,赋值,输出。然后 定义第二个数组的时候把第一个数组的地址赋值给第 二个数组。然后给第二个数组赋值,再次输出两个数 组的名及元素。
北京传智播客教育 www.itcast.cn
图解2:
图解3:
—高级软件人才实作培训专家! 数组的初始化
静态初始化:初始化时指定每个数组元素的初 始值,由系统决定数组长度。
•
•
格式: 举例:
• 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…}; • int[] arr = new int[]{1,2,3}; • 解释:定义了一个int类型的数组,这个数组中可以存放3个 •
数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元 素…},{元素…}}; 简化版格式: 数据类型[][] 变量名 = {{元素…},{元素…},{元素…}}; 举例:
• int[][] arr =
{{1,2,3},{4,6},{6}};
北京传智播客教育 www.itcast.cn
有明确返回值的方法调用:
• • •
单独调用,没有意义 输出调用,有意义,但是不够好,因为我不一定非要 把结果输出 赋值调用,推荐方式
讲解完毕该案例后,画图说明方法的调用过程
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 有明确返回值的方法练习
键盘录入两个数据,返回两个数中的较大值 键盘录入两个数据,比较两个数是否相等 键盘录入三个数据,返回三个数中的最大值
北京传智播客教育 www.itcast.cn
格式:
—高级软件人才实作培训专家! 方法格式的解释说明
方法格式解释
• • • • • • • •
修饰符 比较多,后面会详细介绍。目前public static 返回值类型 用于限定返回值的数据类型 方法名 一个名称,为了方便我们调用方法 参数类型 限定调用方法时传入参数的数据类型 参数名 是一个变量,接收调用方法时传入的参数 方法体 完成功能的代码 return 结束方法以及返回方法指定类型的值 返回值 程序被return带回的结果,返回给调用者
—高级软件人才实作培训专家!
没有明确返回值的方法调用
没有明确返回值的函数调用:
• •
其实就是void类型方法的调用 只能单独调用
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 返回值为void类型的方法练习
键盘录入行数和列数,输出对应的星形 键盘录入一个数据n(1<=n<=9),输出对应的 nn乘法表
• int[][] arr = new int[3][]; • arr[0] = new int[2]; • arr[1] = new int[3] • arr[2] = new int[1];
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 二维数组定义格式
格式3
•
wenku.baidu.com
• • •
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 方法定义及格式
简单的说:方法就是完成特定功能的代码块
• • •
在很多语言里面都有函数的定义 函数在Java中被称为方法 修饰符 返回值类型 方法名(参数类型 参数名1,参数 类型 参数名2…) { 函数体; return 返回值; }
—高级软件人才实作培训专家!
第三章 Java基础语法
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 本章内容
方法 数组
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家!
方法概述
方法概述
• 假设有一个游戏程序,程序在运行过程中,要不断地
发射炮弹(植物大战僵尸)。发射炮弹的动作需要编写 100行的代码,在每次实现发射炮弹的地方都需要重复 地编写这100行代码,这样程序会变得很臃肿,可读性 也非常差。为了解决代码重复编写的问题,可以将发 射炮弹的代码提取出来放在一个{}中,并为这段代码起 个名字,这样在每次发射炮弹的地方通过这个名字来 调用发射炮弹的代码就可以了。上述过程中,所提取 出来的代码可以被看作是程序中定义的一个方法,程 序在需要发射炮弹时调用该方法即可。
• • •
格式1:数据类型[] 数组名; 格式2:数据类型 数组名[]; 注意:这两种定义做完了,数组中是没有元素值的。 如何对数组的元素进行初始化呢?
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 数组的初始化
数组初始化概述:
• • • •
Java中的数组必须先初始化,然后才能使用。 所谓初始化:就是为数组中的数组元素分配内存空间 ,并为每个数组元素赋值。 动态初始化:初始化时只指定数组长度,由系统为数 组分配初始值。 静态初始化:初始化时指定每个数组元素的初始值, 由系统决定数组长度。
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 方法案例
如何写一个方法呢?两个明确
• • •
返回值类型 明确功能结果的数据类型 参数列表 明确有几个参数,以及参数的类型 求两个数据之和的案例
按照格式和两个明确来完成如下功能
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 有明确返回值的方法调用
—高级软件人才实作培训专家! 综合小练习(思考题)
看程序写结果,并总结基本类型和引用类型参 数的传递问题(题目在备注部分) 数据加密问题(题目在备注部分)
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 方法重载案例
比较两个数据是否相等。参数类型分别为两个 byte类型,两个short类型,两个int类型,两 个long类型,并在main方法中进行测试 方法递归在IO之前详细讲解
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 数组概述
表示获取第m+1个一维数组的第n+1个元素
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 二维数组定义格式
格式2
• • • •
数据类型[][] 变量名 = new 数据类型[m][]; m表示这个二维数组有多少个一维数组 这一次没有直接给出一维数组的元素个数,可以动态 的给出。 举例:
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 方法重载
方法重载概述
• 在同一个类中,允许存在一个以上的同名方法,只要
它们的参数个数或者参数类型不同即可。
方法重载特点
• 与返回值类型无关,只看方法名和参数列表 • 在调用时,虚拟机通过参数列表的不同来区分同名方
法
北京传智播客教育 www.itcast.cn
int类型的值,并且值分别是1,2,3。 其实这种写法还有一个简化的写法
•
int[] arr = {1,2,3};
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 数组操作常见的两个小问题
数组索引越界
• ArrayIndexOutOfBoundsException • 访问到了数组中的不存在的索引时发生。 • NullPointerException • 数组引用没有指向实体,却在操作实体中的元素时。
—高级软件人才实作培训专家! 二维数组练习
二维数组遍历 公司年销售额求和
• • • • •
某公司按照季度和月份统计的数据如下:单位(万元) 第一季度:22,66,44 第二季度:77,33,88 第三季度:25,45,65 第四季度:11,66,99
打印杨辉三角形(行数可以键盘录入)
北京传智播客教育 www.itcast.cn
• 数组是存储多个变量(元素)的东西(容器) • 这多个变量的数据类型要一致
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 数组概念
数组概念
•
•
数组是存储同一种数据类型多个元素的集合。也可以 看成是一个容器。 数组既可以存储基本数据类型,也可以存储引用数据 类型。
数组的定义格式
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 二维数组定义格式
格式1
• • • •
数据类型[][] 变量名 = new 数据类型[m][n]; m表示这个二维数组有多少个一维数组 n表示每一个一维数组的元素个数 举例:
• int[][] arr = new int[3][2]; • 定义了一个二维数组arr • 这个二维数组有3个一维数组,名称是arr[0],arr[1],arr[2] • 每个一维数组有2个元素,可以通过arr[m][n]来获取
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 二维数组概述
二维数组概述
• •
我们传智播客的Java基础班每个班有很多个学生,所 以,可以用数组来存储,而我们又同时有很多个Java 基础班。这个也应该用一个数组来存储。如何来表示 这样的数据呢?Java就提供了二维数组供我们使用。 由此可见:其实二维数组其实就是一个元素为一维数 组的数组。
空指针异常
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 数组练习(常见操作)
数组遍历(依次输出数组中的每一个元素) 数组获取最值(获取数组中的最大值最小值) 数组元素逆序 (就是把元素对调) 数组查表法(根据键盘录入索引,查找对应星期) 数组元素查找(查找指定元素第一次在数组中 出现的索引) 数组排序和二分查找(后面在数组高级部分讲 解)
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 方法注意事项
方法不调用不执行 方法与方法是平级关系,不能嵌套定义 方法定义的时候参数之间用逗号隔开 方法调用的时候不用在传递数据类型 如果方法有明确的返回值,一定要有return带 回一个值
北京传智播客教育 www.itcast.cn
数组的初始化方式
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 数组的初始化
动态初始化:初始化时只指定数组长度,由系 统为数组分配初始值。
• • •
格式:数据类型[] 数组名 = new 数据类型[数组长度]; 数组长度其实就是数组中元素的个数。 举例:
• int[] arr = new int[3]; • 解释:定义了一个int类型的数组,这个数组中可以存放3个
int类型的值。
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! Java中的内存分配
Java 程序在运行时,需要在内存中的分配空 间。为了提高运算效率,就对空间进行了不同 区域的划分,因为每一片区域都有特定的处理 数据方式和内存管理方式。
• • • • •
栈 存储局部变量 堆 存储new出来的东西 方法区 (面向对象部分讲) 本地方法区 (和系统相关) 寄存器 (给CPU使用)
数组概述
•
•
需求:现在需要统计某公司员工的工资情况,例如计 算平均工资、找到最高工资等。假设该公司有80名员 工,用前面所学的知识,程序首先需要声明80个变量 来分别记住每位员工的工资,然后在进行操作,这样 做会显得很麻烦。为了解决这种问题,Java就提供了 数组供我们使用。 那么数组到底是什么呢?有什么特点呢?通过上面的分 析:我们可以得到如下两句话:
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! Java中数组的内存图解
图解1:
• • •
定义一个数组,输出数组名及元素。然后给数组中的 元素赋值,再次输出数组名及元素。 定义两个数组,分别输出数组名及元素。然后分别给 数组中的元素赋值,分别再次输出数组名及元素。 定义两个数组,先定义一个数组,赋值,输出。然后 定义第二个数组的时候把第一个数组的地址赋值给第 二个数组。然后给第二个数组赋值,再次输出两个数 组的名及元素。
北京传智播客教育 www.itcast.cn
图解2:
图解3:
—高级软件人才实作培训专家! 数组的初始化
静态初始化:初始化时指定每个数组元素的初 始值,由系统决定数组长度。
•
•
格式: 举例:
• 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…}; • int[] arr = new int[]{1,2,3}; • 解释:定义了一个int类型的数组,这个数组中可以存放3个 •
数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元 素…},{元素…}}; 简化版格式: 数据类型[][] 变量名 = {{元素…},{元素…},{元素…}}; 举例:
• int[][] arr =
{{1,2,3},{4,6},{6}};
北京传智播客教育 www.itcast.cn
有明确返回值的方法调用:
• • •
单独调用,没有意义 输出调用,有意义,但是不够好,因为我不一定非要 把结果输出 赋值调用,推荐方式
讲解完毕该案例后,画图说明方法的调用过程
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 有明确返回值的方法练习
键盘录入两个数据,返回两个数中的较大值 键盘录入两个数据,比较两个数是否相等 键盘录入三个数据,返回三个数中的最大值
北京传智播客教育 www.itcast.cn
格式:
—高级软件人才实作培训专家! 方法格式的解释说明
方法格式解释
• • • • • • • •
修饰符 比较多,后面会详细介绍。目前public static 返回值类型 用于限定返回值的数据类型 方法名 一个名称,为了方便我们调用方法 参数类型 限定调用方法时传入参数的数据类型 参数名 是一个变量,接收调用方法时传入的参数 方法体 完成功能的代码 return 结束方法以及返回方法指定类型的值 返回值 程序被return带回的结果,返回给调用者
—高级软件人才实作培训专家!
没有明确返回值的方法调用
没有明确返回值的函数调用:
• •
其实就是void类型方法的调用 只能单独调用
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 返回值为void类型的方法练习
键盘录入行数和列数,输出对应的星形 键盘录入一个数据n(1<=n<=9),输出对应的 nn乘法表
• int[][] arr = new int[3][]; • arr[0] = new int[2]; • arr[1] = new int[3] • arr[2] = new int[1];
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 二维数组定义格式
格式3
•
wenku.baidu.com
• • •
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 方法定义及格式
简单的说:方法就是完成特定功能的代码块
• • •
在很多语言里面都有函数的定义 函数在Java中被称为方法 修饰符 返回值类型 方法名(参数类型 参数名1,参数 类型 参数名2…) { 函数体; return 返回值; }
—高级软件人才实作培训专家!
第三章 Java基础语法
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 本章内容
方法 数组
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家!
方法概述
方法概述
• 假设有一个游戏程序,程序在运行过程中,要不断地
发射炮弹(植物大战僵尸)。发射炮弹的动作需要编写 100行的代码,在每次实现发射炮弹的地方都需要重复 地编写这100行代码,这样程序会变得很臃肿,可读性 也非常差。为了解决代码重复编写的问题,可以将发 射炮弹的代码提取出来放在一个{}中,并为这段代码起 个名字,这样在每次发射炮弹的地方通过这个名字来 调用发射炮弹的代码就可以了。上述过程中,所提取 出来的代码可以被看作是程序中定义的一个方法,程 序在需要发射炮弹时调用该方法即可。
• • •
格式1:数据类型[] 数组名; 格式2:数据类型 数组名[]; 注意:这两种定义做完了,数组中是没有元素值的。 如何对数组的元素进行初始化呢?
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 数组的初始化
数组初始化概述:
• • • •
Java中的数组必须先初始化,然后才能使用。 所谓初始化:就是为数组中的数组元素分配内存空间 ,并为每个数组元素赋值。 动态初始化:初始化时只指定数组长度,由系统为数 组分配初始值。 静态初始化:初始化时指定每个数组元素的初始值, 由系统决定数组长度。
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 方法案例
如何写一个方法呢?两个明确
• • •
返回值类型 明确功能结果的数据类型 参数列表 明确有几个参数,以及参数的类型 求两个数据之和的案例
按照格式和两个明确来完成如下功能
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 有明确返回值的方法调用
—高级软件人才实作培训专家! 综合小练习(思考题)
看程序写结果,并总结基本类型和引用类型参 数的传递问题(题目在备注部分) 数据加密问题(题目在备注部分)
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 方法重载案例
比较两个数据是否相等。参数类型分别为两个 byte类型,两个short类型,两个int类型,两 个long类型,并在main方法中进行测试 方法递归在IO之前详细讲解
北京传智播客教育 www.itcast.cn
—高级软件人才实作培训专家! 数组概述