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.成员和局部
记住堆空间中的内容如果没有人用就变成垃圾消失了。