Java复习【知识改变命运】第五章

面向对象

1:类与对象的区别

类是对象的模板

对象是类的具体实现

类是抽象的,相当于一种数据类型

2属性(字段,成员变量,field)

1:属性可以是基本类型,也可以是引用类型,数组

2:属性可以被四种修饰符修饰 public proctected, 默认, private

3:属性创建方法:修饰符 属性类型 属性名

4 :属性有默认值

**重点:**类与对象在内存里面存储

创建一个对象发生了哪些事情:

1:会加载类的信息

2:是new 一个Preson对象

3:对Preson对象里面的age,name,进行默认初始化,name=null,age=0;

4:把Preson对象的地址赋值给p1

3:成员方法

1:成员方法也可以被四种修饰符修饰

2 返回值至多有一个,可以是基本类型也可以是引用类型,数组

3 返回类型必须与返回值一致或者兼容(可以自动转型)
方法的调用机制原理:

4:递归

1:斐波那契数

java 复制代码
public class Test {
    public static void main(String[] args) {
        int sum=Fibonacci(-1);
        System.out.println(sum);
    }
    public static int Fibonacci(int n) {
        if(n>=1) {
            if(n <3) {
                return 1;
            } else {
                return Fibonacci(n-1)+Fibonacci(n-2);
            }
        } else {
            System.out.println("请输入n>=1的数字");
            return -1;
        }

    }

}

2:迷宫问题

//1. findWay 方法就是专门来找出迷宫的路径

//2. 如果找到,就返回 true ,否则返回 false

//3. map 就是二维数组,即表示迷宫

//4. i,j 就是老鼠的位置,初始化的位置为(1,1)

//5. 因为我们是递归的找路,所以我先规定 map 数组的各个值的含义

// 0 表示可以走 1 表示障碍物 2 表示可以走 3 表示走过,但是走不通是死路

//6. 当 map[6][5] =2 就说明找到通路,就可以结束,否则就继续找. //7. 先确定老鼠找路策略 下->右->上->左

java 复制代码
 public boolean findWay(int[][] map , int i, int j) {
        if(map[6][5] == 2) {//说明已经找到
            return true;
        } else {
            if(map[i][j] == 0) {//当前这个位置 0,说明表示可以走
//我们假定可以走通
                map[i][j] = 2;
//使用找路策略,来确定该位置是否真的可以走通
//下->右->上->左
                if(findWay(map, i + 1, j)) {//先走下
                    return true;
                } else if(findWay(map, i, j + 1)){//右
                    return true;
                } else if(findWay(map, i-1, j)) {//上
                    return true;
                } else if(findWay(map, i, j-1)){//左
                    return true;
                } else {
                    map[i][j] = 3;
                    return false;
                }
            } else { //map[i][j] = 1 , 2, 3
                return false;
            }
        }

5:方法重载(OverLoad)

重载条件:

1:方法名相同

2:参数类型顺序,和参数个数不同

3:返回值没有要求,可以一样也可以不一样。

6:构造器

组成:修饰符 类名 参数列表 {

方法块

}

构造器的主要作用就是初始化属性。

重点:在创建对象时,系统会自动的调用该类的构造器完成对象的初始化。

如果程序员没有设置构造器,系统会自动生成一个无参构造器。

如果程序员设置了构造器,系统不会自动生成一个构造器。

7:对象创建的流程分析

分析:创建对象过程都发生了什么

1:加载Preson类信息(Preson.class)(只加载1次)

2:给Preson对象分配空间

3:对age 和 name 进行默认初始化:age=0;name=null

4:对age 和name 再次进行直接初始化:age=90;

5;构造器对age'和name进行初始化:age=a;name=n;

6:把Preson的地址给p;

学完之后类更加完善了

8:深入了解this

this的三种用法:this.属性 this.方法 this.构造器

注意: 访问构造器语法:this(参数列表); 注意只能在构造器中使用(即只能在构造器中访问另外一个构造器, 必须放在第一条语句)

注意:this 不能在类定义的外部使用,只能在类定义的方法中使用。

this的作用:this 用于区分当前类的属性和局部变量

this指代当前的对象:

相关推荐
一道微光1 分钟前
Mac的M2芯片运行lightgbm报错,其他python包可用,x86_x64架构运行
开发语言·python·macos
矛取矛求6 分钟前
QT的前景与互联网岗位发展
开发语言·qt
Leventure_轩先生6 分钟前
[WASAPI]从Qt MultipleMedia来看WASAPI
开发语言·qt
向宇it20 分钟前
【从零开始入门unity游戏开发之——unity篇01】unity6基础入门开篇——游戏引擎是什么、主流的游戏引擎、为什么选择Unity
开发语言·unity·c#·游戏引擎
wm104322 分钟前
java web springboot
java·spring boot·后端
smile-yan23 分钟前
Provides transitive vulnerable dependency maven 提示依赖存在漏洞问题的解决方法
java·maven
老马啸西风24 分钟前
NLP 中文拼写检测纠正论文-01-介绍了SIGHAN 2015 包括任务描述,数据准备, 绩效指标和评估结果
java
Earnest~28 分钟前
Maven极简安装&配置-241223
java·maven
皮蛋很白30 分钟前
Maven 环境变量 MAVEN_HOME 和 M2_HOME 区别以及 IDEA 修改 Maven repository 路径全局
java·maven·intellij-idea
青年有志32 分钟前
JavaWeb(一) | 基本概念(web服务器、Tomcat、HTTP、Maven)、Servlet 简介
java·web