10.19Java学习进度

构造方法,方法重载,this关键字,方法的传参和调用:

学习了构造方法的概念和使用
无参和有参构造方法的使用

方法的重载概念和体现形式
几个类的方法名相同,参数列表不同,就是重载
在创建对象时候会根据不同参数调用不同构造方法

this关键字的使用方式,原理:
在构造方法中代表当前正在构造的对象
在成员方法中代表当前正在调用的对象

使用方式:
(1)当形参变量和成员变量同名是,在构造方法或成员方法中通常优先使用形参变量,若希望使用成员变量就需要在变量名的前面加上this.进行说明
(2)在构造方法的第一行使用this(实参)的方式可以调用本类中的其他构造方法

this关键字的作用:
所有成员变量不能重名,再同一区域的局部变量不能重名,但是成员变量可以重命名.
在局部变量的作用区域外,变量名代表成员变量,在局部变量的作用域之间,代表局部变量,如果想使用成员变量,需要this.的方式访问

在方法中可以通过调用关键字表示”调用该方法的那个对象”.

this关键字和空值:
引用类型变量用于存放对象的地址,可以给引用类型赋值为null,表示不指向任何对象.
当某个引用类型变量为null时无法对对象实施访问,
此时通过引用访问成员变量或调用方法会产生NullPointerException异常(空指针异常)

方法的传参和递归调用:
方法的传参过程:
(1)main方法是程序的入口,为main方法中的局部变量开辟内存空间并初始化;
(2)调用max方法时为max方法的形参变量开辟内存空间;
(3)使用实参变量给形参变量进行赋值操作,执行max方法的方法体;
(4)当max方法结束后释放形参变量的内存空间;
(5)main方法中的res得到max方法的返回值然后继续向下执行;
(6)当main方法结束后释放局部变量的内存空间;

a.当基本数据类型的变量作为方法的参数传递时,形参变量的改变不会影响到实参;
b.当引用数据类型的变量作为方法的参数传递时,形参变量指向的内容发生改变后会影响到实参变量指向的内容;
c.当引用数据类型的变量作为方法的参数传递时,形参变量改变指向后再改变指向的内容时不会影响到实参变量指向的内容;

递归调用:

调用方法的本质就是根据方法名跳过去

(1)基本概念:
方法叫做递归。
如:

   void show(){
      show();
   }

案例:
自定义成员方法实现参数n阶乘的计算并返回。

解析:

   5! = 5 * 4 * 3 * 2 * 1;
   4! = 4 * 3 * 2 * 1;
   3! = 3 * 2 * 1;
   2! = 2 * 1;
   1! = 1;

   n! = n * (n-1) * (n-2) * ... * 1;

   5! = 5 * 4!;
   4! = 4 * 3!;
   3! = 3 * 2!;
   2! = 2 * 1!;
   1! = 1;

   n! = n * (n-1)!;

递推:

int show(int n){
    int res = 1;
    for(int i = n; i > 1; i--){
        res *=i;
    }
    return res;
}

递归:

if(1 == n){
    return 1;
}
return n * show(n-1); 

(2)注意事项:

a.必须找到递归的规律和退出条件;
b.使用递归使得问题简单化而不是复杂化;
c.若递归影响到程序的执行性能则使用递推取代之;