20180903第二周周记

类,对象和包
一、结构化编程和面对对象编程
1.结构化编程
(1)编写一个主过程来启动程序流程,随后根据程序流程走向,调用想要的其它过程
(2)围绕着程序要解决的任务来设计
(3)采用流程图和自顶向下的方法设计
2.面向对象编程
(1)采用流程图和自顶向下的方法设计
(2)围绕着程序问题域中的对象来设计
(3)面对对象的解决方法:
① 找对象:对象可以是问题域中出现的任何人、事物(名词抽离法)
② 找到对象后,编写一个类来描述每个对象的属性和行为
③ 万物皆对象,对象因我的关注而存在

二、编写一个Java类
Java中的类用关键字class声明。Java源代码文件中只能包含一公用(public)类,文件名必须与公用类的类名相同,文件扩展名为“.java”。
在一个.java文件中我们可以声明多个类,但是只有一个类可以为声明为public。源代码文件的文件名必须与公用类的类名匹配。如果在源代码文件中没有公用类,文件名可以是任意的。
1.类
(1)类是具有相同属性和行为的一组对象的抽象,在软件系统中,用类模拟现实生活中的实体
(2)类和对象的关系:类是对象的抽象,对象是类的实例。属于引用数据类型
(3)类和属性的关系:类拥有属性

2.向类中添加成员变量(全局变量)
成员变量的组成
1)访问修饰符:public、private、protected,如果省略访问修饰符,将使用默认访问修饰符
2)数据类型
3)成员变量名称:必须是一个有效的标识符,后面用分号结束

3.向类中添加方法
一个类的行为成为相关类中的方法
① 访问修饰符
② 返回类型
③ 方法名称,必须是一个有效的标识符
④ 参数列表(形参和实参)
⑤ 方法的定义

三、实例化对象
1.创建好了类,然后通过类产生对象
① 引用数据类型赋的初值是long,基础数据类型赋的初值是null
② 引用数据类型不能强制转换为其他数据类型
2.产生对象的原因
类只是模板,对象才是真正的具体存在
3.对象的销毁
① 产生了对象,用完后要关心它的摧毁
② 对象没有任何引用,具备垃圾回收的条件
③ 主动通知垃圾回收机制回收一个对象,只需要:对象=null

四、访问对象的属性和方法
使用new关键字产生对象。使用new关键字实例化一个对象时,系统为会该类中的每个成员变量和方法分配内存。如果要访问该对象的成员变量和方法,就需要使用点运算符来。

对象的行为
一、方法调用栈
1.当一个方法被调用时,将导致控制流程跳转到被调用的方法,然后,控制流程执行方法中的语句
2.被执行的方法可能会调用其它方法,导致控制流程跳转到其它方法
3.所有的方法调用都维护在一个称为调用栈的结构中。当前正在执行的方法位于调用栈的顶部
4.当前方法执行完成后,就从调用栈的顶部移除,控制流程返回栈中的前一个方法。当一个新方法被调用后,这个新的方法就放在调用栈的顶部。
5.如果一个Java程序是多线程应用程序,那么它可以有多个调用栈

二、调用的方法
当一个方法正在执行时,会发生三种情况
① 方法返回一个值。在这种情况下,一个基本数据类型或引用类型被传回给方法的调用者。
② 方法不返回一个值。在这种情况下,返回值被声明为void。
③ 方法抛出一个异常给方法的调用者

三、方法签名
1.方法的签名包括方法名、参数列表、返回值的数据类型等信息
2.方法的签名不包含方法体内的任何语句。签名只是方法的声明部分。
3.如果一个方法不需要使用throws关键字声明任何异常,那么签名的这部分就可以不写
4.出现的顺序
① 访问修饰符
② 方法名
③ 形参列表
④ 抛出的异常列表

四、形参与实参
1.一个方法的签名包括一个形式参数(Parameter)的列表,形式参数列表用于声明传递给形式参数的数据称为实际参数传递到方法中的数据的类型
2.当方法被调用时,实际参数必须传递给形式参数列表中的每个形式参数
3.传递给形式参数的数据称为实际参数

五、按值调用
1.当实际参数传递给形式参数时,实际参数的数据被复制给形式参数
2.在方法调用之间复制数据的过程称为按值调用
实际参数如果是基本数据类型和string类型,在被调用的方法内部针对形不参做任何改变,实际参数所对应的变量不会改变。但是如果是其他引用数据类型,在被调用的方法内部针对形参做了改变,实际参数也跟着改变。
3.方法重载

