2019.7.23 NIIT第七天
自言自语:种一棵树最好的时间是十年前,或者现在
一、面向对象
面向过程:强调的是每一个功能的步骤
面向对象:强调的是对象,然后由对象去调用功能;
- 目前而言面向对象对于项目开发更加有利
class-x 类 泛指所有学生 抽象
- 属性(静态)
- 事务的描述信息
- 成员变量
- 不需要初始化
- 行为(动态)事务能做什么
- 成员方法
- 和以前定义方法一样 ps:java把世界上所有的事务都叫对象(每个事务) 把相同类型(具有相似属性和动作)的事务抽象取成类(抽象)
Student p=new Student();
栈:存放生成对象的地址
堆:存放成员属性和初始值
利用p(对象/指针)对堆内存进行操作! 引用类型,因此作为参数时,传对象的操作都有效
二、两个对象内存分析
- 对象属性和方法由对象名(p:地址)进行调用
- 每一个对象单独在堆中创建相关的初始化
- 方法区存放对象的行为,通过对象名(p:地址)进行调用
- 方法的调用无法共享,调用结束,方法结束,再次调用,重新开始
三、成员变量和局部变量
- 成员变量:定义在类中,作为类的属性,类中的所有方法共享
- 局部变量(包括形参):定义在方法中,只能在当前的方法中使用,在方法结束后,该变量被释放
在创建对象时,成员变量已经赋值完毕,其值为默认初始值
在执行对象内部方法时,开始赋值局部变量
生命周期:
成员变量:与创建类的周期相同
局部变量:只在方法中存在,方法执行完则消失
۞ 面试:未赋初值的局部变量,使用时会产生编译错误
各基本类型成员变量初始值
| 成员变量类型 | 默认初始值 |
|---|---|
| byte | 0 |
| short | 0 |
| int | 0 |
| long | 0 |
| float | 0.0 |
| double | 0.0 |
| char | '\u0000' 0 |
| boolean | false |
| String | NULL |
四、成员变量和局部变量内存分析
- 成员变量内存分析
| 成员变量 | 内存位置 |
|---|---|
| 基本类型 | 堆中 |
| 引用类型 | 堆中 |
- 局部变量内存分析
| 局部变量 | 内存位置 |
|---|---|
| 基本类型 | 栈中 |
| 引用类型地址 | 栈中 |
| 引用类型数值 | 堆中 |
五、private关键字
权限修饰关键字被修饰的属性和方法只能被本类访问
通过getxx() setxx()方法调用,xx代表属性,要求首字母大写
六、封装
将不想让外部直接访问的属性或者方法,通过访问权限修饰符对其进行封装
通过方法来操作对象内部属性,增加安全性和复用性
七、this关键字
-
成员变量和局部变量同名时,通过this调用成员变量,this关键字指定变量为成员变量
-
this的含义表示当前生成的对象
八、构造方法
用来给对象的数据进行初始化
没有返回值,没有void
创建对象的时候,就是调用了对应的构造方法
没有参数的构造方法为空构造方法
系统自动生成无参空构造器
给对象数据初始化,利用构造方法进行操作
如果我们提供了构造方法,系统不会在提供默认的空参数构造方法
构造方法可以重载你
应用习惯:一般情况,我们会自己写一个空的构造方法,再写一个满参数的构造方法
九、类名作为参数进行传递
自定义的对象可以作为形参和返回值,在方法中使用 其类型为引用类型,传入的时对象的地址 ...就目前来看,还不知道有啥作用