Java编程思想阅读笔记(2-9章)

第二章 一切皆是对象

1…用引用操作对象

   如果想操作一个词或句子,可以创建一个string引用
   创建一个引用的同时,便进行初始化,String  s=”dhgui”
   字符串可以用带引号的文本初始化

2.使用new关键字创建对象
程序运行时有5个不同的地方可以存数据
(1) 寄存器,这是最好的存储区,位于处理器内部,但寄存器的数量有限,寄存器根据需求分配,不能直接控制也不能在程序中感觉到寄存器存在的任何迹象。
(2) 堆栈,位于通用RAM(随机访问存储器中)通过堆栈指针可以从处理器那里获得支持。堆栈指针向下移动,则分配新的内存,若向上移动,则释放内存。某些Java数据存储于堆栈中——特别是对象引用,但是Java对象并不存储于其中。
(3) 堆,一种通用的内存池(位于RAM区),用于存放所有Java对象
(4) 常量存储, 常量值通常直接存放在程序代码内部
(5) 非RAM存储 Java提供了对轻量级持久化的主持,而诸如JDBC和Hibrenate这样的机制提供了更复杂的对在数据库中存储和读取对象信息的支持
特例:基本类型
New将对象存储在“堆”里,故用new创建一个对象
Class对象决定了某一类对象的外观与行为
字段和方法
字段(数据成员)可以是任何类型的对象,可以通过其引用于其进行通信,也可是基本类型的一种,方法有时也称为成员函数
3.方法,参数和返回值
Java的方法决定了一个对象能够接收什么样的信息。方法的基本组成包括:名称,参数,返回值和方法基本形式。
返回类型描述的是在调用方法之后从方法返回的值。参数列表给出了要传给方法的信息的类型和名称。方法名和参数列表(它们合起来称为“方法签名”)唯一的标识初某个方法。
Java中的方法只能作为类的一部分创建。方法只有通过对象才能被调用,且这个对象必须能执行这个方法调用。通过对象调用方法时,需要先列出对象名,紧接着是句点,然后是方法名和参数列表
对象名.方法名(参数列表1,列表2,列表3);
4.参数列表
方法的参数列表指定要传递给方法什么样的信息。在参数列表中必须指定每个传递对象的类型及名字。
return关键字包括两方面:(1)“已经做完,离开此方法”。若返回类型是void,return关键字的作用只是用来推出方法

5.构建一个Java程序
可以使用关键字import来准确告诉编译器你想要的类型是什么,import指示编译器导入一个包,也就是一类库

第3章 操作符
Java操作符(+ - * / = == !=)
优先级:先乘除再加减
赋值:对一个对象进行操作时,真正操作的是对对象的引用,倘若“将一个对象赋值给另一个对象”,实际上及时将“引用”从一个地方复制到另一个地方。
如果想比较两个对象的实际内容是否相同,可以用特殊方法equals(),equals默认行为是比较引用。

第4章 控制执行流程
If-els是控制流程的最基本形式
“else if”只是一个else后面紧跟另一个新的if语句
While do –while 和for用来控制循环,有时将它们划分为迭代语句。语句会重复执行,直到起控制作用的布尔表达式得到“假”的结果为止。
在循环刚开始时,会计算一次布尔表达式的值:而在语句的下一次迭代开始前会在计算一次。
While和do while唯一的区别就是do while中语句中语句至少会执行一次,即便表达式第一次就被计算为false。
而在while循环结构中,如果条件第一次就为false,那么其中的语句根本不会被执行。在实际应用中,while比do while更常用一些
通过使用逗号操作符,可以在for语句内定义多个变量,但是它们必须具有相同的类型。
Return关键字的用途.
(1) 指定一个方法返回什么值(假设它没有void返回值)
(2) 它会导致当前的方法退出,并返回那个值
Break用于强行退出循环,不执行循环剩余的语句
Continue则停止执行当前迭代,然后退回循环起始处,开始下一处迭代
在while语句中
(1) 一般的continue会退回最内层循环的开头(顶部),并继续执行
(2) 带标签的continue会到达标签的位置,并重新进入紧接在那个标签后面的循环
(3) 一般的break会中断并跳出当前循环
(4) 带标签的break会中断并跳出标签所指的循环
重点是:在Java里需要使用标签的唯一理由就是因为有循环嵌套所在,而且想从多层嵌套中break或continue
Switch语句是实现多路选择(也就是说从一系列执行路径中挑选一个)的一种干净利落的方法,但他要求使用一个选择因子,并且必须是int或char那样的整数值。

第5章 初始化与清理
1.用构造器(constructor)确保初始化
可以为编写的每个类都定义一个initialize()方法。该方法的名称提醒你在使用其对象之前,应首先调用initialize().然而,这同时意味着用户必须必须记得自己去调用此方法。在Java中,通过提供构造器类的设计者可确保每个对象都会得到初始化。创建对象时,如果其类具有构造器,Java就会在用户有能力操作对象之前自动调用相应的构造器,从而保证了初始化的进行,构造器采用与类相同的名称。
2.方法重载
当创建一个对象时,也就给此对象分配到的存储空间取了一个名字。所谓方法则是给某个动作起的名字。通过使用名字,可以引用所有的对象和方法。
每个重载的方法都必须有一个独一无二的参数类型列表
3.默认构造器
又名“无参”构造器,是没有形式参数——它的作用是创建一个“默认对象”,如果写的类中没有构造器,则编译器会自动帮你创建一个默认构造器

4.this关键字
this关键字只能在方法内部使用,表示对“调用方法的那个对象”的引用。如果在方法内部调用同一个类的另一个方法,直接调用即可。

