Java学习第12天

一、今日学习内容:

   今天学习方法参数及其传递问题、方法递归,和类的属性。

(1)方法参数及其传递问题:分为两种,值传递和引用传递。

不能单纯利用返回值为void的函数运行后查看原值来判断是值传递还是引用传递。选择在传完参数后的函数内测地址,地址一样就是引用传递,不一样就是值传递。

hashCode()一般包含了地址,但Integer的hashCode()则只是原值,得使用System.identityHashCode(data)来测。

注:

基本类型是值传递

引用类型是引用传递,返回值为void的话未必能在外面看到改变。

引用类型对象重新被new了以后,看不到改变;但改变属性能看到改变。

数组也是引用类型,数组元素值的改变能在void方法外面测出来。

(2)方法递归:

1.什么是递归?

方法自身调用自身。例:
a(){
a();
}

2.递归非常耗费栈内存的,递归算法能不用尽量别用。

3.递归必须要有结束条件,没有结束条件一定会引起栈的溢出错误

4.递归即使有了结束条件,即使结束条件是正确的,也可能会发生栈内溢出

(3)类的属性:

一、类的修饰符

(1)public(公有属性)

公有的、公共的(一般用于定义一个公共的类的属性或变量,可以在该类以外调用和供其他类调用和使用)

定义格式 :public 数据类型 属性名称,例如:

public公有属性,可以在该类以外调用,其他类也可以调用(这种变量称之为实例变量)

(2)private (私有属性)

私有的(一般用于定义一个私有的类的属性或变量,只能在本类使用,不可外调,外调是会报错)

定义格式 :private 数据类型 属性名称;

例如:

二、类的变量

1、分类:分为“成员变量”和“局部变量”

1.1、成员变量(有默认值,String类型不赋值时默认值为null、int为0)

(1)实例变量(不以 “static” 修饰)

例如 :

特别注意:实例变量只能在类实例化之后的对象中使用和调用!!!

(2) 类变量(以“static”修饰)例如:

可以直接通过“ 类名 . 属性 ”方式直接调用

1.2、局部变量

(1)形参(方法小括号中定义的变量),例如:

特别注意:在调用这个方法的时候,在其给予赋值时,必须和参数里面的数据类型一致,不然会执行报错!!!

(2)方法局部变量(在方法体内定义)

就是在一个方法体里面的变量,只能在这个方法体(一个方法的中间部分)里面发挥作用,超出范围则无效(带有数据类型,如 int i = 0;)

例如:

特别注意:在定义时必须赋值,否则无效!!!

(3)代码块局部变量(在代码块内定义)

就是在一对大的花括号里面定义的变量,和方法局部变量有些类似,在其定义时也必须初始化值,不能超出所在范围,否则无效!!!

三、成员变量(属性)和局部变量的区别

注意事项总结:

  • 方法局部变量:就是在一个方法体里面的变量(带有数据类型,如int i = 0;)

 

  • 代码块局部变量:就是在一对大的花括号里面定义的变量

 

  • 成员变量的修饰符:public(公共的) 和 private(私有的)

 

  • 特别注意:实例变量只能在类实例化之后的对象中使用和调用!!!

 

  • 特别注意:成员变量有默认值,可以不用初始化值!!!

 

  • 特别注意:局部变量只能在它所属的范围类使用,必须赋值!!!

 二、遇到的问题

递归上有一点问题

三、明日继续第四章类的学习

posted @ 2020-07-17 21:15  居酿圆子  阅读(100)  评论(0编辑  收藏  举报