目录
1.类与对象(oop)
1.1 使用现有的技术解决。
使用单独定义变量解决
使用数组解决。
缺点分析:不利于数组的管理效率低。
1.2 类与对象的关系示意图:
猫类Cat :自定义数据类型 猫对象(具体一只猫)
int : Java提供数据类型 100
1.类就是数据类型,比如Cat
2.对象就是一个具体的实例
1.3 对象在内存中存在的形式(重要!!!)
例: Cat cat = new Cat(); //new Cat(); 创建一只猫 ,把创建的猫赋给cat
1.4 属性 / 成员变量 / 字段
基本介绍:
1) 叫法: 成员变量 = 属性 = field(字段)
2) 属性是类的一个组成部分,一般是基本数据类型,也可以说引用类型(对象,数组)
1.5 如何创建对象
1) 先声明在创建
Cat cat ; //声明对象 cat
cat = new Cat(); //创建
2)直接创建
cat = new Cat();
1.6如何访问属性
基本语法:
对象名.属性名;
1.7 类和对象的内存分配机制(重要!!!)
4)进行指定初始化
2.成员方法
2.1基本介绍
2.3 方法的调用机制原理(重要!!!)
2.4成员方法的好处
1)提高代码的复用性。
2)可以将实现的细节封装起来,然后供其他用户来调用即可。
2.5成员方法的定义
访问修饰符 返回数据类型 方法名(行参列表){ //方法体
语句;
Return返回值;
}
1.形参列表 :表示成员方法输入
2.数据类型(返回类型)表示成员方法输出,void表示没有返回值。
3.方法主体 :表示为了实现某一功能代码块。
4. return 语句不是必须的。
2.6注意事项和使用细节
方法调用
1)同一个类中的方法调用: 直接调用即可。
2)跨类中的方法 A类调用 B类方法; 需要通过 对象名.方法名(参数)
3)特别说明 :跨类的方法调用和方法的访问修饰符相关。
3.成员方法传参机制 (非常非常重要!!!)
基本数据类型的传参机制:
基本数据类型,传递的是值(值拷贝),形参的任何改变不影响实参!
引用数据类型的传参机制:
引用类型传递的是地址(传递也是值,但是值是地址),可以通过形参影响实参。
4.方法递归调用
基本介绍:
简单的说:递归就是方法自己调用自己,每次调用时传入不同的变量。递归有助于编程者解决复杂问题,同时可以让代码变得简洁。
例题:
阶乘
4.4递归重要规则
小迷宫
public class Migong {
//编写一个main方法
public static void main (String[] args) {
int map[][] = new int[8][7];
for(int i = 0;i < map[i].length;i++){//第一行和最后一行设置为1
map[0][i] = 1;
map[7][i] = 1;
}
for(int i = 0;i < map.length;i++){//第一列和最后一列设置为1
map[i][0] = 1;
map[i][6] = 1;
}
//设置障碍
map[3][1] = 1;
map[3][2] = 1;
// map[2][2] = 1;
// map[1][2] = 1;
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();
}
System.out.println("=======回溯后=========");
BB t = new BB();
t.findWay(map,1,1);
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();
}
// CC c = new CC();
// c.findWay(map,1,1);
// 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();
// }
}
}
class BB{
int count = 0;
//用回溯的思想来解决老鼠出迷宫的问题
//1.findWay方法就是专门来找出迷宫的路径
//2.如果找到就返回true ,否则返回 false
//3.map 就是二维数组,即表示迷宫
//4.i ,j 就是表示老鼠的位置,初始化的位置为(1,1)
//规定 0表示路 ,1表示墙,2表示可以走,3表示死路
//判断方向:下 -> 右 -> 上 ->左
public boolean findWay(int[][] map ,int i,int j){
if( map[6][5] == 2){
System.out.println("下 -> 右 -> 上 ->左:共走了= "+ count +"步");
return true;
}
if(map[i][j] == 0){
map[i][j] = 2;
count++;
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 = 1,2,3
return false;
}
}
}
class CC{
int count = 0;
//用回溯的思想来解决老鼠出迷宫的问题
//1.findWay方法就是专门来找出迷宫的路径
//2.如果找到就返回true ,否则返回 false
//3.map 就是二维数组,即表示迷宫
//4.i ,j 就是表示老鼠的位置,初始化的位置为(1,1)
//规定 0表示路 ,1表示墙,2表示可以走,3表示死路
//判断方向:上 -> 右 -> 下 -> 左
public boolean findWay(int[][] map ,int i,int j){
if( map[6][5] == 2){
System.out.println("上 -> 右 -> 下 -> 左:共走了= "+ count +"步");
return true;
}
if(map[i][j] == 0){
map[i][j] = 2;
count++;
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 = 1,2,3
return false;
}
}
}
5.方法重载(OverLoad)
5.1基本介绍
java中允许同一个类中,多个同名方法的存在,但要求形参列表不一致!
5.2重载的好处。
1)减轻了起名的麻烦
2)减轻了记名的麻烦。
5.3注意事项和使用细节
6.可变参数
6.1 基本概念
Java允许将同一个类中多个同名同功能,但参数个数不同的方法,封装成一个方法。
6.2 基本语法
6.3注意事项和使用细节
7.作用域
基本概念
7.2注意事项和使用细节
8.构造方法 / 构造器
8.1基本语法
8.2基本介绍
8.3注意事项和使用细节
9.对象创建流程分析(回顾)
上下对照分析![](https://img-blog.csdnimg.cn/d8a6c6adfe334c14b60d3bb9df533be6.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5qKm5pif56m6IOeDpumBl-W_mA==,size_20,color_FFFFFF,t_70,g_se,x_16)
10.this关键字
this 代表当前对象
小结: 哪个对象调用,this就代表哪个对象
10.2注意事项和使用细节