传智播客-刘意-java深入浅出精华版学习笔记Day06

二维数组:一维数组的数组

定义格式:

数组类型[][] 变量名 = new 数组类型[m][n](m个一维数组*每个一维数组有n个元素)

数组类型[] 数组名[] = new 数组类型[m][n]

【一个值得注意的小细节:输出数组名本身,前面有几个[,就代表这是几维数组】

二维数组的存储方式:

动态定义方式1:

传智播客-刘意-java深入浅出精华版学习笔记Day06_第1张图片

动态定义方式2:

传智播客-刘意-java深入浅出精华版学习笔记Day06_第2张图片

静态定义方式:

传智播客-刘意-java深入浅出精华版学习笔记Day06_第3张图片

面向对象:

万事万物皆对象。

面向对象的思想:

面向过程:就是面向着具体的每一个步骤和过程,把它们完成然后相互调用,完成需求(C语言)。强调每一个功能的步骤。

面向对象:当需求有更改的可能性时,将步骤和功能相似的封装在一起。用或者更改的时候,找到相应的封装就可以了。强调对象,然后由对象去调用功能。

举例:

1、 去买电脑。面向过程:我了解电脑—了解我自己的需求—找对象的参数信息—去中关村—讨价还价—买回电脑。

                    面向对象:我知道我要买电脑—班长去给我买—班长买回来了

2、 洗衣服:面向过程:脱衣服—放盆里—放洗衣粉—加水—搓一搓—漂净—沥水—晾衣服

        面向对象:脱衣服—找一个全自动洗衣机—放进去—按键—晾衣服

从这几个例子中,似乎面向对象,指的是一种“遇到问题,去找拥有解决这个问题属性的对象”而不是“一步步来做”的思想。

其他例子:大象装冰箱

面向对象的特征:创建对象,使用对象,指挥对象

面向对象设计:管理和维护对象之间的关系

面向对象的特征:封装/继承/多态

 

现实生活中的事物是如何被描述的呢?

属性:该事物的描述信息;行为:该事物能够做什么

成员变量:类中/方法外;成员方法:和以前的一样,但是把static去掉

类:是一组相关的属性和行为的集合。是一个抽象的概念。

对象:是该类事物的具体表现形式。具体存在的个体。

举例:

女神:类

菲菲小姐:对象

定义一个类,其实就是定义该类的成员变量和成员方法。

传智播客-刘意-java深入浅出精华版学习笔记Day06_第4张图片传智播客-刘意-java深入浅出精华版学习笔记Day06_第5张图片

调用一个类,就是对它创建对象。

类是一个抽象的方法。只有通过对象才能调用。

格式:

类名:对象名 = new 类名();

使用成员变量:对象名.变量名

使用成员方法:对象名.方法名

根据demo,上面这两个都是new之后可以直接使用的,不用搞别的。

【注意:当我们编译一个java文件时,它里面所有的类都会被编译。因此同一个java文件包括不同的类时不需要执行多次。】

方法区:放置class和它的相关内容。

当用new关键字创建一个对象时,是在堆里开辟了一块内容,里面有我们需要的成员变量和成员方法在方法区的地址。当我们调用成员方法时,方法被调用进入栈堆。用完方法就消失

传智播客-刘意-java深入浅出精华版学习笔记Day06_第6张图片

为什么这个在栈里那个在堆里,我也不太清楚,先留下这个问题。

可能是因为变量是每一个对象独有的,但是方法是重复使用的。

 

下面我们来看一个有趣的例子。

传智播客-刘意-java深入浅出精华版学习笔记Day06_第7张图片

传智播客-刘意-java深入浅出精华版学习笔记Day06_第8张图片

从图中可以看出,修改p3,和修改p1,是完全一样的。

由此我们可以考虑这样一种概念(下面这些全是我自己的理解,可能过一段时间回来发现是错的),类,是一个抽象的东西,而对象名,类似于一个指针,也就类似于数组中的数组名(数组实例其实也是new的对象)。对象名其实代表的就是它所指向的那个东西,在堆中的地址。在上图中,p1和p3指向的东西是相等的,它们出现修改时,也是类似于你喝水和我喝水都是喝水的关系。

也可以总结为下面两句话:

基本类型中,形式参数的改变不影响实际参数。

引用类型中,形式参数的改变直接影响实际参数。

你可能感兴趣的:(传智播客-刘意-java深入浅出精华版学习笔记Day06)