1.14 HeadFirstJava 前六章读书笔记总结

前六章介绍了一些java基础的概念,有c/c++基础的话就但觉很简单

 

读书笔记:

0

0.1 序

学习的方法: 形成深入的

   · 可视化    · 深入思考  ·情绪深入

 

1 基本概念

 

1.1 工作方式

源代码 -》 编译器 -》 输出 -》 虚拟机

  · 虚拟机(JVM)指可以读取并执行字节码的虚拟Java机器

1.2 java简史

  Java 1.02 : 250个类 ,bug很多 ,applet是重点

  Java 1.1  : 500个类,功能更强,适用于图形化界面

  Java2(1.2-1.4): 2300个类,可达到平台原始速度,可书写企业级应用程序 ,有3个版本:J2ME ,J2SE ,J2EE

  Java5.0  : 3500个类 ,更加容易开发,语言本身有重大优化

 

  · java1.02称为java1 ,java1.2,1.3, 1.4 称之为java2 ,java1.5称之为java5(或 Tiger)

 

1.3 java程序结构

 

 

 

 

如图 ,类存在于源文件之中 ,方法存在于类之中 ,语句存在于方法之中

· 源文件 (.java文件):带有类的定义,类表示程序的组件,类的内容必须在花括号(  { } )里面

. 类 :带有一或多个方法,方法必须在类内声明

· 方法 :一组指令的集合,可以看做一个函数或者一个过程

 

1.4 带有main( ) 的类

·虚拟机运行时会寻找命令列所指定的类,然后锁定到一个特定的方法,这个方法就是main( )方法 虚拟结会执行这个方法中的所有指令。

· Java中所有东西都会属于某一个类,源文件(.java)经过编译后会形成类文件(.class),真正被执行的是 执行程序就是让虚拟机去加载类,并执行类的main( )方法

· 一个程序只需要一个main( ),并不是所有类都带main( )

1.5 循环语句

·有while ,do-while ,for三种形式 ,同c语言

.与c的区别 ,循环条件的测试结果必须boolean值,boolean和integer类型并不相容

例如 :

int x = 1;

while(x){  }  //false ,integer值不能做条件结果

 

Boolean isHot = true;

While( isHot ){ } //true,boolean可做条件测试结果

 

1.6条件语句

.注意点同循环语句

·打印输出方法system.out.print 与 system.out.println 区别:

println输出末尾会换行

 

2 类与对象

2.0 引例:面向对象的优点

·编程思想:

面向过程:根据要求编写过程

面向对象:构建对象,编写相关方法

 

·当要求更新,需要加入有特定方法的对象时…

·面向过程:修改已有代码,添加特判

·面向对象:加入新的类,不用修改已有部分(可扩展性)

 

·对于不同对象的重复过程(方法)…

·面向过程:本身就是以过程为主编写的,所以不会有重复,但当加入新的对象时可能要对已有过程进行添加修改

·面向对象:对于各对象的共同方法可利用继承特性减少代码的重复,对于特定过程可利用覆盖特性完成方法的改变和延伸

 

2.1 类与对象的关系

·类不是对象,而是同一类对象的模型

·对象可以当做类的实例,它有用来表示状态的实例变量(instance variable)和表示执行动作的方法(methods),但这些都是类设计的一部分

 

2.2 创建对象

·一般创建类时会需要两个类,一个是用来操作的类,另一个是该类的测试类其请名称一般为“受测类 +  TestDrive”,而main()在TestDrive类中,并在其中创建对象并存取对象的变量和方法:

 

 

 

 

· main()的用途:

·测试真正的类

·启动Java程序

  真正的java程序重点在让对象交互(相互调用方法)来完成目的,而不是主要在main( )中完成

 

2.3其他与补充

·全局变量

全局(global)变量是违反面向对象特性的,在需要全局变量时(例如可被所有对象读取的方法和常量),常用public和static组成类似global的修饰符,这些在第十章进行讨论

 

·java程序与提交

Java程序是由一组类组成的,其中一个类带有main( )方法。如果用户没有运行java程序的虚拟机的话则需要将之一并提交给用户。

对于数量庞大的类可以放在不同文件中,然后一并放在依据pkzip格式存档的。Jar文件中,jar文件其中可以引入一个简单的文字文件mainfest来定义启动应用程序的main( )方法。

 

 

3 变量:primitive主数据类型和引用

3.1 primitive主数据类型

有六种: byte ,short ,int ,long ,float ,double

 

 

 

 ·除非小数后加f,否则所有带小数点的值都会被当double处理

· int x = y+32 这样赋值是可以的

·变量命名规则: 1.只能用下划线,字母,或符合$开头 2.数字不能开头 3.不能用保留关键字

 

3.2 引用(reference)

·对象并没有变量,而只有引用(reference),引用类似于指针,只有虚拟机知道如何通过引用来取得该对象

·我们不用知道引用变量占多少字节,一台虚拟机上所有的引用大小是相同的。

·引用变量不能参与计算,这也是同C语言中指针的区别。

··没有引用任何对象的引用值是null

·堆空间

如果一个对象没有被任何引用指向后将会无法存取,其空间会被抛弃且回收

 

3.3 数组

·数组是对象。就算元素类型是主数据类型,数组也依然是对象

·对象的数组,数组元素是引用,要记得赋值(初始是null)

 

4 方法操作实例变量

 

4.1行为和状态

·同一类的不同对象可以根据不同的状态(实例变量),来产生不同的行为(方法)

 

4.2 方法的形参和实参

·同c++

 

4.3 参数的传递

·java的参数是通过值传递的,也就是拷贝传递

 

4.4 封装

·同c++,封装是java的良好特性。

·最常见的封装方法就是用公有的getter和setter方法来存取私有的实例变量。

·setter可以对不正常的参数进行修改,退回,或者抛出异常,getter也是同样的。这样做的好处是可以避免程序修改的时候修改其他部分的程序。

 

4.5 实例变量的初始值

·就算没有初始化或者调用setter,实例变量还是有初始值的:

Integer:0   float:0.0  boolean: false   reference:null

 

4.6 变量的比较

·实例变量与局部变量

·实例变量在类内声明,而局部变量在方法内声明

·局部变量没有默认初始值,如果没有初始化就会报错

·方法的参数实际上也是局部变量,但在传参过程就完成其初始化的过程,所以一般不会报错

 

·== 与 equal( )

·运算符==可以判断两个primitive主数据类型是否相等 和 两个引用是否指向同一个对象

·若比较两个对象之间是否相等则需要调用equal( )方法

 

6 简单java程序设计

设计流程:

   6.1高层设计

   ·了解设计流程要求,可以用流程图来表示

   ·用面向对象的方法思考需要哪些对象,注意要关注流程中出现的事物,而非动作

 

6.2 极限编程(XP)

一种软件开发思想,这里主要应用其这样一种思想:

在创造一个类之前先写其测试码,通过编写测试码去了解该类的具体设计需要哪些实例变量和方法

 

代码顺序:伪代码 -> 测试码 -> 真实代码

posted @ 2020-01-15 00:24  易如鱼  阅读(316)  评论(0编辑  收藏  举报