面向对象P81~90(2days)

1.设计对象并使用

类里面的变量只定义不给值。

按住鼠标滚轮不松或者Alt+鼠标左键可以进行跨行的批量修改。

2.封装

谁的状态改变了,就是谁(类)的方法(定义类里面的方法)。例如,人关门中关门是门自己的方法,不是人的方法。

private 关键字

这时再调用gf.age代码就会报错。private只能在本类中被访问,在本类以外的地方调用会出错。

如何在age是不合法数据时不被赋值呢

 

public表示本类以外的地方就可以调用。

setName是赋值,没有返回值所以是void;getName要对外提供变量值,所以有返回值。

private 关键字可以对传递过来的数据进行过滤,保护成员变量的安全性。 

3.就近原则和This关键字

就近原则:下面关于age有两个变量,在打印语句中离谁近就用谁。

 加上this可以指代成员位置中的变量,否则不加this就指代局部变量。

4.构造方法 

写在创建类中的

创建对象是通过new这个关键字的,调用构造方法是创建对象中的一步,作用是给对象的变量进行赋值(无参就是默认,有参就是赋值参数。)

5.标准Javabean类 

一般步骤: 

创建JavaBean类快捷键

1.

2.右键点击空白处:ptg To JavaBean。空参构造、全参构造、GetSet全自动加上了

6.对象内存图 

一个对象的内存图

创建对象的一行代码虚拟机起码做了右上角的7件事

1~2,Student s这左半边即是进行第2步,在栈内存开辟空间存储地址

3~7,new Student()这右半边完成了这5件事。如果在Student.class中给name和age赋值了就会进行第5步,但没有赋值所以还是保持默认初始化。然后这又是空参构造方法不是有参,进行了第6步。然后再把堆内存中的地址值存储到栈内存中。

只要有new,就是在堆内存中开辟了一个小空间,堆里面的空间都有地址值

然后,方法study进栈内存

方法执行完以后出栈内存,同时开辟的变量空间也消失,然后没有变量指向堆内存的001空间了,那么001存储的东西也会消失

两个对象的内存图

不需要再加载一次 TestStudent.class了

记住方法结束了就出栈了

两个引用指向同一个对象

stu1记录的是001这个地址

两个变量指向同一个对象

 当两个变量指向同一个空间时,只要有其中一个变量对这里面的值发生改变,那么其他变量再次访问就是改变之后的结果。

 给stu1赋值null以后和堆空间的连接就断了,显示无指针指向

再给stu2赋值null以后,堆空间的内容就没人用了就变成垃圾了。然后main方法执行完以后出栈。

7.基本数据类型和引用数据类型

基本数据类型就是在变量(栈内存中跟着main方法)当中存储的是真实的数据值,和其他的空间没有关系。

引用数据类型就是使用其他空间中的数据。 

数组也是:

8.this的内存原理 

this的本质:代表方法调用者的地址值。

9.成员和局部

记住堆空间中的内容如果没有人用就变成垃圾消失了。

  • 17
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值