java学习笔记day06
1,方法
eg:
2,关于方法我们需要学会什么
①怎么定义方法
②怎么调用方法
③方法的内存图
④方法的参数传递机制
⑤方法其他常见形式,技术
3,方法定义,调用
···方法完整的定义形式,调用
eg:
···方法的其他定义形式,调用
eg:
4,方法使用的常见问题
注意:方法不能嵌套定义的意思是:
在一个定义了的方法中不能重新定义其他的方法,比如在main方法里面,再写public static void xxx(){}就会报错
eg:
5,案例
说明:
??案例1:计算1-n的和返回
eg:
??案例2:判断整数是奇数还是偶数
eg:
??案例3:数组求最值用方法实现
eg:
??补充案例4:最大值输出(个人练习)
需求:结合前面所学知识,使用动态初始化数组,遍历输出随机生成的数组,并输出其中的最大值
分析:
①动态初始化数组,长度设3;
②生成随机数据,1-1000范围内
③遍历数组后输出结果
④对数值的最大值进行输出
eg:
优化:
①在比较最大值时,for循环里的i应设为1,表示最大值max首先与数组的第二个数比较,因为max初始值就是数组的第一个数,如果i为0,表示要与自己比较一次,重复了,这可以设置一个计数器来查看比较次数,从而了解比较的效率高低(多条数据如10000000000条的方向来比较)
②bug:程序中max的默认值应该在数组随机生成之后再定义,否则会默认max的值为0,此时,当数组如果都是负数时,max最大值自然为0,显然与测试初衷不一致。而在数组动态随机初始化后再定义,就能稳定在已知数组中比较最大值,得出确定的结果
优化结果:
自评成绩:99分!多一分怕你骄傲!
6,方法调用的内存图
内存图解:
注:
①方法调用完后,会退出栈内存
②方法调用在栈内存中的顺序是先进后出,main最先放入,最后放出,程序结束
③方法调用类似于,枪发射子弹:方法区->栈内存->结束
eg:
7,方法的参数传递机制
···基本类型的参数传递
值传递
eg:
···引用类型的参数传递
总结:
引用类型的地址值不会改变,但有可能会使地址指向的内存中的数据发生改变,相当于两个变量A B指向同一个地址,如果B改变了地址所指向的值,那么A也会改变,有“一荣俱荣一损俱损”的意思
8,方法的参数传递案例
??案例1:打印数组内容
eg:
注意:
当用户传入的数组为null或者{}里没有数据时,直接对数组进行遍历是行不通的,应该规避类似情况:
为上述代码添加判断语句:
??案例2:从数组中查询元素的索引返回
eg:
??案例3:
eg:
注意:判断两个数组是否相同,首先在长度方面要保持一致,这是必要条件,其次,对比数组中每个相同索引指向的数据进行对比,有一个不同就返回false,如果遍历完数组后都找不到索引指向的两个数组的数据不同,则认为这两个数组是相同的,直接返回true。
9,方法重载
···方法重载的形式
eg:
···方法重载的作用:
eg:
···方法重载的识别技巧
总规则:
eg:名称一样,形参类型一样,即使形参名称不一样,也视为一个重复方法,会报错,其并不是重载的方法
10,单独使用return关键字
eg:
总结:
11,方法大总结
思维导图:
链接:https://pan.baidu.com/s/1S7kcVY0sDmJ6tfwmJetAzw
提取码:1ju4
over!(2022,5,10,16:35)