类是对某一类事物的抽象描述,而对象用于表示现实中该类事物的个体
局部变量和成员变量区别
区别一:定义的位置不同
定义在类中的变量是成员变量
定义在方法中或者{}语句里面的变量是局部变量
区别二:在内存中的位置不同
成员变量存储在堆内存的对象中
局部变量存储在栈内存的方法中
区别三:生命周期不同
成员变量随着对象的出现而出现在堆中,随着对象的消失而从堆中消失(gc垃圾回收机制)
局部变量随着方法的运行而出现在栈中,随着方法的弹栈而消失
区别四:初始化不同
成员变量因为在堆内存中,所有默认的初始化值
局部变量没有默认的初始化值,必须手动的给其赋值才可以使用。
可以在成员变量名前面加上this.来区别成员变量和局部变量
引用数据类型:
类、接口类型、数组类型、枚举类型、注解类型。
引用类型数据和基本类型数据的区别:
基本数据类型在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上。调用函数是函数里的形参 就是复制这些变量的值 以后对形参值的变化 不会影响到原来变量的值
引用数据类型在被创建时,首先要在栈上给其引用(句柄)分配一块内存,而对象的具体信息都存储在堆内存上,然后由栈上面的引用指向堆中对象的地址。调用函数 函数里的形参 就是复制这些变量的值的地址 当对形参的值 进行修改的时候 就等于是对 这些变量的值 进行修改~ 所以会影响到原来变量的值
堆主要用来存放对象的,栈主要是用来执行程序的