简介
引用类型
变量作用于
对象的默认引用:this
引用类型
引用类型可分为:类引用类型、接口引用类型、数组引用类型,分别对应一下三种
Doll doll;
java.lang.Runnable myThread;
int[] intArray;
类类型和类引用类型的区分:
/**
- 变量beibei是“Doll类引用类型”的变量,而new语句创建的Doll对象属于“Doll类型”,(引用类型引用类类型)
*/
Doll beibei = new Doll("beibei");
基本类型和引用类型的区别:
- 基本类型待变简单的数据类型,比如整数,浮点数。引用类型所引用的实例能表示任意一中复杂的数据结构。
- 基本数据类型仅表示数据结构,引用类型不仅表示数据结构还包括操纵数据的行为。
- java虚拟机处理引用类型变量和基本类型变量的方式是不一样的:对于基本数据类型的变量,java虚拟机会为其分配数据类型实际占用的内存大小,而对于引用数据类型变量,他仅仅是一个指向堆区中某个实例的指针。
用new关键字创建对象
作用:
- 为对象分配内存,将对象的实例变量自动初始化为其变量类型的默认值
- 如果实例变量在声明时被显式初始化,那就把初始化值赋给实例变量
- 调用构造方法
- 返回对象引用
变量的作用域
变量更具作用域的不同可分为以下类型:
- 成员变量:在类中声明,作用域为整个类
- 局部变量:在方法的内部货方法的一个代码块中声明,作用域为{}内部
- 方法参数:方法或构造方法的参数,作用域为整个方法或构造方法
- 异常处理参数:和方法参数相似,做你哥用于为异常处理代码块
实例变量和静态变量
成员变量可分为两种:一种是用static修饰的,静态变量,一种是不用static修饰的实例变量
区别:
- 静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,==静态变量位于方法区,被类的所有实例共享。==静态变量可以直接通过类名被访问。静态变量的生命周期取决于类的生命周期
- 累的每个实例都有相应的实例变量。每创建一个实例,java虚拟机都睡为实例变量分配一次内存,实例变量位于堆区。实例变量的生命周期取决于实例的生命周期
局部变量的生命周期
java虚拟机的某个线程调用一个方法时,会为这个方法中的局部变量分配内存,结束调用一个方法时,会结束这个方法中局部变量的生命周期
局部变量使用时的限制:
- 不能别static、private、protected、public修饰
- 不能通过类名访问
成员变量和局部变量同名
在同一个作用域中不允许出现多个相同名字的变量
在一个方法内,可以定义和成员变量相同的局部变量或参数,此时,成员变量被屏蔽,需要访问成员变量时使用this关键字
将局部变量的作用域最小化可增加代码的可读性,可维护性,减少出错
对象的默认引用:this
当一个对象创建好后,java虚拟机会自动给它分配一个默认引用:this
this的使用场景:
- 在类的构造方法中,通过this语句调用类的另一个构造方法,有参构造中将参数赋给实例变量:this.color = color;
- 在一个方法中局部变量或参数和实例变量同名时,用this调用实例变量
- 在一个方法内访问当前实例的引用