第五天????22
1. 方法(掌握)????22
(1)方法:就是完成特定功能的代码块。????22
(2)格式:????22
(3)两个明确:????23
(4)方法调用????23
(5)案例:????23
(6)方法的注意事项????23
(7)方法重载????23
(8)方法重载案例????24
2. 数组(掌握)????24
(1)数组定义:????24
(2)特点:????24
(3)定义格式????24
(4)数组的初始化????24
A:动态初始化????24
B:静态初始化????24
(5)Java的内存分配????24
(6)数组内存图????25
(7)数组操作的两个常见小问题????25
(8)数组的常见操作????25
A:遍历????25
B:最值????26
最大值:????26
最小值:????26
C:逆序????26
D:查表????27
E:基本查找????27
?
?
第五天
1. 方法(掌握)
????(1)方法:就是完成特定功能的代码块。
????????注意:在很多语言里面有函数的定义,而在Java中,函数被称为方法。
????(2)格式:
????????修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {
????????????方法体语句;
????????????return 返回值;
????????}
?
????????修饰符:目前就用 public static。后面再详细讲解其他修饰符
????????返回值类型:就是功能结果的数据类型
????????方法名:就是起了一个名字,方便我们调用该方法。
????????参数类型:就是参数的数据类型
????????参数名:就是变量
????????参数分类:
????????????实参:实际参与运算的数据
????????????形参:方法上定义的,用于接收实际参数的变量
????????方法体语句:就是完成功能的代码块
????????return:结束方法
????????返回值:就是功能的结果,由return带给调用者。
????(3)两个明确:
????????返回值类型:结果的数据类型
????????参数列表:参数的个数及对应的数据类型
????(4)方法调用
????????A:有明确返回值的方法
????????????a:单独调用,没有意义
????????????b:输出调用,不是很好,因为我可能需要不结果进行进一步的操作。但是讲课一般我就用了。
????????????c:赋值调用,推荐方案
????????B:void类型修饰的方法
????????????a:单独调用
????(5)案例:
????????A:求和方案
????????B:获取两个数中的较大值
????????C:比较两个数据是否相同
????????D:获取三个数中的最大值
????????E:输出m行n列的星形
????????F:输出nn乘法表
????(6)方法的注意事项
????????A:方法不调用不执行
????????B:方法之间是平级关系,不能嵌套定义
????????C:方法定义的时候,参数是用,隔开的
????????D:方法在调用的时候,不用在传递数据类型
????????E:如果方法有明确的返回值类型,就必须有return语句返回。
????(7)方法重载
????????在同一个类中,方法名相同,参数列表不同。与返回值无关。
????????
????????参数列表不同:
????????????参数的个数不同。
????????????参数的对应的数据类型不同。
????(8)方法重载案例
????????不同的类型的多个同名方法的比较。
????????
2. 数组(掌握)
????(1)数组定义:
存储同一种数据类型的多个元素的容器。
????(2)特点:
每一个元素都有编号,从0开始,最大编号是长度-1。
???? 编号的专业叫法:索引
????(3)定义格式
????????A:数据类型[] 数组名;如: int[] a;//定义一个int类型的数组a变量
????????B:数据类型 数组名[]; 如:int a[];//定义一个int类型的a数组变量
????????
????????推荐是用A方式,B方法就忘了吧。
????????但是要能看懂(两者的效果是一样的,都是定义一个数组)
????(4)数组的初始化
*定义:初始化就是为数组开辟内存空间,并未每个数组元素赋以初值
????????A:动态初始化
????????????只给长度,由系统给出默认值
????????????
????????????举例:int[] arr = new int[3];
????????B:静态初始化
????????????给出值,系统决定长度
????????????
????????????举例:int[] arr = new
int[]{1,2,3};
????????????简化版:int[] arr = {1,2,3};//其实也隐含的进行了new操作
????(5)Java的内存分配
????????A:栈 存储局部变量
????????B:堆 存储所有new出来的
????????C:方法区(面向对象部分详细讲解)
????????D:本地方法区(系统相关)
????????E:寄存器(CPU使用)
????????
????????注意:
????????????a:局部变量 在方法定义中或者方法声明上定义的变量。
????????????b:栈内存和堆内存的区别
????????????????栈:数据使用完毕,就消失(前提是脱离该变量的作用域之后,就会被自动释放掉)。
????????????????堆:每一个new出来的东西都有地址
???????????????? 每一个变量都有默认值
????????????????????????byte,short,int,long 0
????????????????????????float,double 0.0
????????????????????????char ‘\u0000‘ 代表空字符
????????????????????????boolean false
????????????????????????引用类型 null
???????????????? 数据使用完毕后,在垃圾回收器空闲的时候回收。
????(6)数组内存图
????????A:一个数组
????????B:二个数组
????????C:三个数组(两个栈变量指向同一个堆内存)
(7)数组操作的两个常见小问题
1. ArrayIndexOutOfBoundsException :数组下标越界异常
原因分析:你访问了不存在的索引
2. NullPointerException:空指针异常
原因分析:数组已经不再指向堆内存,而你还用数组名去访问元素
????(8)数组的常见操作
????????A:遍历
????????????方式1:
????????????????
public?static?void printArray(int[] arr) { ????????for (int?x = 0; x < arr.length; x++) { ????????????System.out.println(arr[x]); ????????} ????} |
?
????????????????
????????????方式2:
????????????????
public?static?void printArray(int[] arr) { ????????System.out.print("["); ????????for (int?x = 0; x < arr.length; x++) { ????????????if (x == arr.length - 1) { ????????????????System.out.println(arr[x] + "]"); ????????????} else { ????????????????System.out.println(arr[x] + ", "); ????????????} ????????} ????} |
?
????????B:最值
????????????最大值:
????????????????
public?static?int getMax(int[] arr) { ????????int?max = arr[0]; ????????for (int?x = 1; x < arr.length; x++) { ????????????if (arr[x] > max) { ????????????????max = arr[x]; ????????????} ????????} ????????return?max; ????} |
?
????????????最小值:
????????????????
public?static?int getMin(int[] arr) { ????????int?min = arr[0]; ????????for (int?x = 1; x < arr.length; x++) { ????????????if (arr[x] < min) { ????????????????min = arr[x]; ????????????} ????????} ? ????????return?min; ????} |
?
????????C:逆序
????????????方式1:
????????????????
public?static?void reverse(int[] arr) { ????????for (int?x = 0; x < arr.length / 2; x++) { ????????????int?temp = arr[x]; ????????????arr[x] = arr[arr.length - 1 - x]; ????????????arr[arr.length - 1 - x] = temp; ????????} ????} |
?
????????????????
????????????方式2:(较简单)
????????????????
public?static?void reverse(int[] arr) { ????????for (int?start = 0, end = arr.length - 1; start <= end; start++, end--) { ????????????int?temp = arr[start]; ????????????arr[start] = arr[end]; ????????????arr[end] = temp; ????????} ????} |
?
????????D:查表
????????????????
public?static String getString(String[] strArray, int?index) { ????????return?strArray[index]; ????} |
?
????????E:基本查找
????????????方式1:
????????????????
public?static?int getIndex(int[] arr, int?value) { ????????for (int?x = 0; x < arr.length; x++) { ????????????if (arr[x] == value) { ????????????????return?x; ????????????} ????????} ????????return -1; ????} |
?
????????????????
????????????方式2:(较简单)
????????????????
public?static?int getIndex(int[] arr, int?value) { ????????int?index = -1; ? for (int?x = 0; x < arr.length; x++) { ????????????if (arr[x] == value) { ????????????????index = x; ????????????????break; ????????????} ????????} ? ????????return?index; ????} |
?
????????