Java技术复习提升 6面向对象编程

6 面向对象编程

6.1 对象在内存中的存在形式

6.2 成员方法调用机制

6.3 成员方法传参机制

基本数据类型

全局变量存储在堆上 局部变量存储在栈里

引用数据类型

6.4 方法递归调用

例题 老鼠找路

import java.util.Scanner;



public class Test {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();

        int[][] map = new int [n][n];

        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                if(i==0||i==n-1||j==0||j==n-1){
                    map[i][j]=1;
                }else if(Math.random()<0.3){//随机生成墙壁
                    map[i][j]=1;
                }else{
                    map[i][j]=0;
                }
            }
        }

        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                System.out.print(map[i][j]+" ");
            }
            System.out.println();
        }

        T sol=new T();
        int startx=in.nextInt();
        int starty=in.nextInt();
        int descx=in.nextInt();
        int descy=in.nextInt();
        if(sol.sol(map,startx,starty,descx,descy)){
            System.out.println("成功 路径如下:");
            for(int i=0;i<n;i++){
                for(int j=0;j<n;j++){
                    System.out.print(map[i][j]+" ");
                }
                System.out.println();
            }
        }else{
            System.out.println("失败 无法到达");
        }
    }
}

class T{
    public boolean sol(int[][] map,int x, int y,int desx,int desy){


        if(map[desx][desy] == 2){
            return true;
        }else if(map[x][y] == 1||map[x][y]==2){
            return false;
        }else{
            map[x][y]=2;
            if(sol(map,x,y+1,desx,desy)){
                return true;
            }else if(sol(map,x+1,y,desx,desy)) {
                return true;
            }else if(sol(map,x,y-1,desx,desy)){
                return true;
            } else if (sol(map,x-1,y,desx,desy)) {
                return true;
            }else{
                return false;
            }
        }
    }
}

 

例题 汉诺塔

import java.util.Scanner;

public class Hannuota {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        String input=in.nextLine();
        String[] parts=input.split(" ");

        int n=Integer.parseInt(parts[0]);
        char a=parts[1].charAt(0);
        char b=parts[2].charAt(0);
        char c=parts[3].charAt(0);

        Tower sol=new Tower();
        sol.move(n,a,b,c);
    }
}

class Tower{
    public void move(int n,char a,char b,char c){
        if(n==1){
            System.out.println(a+"->"+c);
        }else{
            move(n-1,a,c,b);
            System.out.println(a+"->"+c);
            move(n-1,b,a,c);
        }
    }
}

 例题 八皇后问题(待解决 读者可分享思路)

6.5 方法重载

同一个类中 方法同名 但形参不一致

6.6 可变参数

基本语法
访问修饰符 返回类型 方法名(数据类型… 形参名) { }

import java.util.Scanner;

public class Sumofnum {
    public static void main(String[] args) {

        M sol=new M();
        System.out.println(sol.sum(1,5,7,9));
        System.out.println(sol.sum(1,5));
    }
}

class M{
    public int sum(int...nums){//可变参数
        int res=0;
        for(int num:nums){
            res+=num;
        }
        return res;
    }
}

6.7 构造器

6.8 对象创建过程

6.9 this底层

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值