类与对象基本概念
方法(method)
方法 的好处:
- 提高代码的复用性
- 将实现的细节封装起来,供其他用户调方法的细节
方法的一些细节
方法传参机制
对于基本数据类型,传递的是值(拷贝),形参的改变不影响实参
对于引用类型,修改外界的数据的值
public class b_04methodExercise {
public static void main(String args[]){
Judge judge =new Judge();
boolean isodd =judge.isOdd(3);
System.out.println("是否为偶数:"+isodd);
judge.printChar(4,4,'@');
}
}
//编写类,
class Judge{
//有方法,判断一个数是奇数还是偶数,返回boolean,偶数返回true
public boolean isOdd(int n){
// if(n%2==0){
// return true;
// }
// else{
// return false;
// }
return n%2==0?true:false;
}
//根据行列字符打印,字符为#
public void printChar(int row,int col,char c){
for(int i=1;i<=row;i++){
for(int j=1;j<=col;j++){
System.out.print(" "+c);
}
System.out.println();
}
}
}
递归(recursion)
从最顶级的栈依次向下返回数据
递归练习
使用递归方式求斐波那契数列和猴子吃桃问题
public class b_06recursionExercise {
public static void main(String args[]){
TextRecursion textRecursion =new TextRecursion();
int num = textRecursion.fabonacciSequence(10);
System.out.println("斐波那契数列的指定数值为:"+num);
int number =textRecursion.PeachEating(1);
System.out.println("指定天数桃子数目为:"+number);
}
}
class TextRecursion{
/**
* 求斐波那契数列
* 参数:n 第几个数
* 返回值: 斐波那契数列数
*/
public int fabonacciSequence(int n){
if(n>2){
return fabonacciSequence(n-1)+fabonacciSequence(n-2);
}
else if(n==1||n==2){
return 1;
}
else{
return -1; //数据不合法
}
}
/**
* 猴子吃桃问题
* 有一堆桃子,猴子每天吃剩下的桃子的一半并多一个,到第十天(第十天还没吃)便只有一个桃子了。问:总共有多少桃子
* 参数: 桃子吃的天数
* 返回值:桃子数目
*/
public int PeachEating(int n){
if(n>=1&&n<=9){
return (PeachEating(n+1)+1)*2;
}else if(n==10){
return 1;
}
else{
System.out.println("天数不在1-10");
return -1;
}
}
}
经典递归题目
老鼠迷宫问题
public class b_07MiGong {
public static void main(String args[]){
/**
* 思路:
* 先创建迷宫,用二维数组表示 int[][] map =new int[8][7];
* 先规定map数组的元素值:0表示空白,1表示障碍物
*/
int[][] map =new int[8][7];
//将最上面和最下面一行,全部设置为1
for(int i=0;i<7;i++){
map[0][i]=1;
map[7][i]=1;
}
//将最左侧一列,右侧一列设置为1
for(int i=0;i<8;i++){
map[i][0]=1;
map[i][6]=1;
}
//补充内在缺少障碍物
map[3][1]=1;
map[3][2]=1;
//输出当前地图
System.out.println("======当前地图情况======");
for(int i=0;i<map.length;i++){
for(int j=0;j<map[i].length;j++){
System.out.print(map[i][j]+" ");
}
System.out.println();
}
//使用findWay给老鼠找路
Solve solve =new Solve();
boolean answer =solve.findWay(map, 1, 1);
System.out.println("找路的结果是:"+answer);
//输出当前地图
System.out.println("======当前地图情况======");
for(int i=0;i<map.length;i++){
for(int j=0;j<map[i].length;j++){
System.out.print(