六、方法重载
1.相同的行为,不同的实现,根据不同的参数类别来进行区分
2.特点
① 参数个数可能不一样,参数的类型可能不一样,参数的顺序也可能不一样
② 方法名一样
③ 方法参数一样,返回类型不一样,不是重载

引申:

七、构造器
1.语法特点
① 满足的条件:造器的名称必须与类名相同
② 构造器不能声明返回值,也不能返回void
③ 可以不写,编译器自动会生成一个公共五参的构造器
④ 构造器如果显示的编写了,编译器就不会再产生构造器
2.作用:产生对象
3.构造器产生对象的步骤
① 如果其他程序使用new,构造器()调用构造方法,那么构造器就会失去内存中申请内存空间,用于存放对象
② 去申请的内存空间中为属性分配对应的存储空间
③ 属性初始化,引用为空,基础为0,布尔为false
④ 执行构造器中编写的代码

4.定义有参构造的潜规则:在进行有参构造前,先定义无参构造

5.在构造器中使用this:只能放在构造器的第一行
6.访问器(get)和构造器(set)

八、内存分布
栈:局部变量,方法参数,方法返回地址
堆:创的对象(new)全局变量(属性)
程序计数器: 代码执行顺序,方法栈
本地方法区: api接口
方法区:常量池(π,字符串,(不可改变,所以是常量)final修饰的(不能改变,不能继承)编译后的代码放在代码区)

Array
一、数组的概念
1.数组是储存在一个连续的内存块中的元素的集合
2.数组中每个元素必须是相同的数据类型,并通过索引分区
3.数组中的第一个元素的索引为0
4.数组创建的步骤
(1)声明对数据类型的引用,数组的声明方式,根据其他的引用数据类型声明变量一模一样
(2)使用new关键字初始化数组,并指定数组的大小
5.数组的特点
(1)数组中只能存放相同类型的数据
(2)数组定义好后,内存中元素的存放是连续的
(3)数组的大小,需要在定义的时候,就固定好,一旦确定,将无法再次修改

二、访问数组
数组中的元素通过用对该数组的一个引用、一个用于描述我们要访问数组哪一个元素的整型索引值来访问。数组的第一个元素的索引为0,第二元素的索引为1,依此类推。

三、数组的长度
1.数组内存空间是连续的,分配空间是必须知道数组长度
2.不能超过数组所分配的空间,否则出现异常提示
3.使用length代表数组大小

四、数组初始化
1.在定义数组变量时,即给数组声明长度以及确定内容
2.依旧需要在底层,先通过new关键字,来创建一个数组,然后使用循环来完成数组赋值
3.适用于小数组,内容不多的情况下,推荐使用
4.有引用但是没有名字的对象,取名为匿名对象

五、多维数组
1.当初始化二维数组时,必须用两个int类型整数来指定行数和列数
2.二维数组中,(0,0)代表起始位置
3.当初始化二维数组时,必须用两个int类型整数来指定行数和列数
4.在一个二维数组中的每一个元素需要两个索引值来访问
5.使用二维数组通常会要用到嵌套循环。

六、数组的复制
6.数组的大小是固定的,需要创建新的数组并将旧的数组的元素复制到新的数组中
7.可以使用for循环
8.也可以使用system静态方法arraycopy()

七、java文档工具javaDoc
9.获取Java源代码中的注释,并生成HTML页面。这就鼓励开发者在代码中添加注释,因为产生的HTML网页可以让同事和其他需要了解一个类的人所用,并且不需要看实际的源代码
10.java标记
11.@author:表示源代码的作者名称。
12.@depracated:表示随着程序版本的提升,当前类成员已经过期,仅为了保证兼容性依然存在,以此告之开发者不应再用这个API。
13.{@docRoot}:代表当前页面要输出到的针对于根目录的相对路径。
14.@exception:被方法所用,列出抛出的异常。
15.{@link 包.类#成员的链接文字}:创建一个对特定类成员的链接。
16.{@linkplain 包.类#成员的链接文字}:如{@link}相同,但是用纯文本字体代替了代码字体。
17.@param:用于描述方法的形式参数。
18.@return:用于描述方法的返回值。
19.@see:创建一个“参见”XX条目的链接,如类、方法、变量等。
20.@since:描述成员存在或改变时的版本号。
21.@serial、@serialField和@serialData:用于串行化用途。
22.@throws:与@exception标记相同。
23.{@value}:用于显示常量静态字段的值。
24.@version:描述类的软件版本。

猜你喜欢

转载自blog.csdn.net/Lsy_Coder/article/details/82352651
今日推荐