p202-233
类与对象(第七章)
成员方法
person类中的speak方法:
1.public表示方法是公开的
2.void表示方法没有返回值
3.speak()中,speak表示方法名,括号是形参列表。
4.大括号为方法体,写我们要执行的代码,本例中是输出我是个好人
构造函数?
方法使用:
方法写好后不调用就不生效。先创建对象,然后调用方法即可。
例:Person p1 = new Person();
P1.speak();//调用方法
同理计算两个数的和:
public int getSum(int x, inty){
int res = x+y;
return res;
}
懂这个,略了
方法调用机制:
1.当程序执行到方法时,就会开辟一个独立的空间(栈空间
2.方法执行完毕,或者执行到return时就会返回
3返回到调用方法的地方
4返回后,继续执行方法后面的代码
5.当main方法(栈)执行完毕,整个程序退出
入栈出栈:是先进后出
例:遍历数组,输出数组的各个元素值。
方法的使用细节
1访问修饰符:public ,默认,protected,private
2数据返回类型:一个方法只有一个返回值,那么我想返回多个值可以返回数组。返回可以是任何类型,比如一个对象。
3.如果方法要求了返回数据类型,比如public int xxxxx(),那么最后一句必须是return一个int
4.形参列表:可以有0个参数,也可以多个,用逗号隔开
参数类型可以是任何类型
注意传入参数和返回值的类型,比如把byte传进返回int的方法就可以
注意传参数时的顺序也要一致
5.方法不能嵌套定义
6.同一类中的方法可以调用:直接调用即可,不需要创建对象
方法练习
1.
2.
成员方法传参机制
传值和传地址
引用类型传递的是地址(传递也是值,但是值是地址),可以通过形参影响实参。
练习:
b.test200(p)把地址传到了class B的方法中,使形参中的指针置空,但是实参并没有置空!
经过测试,在形参置空前进行数据的操作还是会传回来。
案例:
解:
输出时,可以通过输出对象的hashCode来比较它们是不是同一个对象
==和equals的区别?
方法递归调用
递归就是方法自己调用自己,每次调用时传入不同的变量。
案例:
2 3 4
n!
递归的过程会反复开栈,如下图
递归的重要规则
练习
1.斐波那契数列:
2.猴子吃桃
递归调用-老鼠出迷宫
0222_韩顺平Java_老鼠出迷宫2_哔哩哔哩_bilibili
还挺难想到的
回溯现象
当小球走到一个点位,给它置3(走不通)时,就会发生回溯,返回到上一个栈去,寻找上一个栈的另一个方向的解。
如何寻找最短路径?
1.穷举法
2.图数据结构求出最短路径,深度优先广度优先等等。
汉诺塔
没看懂,脑壳痛,你这代码怎么实现的?我虽然理解汉诺塔的规则了,但是你这代码为什么是这样的?
“如果塔只有一层,那就挪一次。如果不是一层,就看成最后一层和上面的所有层,然后递归上面的层直到剩一层”
0225_韩顺平Java_汉诺塔_哔哩哔哩_bilibili
八皇后
0226_韩顺平Java_八皇后_哔哩哔哩_bilibili
写不来,摆了
方法重载
java中允许一个类中,多个同名方法的存在,但要求形参列表不一致。
好处:减轻了起名、记名的麻烦。
细节:
1.方法名需要相同
2.形参列表不能完全相同。形参名字不能用来区分。
3.返回类型不参与构成方法重载。不进行要求。
练习:
b c d e
可变参数
java允许将同一个类中多个同名同功能,但参数个数不一样的方法,封装成一个方法。
基本语法:
访问修饰符 返回类型 方法名(数据类型... 形参名){
}
啊该死的八皇后我看着重载想递归救命啊睡不着了