5.清理:终结处理和垃圾回收
finaliaze()方法:一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用其finalize()方法,并且在下一次垃圾回收动作发生时才会真正回收对象占用内存。对象可能不被垃圾回收,垃圾回收并不等于“析构”。

6.成员初始化
7.构造初始化
可以用构造器来进行初始化。在运行时刻,可以调用方法或执行某些动作来确定初值。但是无法阻止自动初始化的进行,它将在构造器被调用之前发生。
在类的内部,变量定义的先后顺序决定了初始化的顺序。即使变量定义散布于方法
定义之间,它们仍旧会在任何方法(包括构造器)被调用之前得到初始化。

数组只是相同类型的,用一个标识符名称封装到一起的一个对象序列化或基本类型数据序列。数组是通过方括号,下标操作符来定义和便用的,要定义一个数组,只需要在类型名后加上一对空方括号即可。

enum关键字,使得我们在需要群组并使用枚举类型集时,可以很方便地处理,在创建enum时,编译器会自动添加一些有用的特性,在很大程度上,可以将enum当做其他任何类来处理。Enum确实是类,并且具有自己的方法。

第6章访问权限控制

重构即重写代码,以使得它更可读,更易理解。
包内含有一组类,它们在单一的名字空间之下被组织在了一起。
当编写一个Java源代码文件时,此文件通常称为编译单元(有时也称为转译单元)。每个编译单元都必须有一个后缀名.Java,而在编译单元内侧可以有一个public类,该类的名称必须与文件的名称相同(包括大小写,但不包括文件的后缀名.Java)。每个编译单元只能有一个public类。
1.代码组织
当编译一个.Java文件时,在.Java文件中的每个类都会有一个输出文件,而该输出文件的名称与.Java文件中每个类的名称相同,只是多了一个后缀名.class。因此编译少量.java文件之后,会得到大量.class文件。如果用编译型语言编写程序,那么对于编译器产生一个中间文件(通常是一个object文件),然后再与通过链接器(用以创建一个可执行文件)或类库产生器的其他同类文件捆绑在一起的情况。
Java运行程序是一组可以打包并压缩为一个Java文档文件(JAR,使用Java的jar文档生成器)的.class文件,Java解释器负责这些文件的查找,装载和解释。
2.创建独一无二的包名
通过将.class的文件所在的路径位置编码成package的名称来实现的
3.对使用包名的忠告
无论何时创建这些包,都已经在给定包的名称的时候隐含的指定了目录结构。这个包必须位于其名称所指定的目录中。而该目录必须是在以class path开始的目录中可以查询到的
4.接口和实现
访问权限的控制常被称为是具体实现的隐藏,把数据和方法包装进类中,以及具体实现的隐藏,常共同被称为是封装。其结果是一个同时带有特征和行为的数据类型。

第7章 复用类
1.组合语法
将对象引用置于新类中使用
2.继承语法
当创建一个类时,总是在继承,因此除非已经明确指出要从其他类中继承,否则就是在隐式地从Java的标准根类object进行继承
在继承的过程中并不一定非得使用父类的方法。也可以在导出类中添加新方法,其添加方法与在类中添加任意方法一样,对其加以定义即可。
3.在组合与继承之间选择
组合技术通常同于想在新类中使用现有类的功能而非它的接口的这种情形
在继承的时候,使用某个现有类,并开发一个它的特效版本。通常,这意味着你在使用一个通用类,并为了某种特效需要而将其特殊化。
4.final关键字
可能使用到final的三种情况:数据,方法,类
继承和组合都能从现有类型生成新类型。组合一般是将现有类作为新类型底层实现的一部分来加以复用。
在使用继承时,由于导出类具有基类接口,因此它可以向上转型至父类,这对多态来讲至关重要。
在设计一个系统时,目标应该是找到或创建某些类。如果设计变得过于复杂。通常将现有类拆分为更小的部分而添加更多对象。
第8章 多态
多态通过分离做什么和怎么做,从另一个角度将接口和实现分离开来。多态不能够改善代码的组织结构和可读性,还能够创建可拓展的程序——那无论在项目最初创建时还是在需要添加新功能时都可以“生长”的程序。
“封装”通过合并特征和行为来创建新的数据类型。“实现隐藏”则通过将细节“私有化”把接口和实现分离开来。
方法调用绑定:将一个方法调用同一个方法主体关联起来被称为绑定。若在程序执行前进行绑定(如果有的话,由编译器和连接程序实现),叫做前期绑定。它是面向过程的语言中不需要选择就默认的绑定方式。
后期绑定:在运行时根据对象的类型进行绑定。后期绑定也叫做动态绑定或运行时绑定。
通过组合和继承方法来创建新类时,永远不必担心对象的清理问题,子对象通常都会留给垃圾回收器进行清理
用继承表达行为间的差异,并用字段表达状态上的变化。

第9章 接口
接口和内部类为我们提供一种将接口与实现分离的更加结构化的方法。
创建类是希望通过这个通用接口操纵一系列类。包含抽象方法的类叫做抽象类。如果一个类包含一个或多个抽象方法。该类必须被限定为抽象的。(否则,编译器就会被报错)
一个接口表示:“所有实现了该特定接口的类看起来都像这样”。任何使用某特定的代码都知道可以调用该接口的方法。接口被用来建立类与类之间的协议。
通过继承来拓展接口,可以很容易的在接口中添加新的方法生命,还可以通过继承在新接口中组合数个接口。这两种情况都可以或的新的接口。
接口可以嵌套在类或其他接口中。接口是实现多重继承的途径,而生成遵循某个接口的对象的典型方式就是工厂方法设计模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值