类中的成员变量和局部变量。
成员变量 is different from 局部变量,可以从以下几个方面来甄别。
在类中的位置不同:局部变量在类内方法内部,成员变量在类内方法外部。
在内存中的位置不同:(嗯呐,这里自己要好好画一张图,描述java中的内存空间)局部变量在栈中,成员变量在堆中。
二者生命周期不同:局部变量随着方法的调用而产生,随着调用结束而消失。成员变量的生命周期随着对象的加载而产生,随着对象的消失而消失。
二者的初始值的状态不同:堆中默认会赋初值,所以成员变量有初始值,局部变量没有初始值。
初始值,Fuck,it's an amazing design.
String-->null
int/long-->0
float/double-->0.0
char-->'\u0000'即null
引用类型-->null
private---->封装---->this---->构造方法
private翻译过来是私有的,但是注意强调一下是什么私有的?类私有的,类私有的,类私有的……为什么要引用private这个关键字呢?其实这个问题不好,可写成为什么要引入权限修饰符呢?是为了更好地实现封装。好的来看一下private有多重要。
这个是封装好的代码,使用private修饰成员变量,对外提供getter和setter方法。
这个是没有经过private修饰的代码。
前者也就是实现了我们想要的封装,后者太low了,不安全。
当然这里的private也只是封装的其中一种手段,封装还有其他的形式,例如:将重复的代码封装到一个方法里面;将某些属性封装到一个类里面。
下面要从封装说到this了。我们在写java代码时讲究见名知意。
为了提升代码的可读性,因此有时候成员变量和局部变量会相同,但是如果将上面代码中的 this.brand = brand 改为 brand = brand 这样如果外界想要访问brand就会造成空指针错误。因为 brand = brand 是局部变量在为局部变量赋值,我们想要的是局部变量为成员变量赋值。this的功能是,谁调用我,我就代表谁。
为什么由this能联想到构造方法呢?因为使用构造方法,我们惯常构造一个无参数的和一个全参数的,构造全参数的是离不开this关键字。构造方法是为new而生的,当我们执行 new sth 时就会调用构造方法。构造方法是为了给成员变量和成员方法初始化。
标准类:::
标准类又被称为 JavaBean
包括以下几个特点:
1.属性都要private'修饰, 提供setXxx和getXxx
2.类必须是public修饰
3.提供满参和无参构造
这是今天总结的内存图: