MyOwnWorld

类中的成员变量和局部变量。

成员变量 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方法。

在setter中写上自己想要的逻辑可以让外界对brand和price的操作受限制,让成员变量更安全

这个是没有经过private修饰的代码。

外界直接可以操作brand和price,这样一来,不论是否合法的操作都会影响这两个成员变量,代码更危险

前者也就是实现了我们想要的封装,后者太low了,不安全。

当然这里的private也只是封装的其中一种手段,封装还有其他的形式,例如:将重复的代码封装到一个方法里面;将某些属性封装到一个类里面。


这段代码展示了封装的好处

下面要从封装说到this了。我们在写java代码时讲究见名知意。


能看懂吧,这是声明了一个成员变量,又想set呢
这里的aaa有点尴尬,降低了代码的可读性

为了提升代码的可读性,因此有时候成员变量和局部变量会相同,但是如果将上面代码中的 this.brand = brand 改为 brand = brand 这样如果外界想要访问brand就会造成空指针错误。因为 brand = brand 是局部变量在为局部变量赋值,我们想要的是局部变量为成员变量赋值。this的功能是,谁调用我,我就代表谁。

为什么由this能联想到构造方法呢?因为使用构造方法,我们惯常构造一个无参数的和一个全参数的,构造全参数的是离不开this关键字。构造方法是为new而生的,当我们执行 new sth 时就会调用构造方法。构造方法是为了给成员变量和成员方法初始化。

标准类:::

标准类又被称为 JavaBean

包括以下几个特点:

1.属性都要private'修饰, 提供setXxx和getXxx

2.类必须是public修饰

3.提供满参和无参构造

这是今天总结的内存图:

你可能感兴趣的:(MyOwnWorld)