1、
2、引用也可以是成员变量(实例变量),也可以是局部变量;引用数据类型,引用,
我们是通过引用去访问JVM堆内存当中的java对象,引用保存了java对象的内存地址,指向了JVM堆内存当中的java对象。
3、局部变量在栈内存中存储;
4、成员变量中的实例变量在jvm堆内存的java对象内部存储,实例变量是一个对象一份,一百个对象有一百份;
5、静态变量存储在方法区中
6、在类体当中,方法体之外定义的变量被称为"成员变量",成员变量若没有赋值,系统赋默认值:一切向0看齐:
7、访问堆内存只能通过引用去访问; 我们只能通过引用去访问jvm堆内存当中,java对象内部的实例变量
8、java语言中所有的class都属于引用数据类型,类一定是标识符,类属于引用数据类型
9、类实例化形成对象,具有共同特征的对象抽象总结形成的模板叫类
10、new运算符在jvm堆内存中开辟的内存空间叫做对象;使用new运算符一定会在堆内存中开辟内存空间;new运算符创建的java对象存储在堆内存当中。
11、方法的代码片段以及整个类的代码片段都被存储到方法区内存当中,在类加载的时候,这些代码片段会被载入。
* 栈内存:方法代码片段在执行的时候,在栈内存中分配该方法运行时所需的内存空间,方法执行结束后,该方法所属的内存空间将会被释放
* 堆内存:new运算符创建的对象在堆内存中存储
* 方法区内存:主要是存储字节码代码片段。
12、三块内存当中变化最频繁的是栈内存,最先有数据的是方法区内存,垃圾回收器主要针对的是堆内存。
13、垃圾回收器【自动垃圾回收机制、GC机制】什么时候会考虑将某个java对象的内存回收呢?
*当堆内存当中的java对象成为垃圾数据的时候,会被垃圾回收器回收。
*什么时候堆内存中的java对象会变成垃圾呢?
没有更多的引用指向它的时候。
这个对象无法被访问,因为访问对象只能通过引用的方式访问。
14、封装的步骤:
1、所有属性私有化,使用private关键字进行修饰,private表示私有的,修饰的所有数据只能在本类中访问
2、对外提供简单入口:比如说被private修饰的成员变量,在其他类中只能通过getXxx/setXxx方法来访问,目的是提高程序的安全性
· 想修改实例变量,调用set方法
· 想读取实例变量,调用get方法
15、Private关键字:
private可以修饰一个类中的成员变量,也可以修饰成员方法。被private修饰的成员变量或者是成员方法只能在本类中访问,超出本类范围,只能间接访问,比如说被private修饰的成员变量,在其他类中只能通过getXxx/setXxx方法来访问,目的是提高程序的安全性。
16、关于构造方法:
· 构造方法的语法结构:
[修饰符列表] 构造方法名(形式参数列表){
构造方法体;
}
· 普通方法的语法结构:
[修饰符列表] 返回值类型 方法名(形式参数列表){
方法体;
}
· 对于构造方法来说,"返回值类型"不需要指定,并且也不能写void,只要写上void,那么这个方法就成为普通方法了。
· 对于构造方法来说,构造方法的方法名必须和类名保持一致。
17、构造方法的作用?
构造方法存在的意义是,通过构造方法的调用,可以创建对象。
18、构造方法应该怎么调用?
·普通方法是这样调用的:方法修饰符中有static的时候:类名.方法名(实参列表)、方法名(实参列表);方法修饰符列表中没有static的时候:引用.方法名(实参列表)
·new构造方法名(实参列表)
19、构造方法调用执行之后,有返回值吗?
每一个构造方法实际上执行结束之后都有返回值,但是这个"return 值;"这样的语句不需要写。构造方法结束的时候java程序自动返回值。并且返回值类型是构造方法所在类的类型。由于构造方法的返回值类型就是类本身,所以返回值类型不需要编写。
20、· 当一个类中没有定义任何构造方法的话,系统默认给该类提供一个无参数的构造方法,这个构造方法被称为缺省构造器。
· 当一个类显示的将构造方法定义出来了,那么系统则不再默认为这个类提供缺省构造器。
开发中手动的为当前类提供无参数构造方法 ,因为无参数构造太常见:
21、构造方法支持重载机制,在一个类当中编写多个构造方法,这多个构造方法显然已构成方法重载机制(方法名相同,参数列表不同),不关注修饰符列表和返回值类型: