随笔分类 -  Java

摘要:2012-05-04163-170/913Java编程思想第四版——第二十一天7.3 代理Java没有提供对代理的直接支持,这是继承与组合之间的中庸之道。讲一个成员对象置于所要构造的类中(就像组合),但与此同时在新类中暴露了该成员对象的所有方法(就像继承)。7.4 结合使用组合和继承同时使用组合和继承是很常见的事。虽然编译器强制初始化基类,并且要求在构造器起始处就要这么做,但是它并不监督必须将成员对象也初始化,这一点需要自己时刻注意。7.4.1 确保正确清理注意对基类清理方法和成员对象清理方法的调用顺序,以防某个子对象依赖于另一个子对象情形的发生。一般而言,所采用的形式应该与C++编译器在其析 阅读全文
posted @ 2012-05-04 12:58 凌紫冥 阅读(194) 评论(0) 推荐(0)
摘要:2012-05-03158-163/913Java编程思想第四版——第二十天第7章 复用类复用代码是java众多引人注目的功能之一。Java中所有事物,问题解决都是围绕着类展开的。可以通过创建新类来服用代码,而不必再重头开始编写,可以使用别人业已开发并调试好的类。此方法的窍门在于使用类而不破坏现有程序代码。两种达到此目的的方法:第一种:只需在新的类中产生现有类的对象,称为组合。复用了现有程序代码的功能,而非它的形式。第二种:按照现有类的类型来创建新类,无需改变现有类的形式,采用现有类的形式并在其中添加新代码,称为继承。编译器可以完成其中大部分工作。继承是面向对象程序设计的基石之一。组合和继承, 阅读全文
posted @ 2012-05-03 13:46 凌紫冥 阅读(252) 评论(0) 推荐(0)
摘要:2012-05-02149-158/913Java编程思想第四版——第十九天1.1 java访问权限修饰词public、protected和private这几个java访问权限修饰词在使用时,是置于类中每个成员的定义之前的——无论它是一个域还是一个方法。每个访问权限修饰词仅控制它所修饰的特定定义的访问权。如果不提供任何访问权限修饰词,则意味着它是“包访问权限”。因此,无论如何,所有事物都具有某种形式的访问控制权限。6.2.1 包访问权限一个编译单元(即一个文件),只能隶属于一个包,所以经由包访问权限,处于同一个编译单元中的所有类彼此之间都是自动可访问的。取得对某成员的访问权的唯一途径是:使该成 阅读全文
posted @ 2012-05-02 11:09 凌紫冥 阅读(247) 评论(0) 推荐(0)
摘要:2012-04-27142-149/913Java编程思想第四版——第十八天第6章 访问权限控制访问控制(或隐藏具体实现)与“最初的实现并不恰当”有关。重构即重写代码,以使得它更可读、更易理解,并因此而更具可维护性。面向对象设计中需要考虑的一个基本问题:如何把变动的事物与保持不变的事物区分开来。访问权限从最大到最小:public、protected、包访问权限(没有关键词)、private。C语言访问事物不受任何限制。访问权限因类是存在于一个相同的包,还是存在于一个单独的包而受到影响。理解访问权限修饰词的全部含义,要学习如何将类库构件置于包中。1.1 包:库单元包内包含有一组类,它们在单一的名 阅读全文
posted @ 2012-04-27 13:13 凌紫冥 阅读(242) 评论(0) 推荐(0)
摘要:2012-04-25138-142/913Java编程思想第四版——第十七天5.9 枚举类型Java SE5添加了一个小特性,enum关键字,它使得在需要群组并使用枚举类型集时,可以很方便的处理。例子, 一个Spiciness的枚举类型:public enum Spiciness{ NOT, MILD, MEDIUM, HOT, FLAMING}枚举的实例是常量,都用大写字母表示。(多个单词,用下划线隔开)使用enum,需要创建一个该类型的引用,并将其赋值给某个实例:public class SimpleEnumUse{ public static void main(String[] arg 阅读全文
posted @ 2012-04-25 11:19 凌紫冥 阅读(172) 评论(0) 推荐(0)
摘要:2012-04-24131-138/913Java编程思想第四版——第十六天5.8 数组初始化数组只是相同类型的、用一个标识符名称封装到一起的一个对象序列或基本类型数据序列。数组是通过方括号下标操作符【】来定义和使用的。定义一个数组,只需在类型名后加上一对空方括号即可:int[] a1;。方括号也可以置于标识符后面:int a1[];。两种格式含义一样,后一种格式符合C和C++程序员的习惯。前一种格式或许更合理,表明类型是一个int型数组。编译器不允许指定数组的大小。所有数组(无论它们的元素是对象还是基本类型)都有一个固有成员,可以通过它获知数组内包含了多少个元素,但不能对其修改。这个成员就是 阅读全文
posted @ 2012-04-24 13:51 凌紫冥 阅读(229) 评论(0) 推荐(0)
摘要:2012-04-23121-131/913Java编程思想第四版——第十五天5.5.3 终结条件通常不能指望finalize(),必须创建其他的“清理”方法,并明确的调用它们。finalize()另一个用法,不依赖于每次都要对finalize()进行调用,这就是对象终结条件的验证。5.5.4 垃圾回收器如何工作垃圾回收器提高对象的创建速度有明显的效果。Java从堆分配空间的速度,可以和其他语言从堆栈上分配空间的速度相媲美。C++的堆——院子,每个对象负责管理自己的地盘,对象被销毁,地盘被重用。Java虚拟机,堆的实现,像一个传送带,每分配一个新对象,就往前移动一格。这意味着对象存储空间的分配速 阅读全文
posted @ 2012-04-23 17:16 凌紫冥 阅读(215) 评论(0) 推荐(0)
摘要:2012-04-19118-121/913Java编程思想第四版——第十四天5.4.1 在构造器中调用构造器为一个类写了多个构造器,有时想在一个构造器中调用另一个构造器,以避免重复代码,可用this关键字做到这一点。通常写this的时候,都是指这个对象或者当前对象,而且它本身表示对当前对象的引用。在构造器中,如果为this添加了参数列表,就有了不同的含义,这将产生对符合此参数列表的某个构造器的明确调用,这样,调用其他构造器就有了直接的途径。可以用this调用一个构造器,但不能调用两个。且必须将构造器调用置于最起始处,否则编译器会保错。this.s = s,this.s代表数据成员,s代表参数s 阅读全文
posted @ 2012-04-19 11:28 凌紫冥 阅读(179) 评论(0) 推荐(0)
摘要:2012-04-18108-118/913Java编程思想第四版——第十三天第5章 初始化与清理不安全的编程方式成为编程代价高昂的主因之一。初始化和清理(cleanup)是涉及安全的两个问题。很多C程序的错误都源于程序员忘记初始化变量。清理也是一个特殊问题,使用一个元素时,容易把它忘记,这个元素占用的资源一直得不到释放,导致资源用尽(尤其是内存)。5.1 用构造器确保初始化Java中,通过构造器,类的设计者可确保每个对象都会得到初始化。调用构造器是编译器的责任,初始化期间自动调用构造器。Java沿用C++的解决方案,构造器采用与类相同的名称。new Rock()创建对象时,为对象分配存储空间, 阅读全文
posted @ 2012-04-18 12:14 凌紫冥 阅读(187) 评论(0) 推荐(0)
摘要:2012-04-09102-108/913Java编程思想第四版——第十二天4.6 break和continue在任何迭代语句的主体部分,都可用break和continue控制循环的流程。Break用于强行退出循环,不执行循环中剩余的语句。Continue停止执行当前的迭代,退回循环起始处,开始下一次迭代。通常,只有在不知道中断条件何时满足时,才需要这样使用break。编译器将while(true)和for(;;)看做是同一回事,具体选用哪个取决于编程习惯。4.7 臭名昭著的gotoGoto起源于汇编语言的程序控制:若条件A成立,则跳到这里,否则跳到那里。如果阅读由编译器最终生成的汇编代码,就 阅读全文
posted @ 2012-04-09 11:01 凌紫冥 阅读(157) 评论(0) 推荐(0)
摘要:2012-04-05Java编程思想第四版——第十一天今天因为想到一个丢色子的问题,所以没有看书,这个问题其实也挺简单的,就是很长时间没接触这些基础的东西,刚开始连数组都忘记怎么去创建了。不过,稍微回忆了下,还是解决了这个题目,感觉还是有点收获的。清明节放假了三天,都没看过书,这样真说不过去,必须抓紧时间了啊。好了,下午来任务了,先把活干完再说了。放假对于自己,不要再当作放假了。还是有很多不如意的地方,等待以后再来检查这些代码吧。代码:package com.wu;import java.text.DecimalFormat;public class SeZi { public static 阅读全文
posted @ 2012-04-05 12:22 凌紫冥 阅读(204) 评论(0) 推荐(0)
摘要:2012-03-3197-102/913Java编程思想第四版——第十天第4章 控制执行流程就像有知觉的生物一样,程序必须在执行过程中控制它的世界,并做出选择,在java中,你要使用执行控制语句来做出选择。Java使用了C的所有流程控制语句。关键字:if-else、while、do-while、for、return、break以及选择语句switchJava不支持goto语句,虽然可以进行类似goto的跳转,但比起典型的goto,有了很多限制。4.1 true和false所有条件语句都利用条件表达式的真或假来决定执行路径。Java不允许将一个数字作为布尔值使用,C和C++中允许(真是非零,假使 阅读全文
posted @ 2012-03-31 12:06 凌紫冥 阅读(229) 评论(0) 推荐(0)
摘要:2012-03-3080-97/913Java编程思想第四版——第九天3.9 直接常量一般来说,使用直接常量,编译器可以准确的知道要生成什么样的类型,但有时候却是模凌两可的,这种时候必须对编译器加以适当的指导,用与直接量相关的某些字符来额外增加一些信息。直接常量后面的后缀字符标志了它的类型:大写(或小写)的L,代表long(使用小写字母l容易造成混淆,因为它看起来很像数字1),大写(或小写)字母F,代表float,大写(或小写)字母D,则代表double。十六进制数适用于所有整数数据类型,以前缀0x(或0X),后面跟随0-9或小写(或大写)的a-f来表示。将一个变量初始化超出自身表示范围的值( 阅读全文
posted @ 2012-03-30 15:00 凌紫冥 阅读(352) 评论(0) 推荐(0)
摘要:2012-03-2976-80/9133.6 自动递增和递减递减:--,意为,减少一个单位。递增:++,意为,增加一个单位。++a等价于a=a+1递增和递减操作符不仅改变了变量,并且以变量的值作为生成的结果。各有两种使用方式:前缀式、后缀式前缀递增:++i、前缀递减:--i,先执行运算,再生成值。后缀递增:i++、后缀递减:i—,先生成值,再执行运算。除那些涉及赋值的操作符以外,唯一具有“副作用”的操作符。它们会改变操作数,而不仅仅是使用自己的值。“java=C++--”,意味着java去除了C++中一些很困难而又没必要的东西,称为了一种更精简的语言。更精简,并不是说java在其他方面也比C+ 阅读全文
posted @ 2012-03-29 12:11 凌紫冥 阅读(187) 评论(0) 推荐(0)
摘要:2012-03-2870-76/913昨天找一好心的网友弄到一本java编程思想第四版的文字版,但是奇怪的是为什么和扫描版的差别那么大呢?搞不懂,章节都不同。又对比了下第三版,和第三版也不同,那这个又是哪一版呢?奇怪。看来还是先用扫描版的吧。第3章 操作符在最底层,Java中德数据是通过使用操作符来操作的。Java建立在C++基础之上,做了一些改进和简化。3.1 更简单的打印语句静态导入(static import)java SE5中新增。使用java最常见的问题之一:CLASSPATH环境变量,使用类库,在计算机的CLASSPATH环境变量中添加代码目录树的根目录。3.2 使用java操作符 阅读全文
posted @ 2012-03-28 12:24 凌紫冥 阅读(242) 评论(0) 推荐(0)
摘要:2012-03-2766-70/913最近两天有点忙,都没顾上看书了。2.8.2 语法所有javadoc命令都只能在“/**”注释中出现,注释结束于“*/”。使用javadoc两种方式:嵌入HTML,或使用“文档标签”。独立文档标签:以@开头的命令,置于注释行的最前面(前导“* ”之后)。“行内文档标签 ”可以出现在javadoc注释中的任何地方,也以@开头,括在花括号内。三种类型的注释文档,分别对应于注释位置后面的三种元素:类、域和方法。类注释位于类定义之前,域注释位于域定义之前,方法注释位于方法定义之前://: object/Documentation1.java/** A class c 阅读全文
posted @ 2012-03-27 13:03 凌紫冥 阅读(351) 评论(0) 推荐(0)
摘要:2012-03-2360-66/9132.5 方法、参数和返回值C和C++用函数描述命名子程序,java用方法表示“做某些事情的方式”。Java的方法决定了一个对象能接收什么样的消息。方法基本组成部分:名称、参数、返回值、方法体ReturnType methodName(/*Argument list*/){ /* Method body */}返回类型:调用方法之后从方法返回的值参数列表:给出了要传给方法的信息的类型和名称方法名和参数列表(合起来称为“方法签名”)唯一地标识出某个方法。Java中方法只能作为类的一部分来创建,只能通过对象才能被调用,且这个对象必须能执行这个方法调用。调用方法: 阅读全文
posted @ 2012-03-23 15:10 凌紫冥 阅读(366) 评论(0) 推荐(0)
摘要:2012-03-2254-60/913第二章 一切都是对象Java基于C++,但是java是一种更“纯粹”的面向对象程序设计语言。Java和C++都是混合/杂合型语言,允许多种编程风格。C++成为杂合型语言主因是支持与C的向后兼容,是C的一个超集,有很多C不具备的特性,这些特性使得C++在某些方面显得过于复杂。Java假设我们只进行面向对象的程序设计,开始使用java,必须把思想转换到面向对象的世界中来。Java中,几乎一切都是对象。2.1 用引用操纵对象每种编程语言都有自己的操纵内存中元素的方式。程序员必须注意处理的数据是什么类型,是直接操纵元素,还是用某种基于特殊语法的间接表示(如C和C+ 阅读全文
posted @ 2012-03-22 12:39 凌紫冥 阅读(232) 评论(0) 推荐(0)
摘要:2012-03-2147-54/9131.12 并发编程在计算机编程中有一个基本概念,就是在同一时刻处理多个任务的思想。并发:在程序中,彼此独立运行的部分称之为线程,把问题切分成多个可独立运行的部分(任务),提高程序的响应能力。(之前称为多线程)最常见的并发例子:用户界面,通过使用任务,用户可以在按下按钮后快速得到一个响应,而不用被迫等待到程序完成当前任务为止。并发需要注意的地方:共享资源。解决:可以共享的资源,必须在使用期间被锁定。整个过程:某个任务锁定某项资源,完成其任务,然后释放资源锁,使其他任务可以使用这项资源。Java的并发是内置于语言中的。1.13 Java与InternetJav 阅读全文
posted @ 2012-03-21 12:38 凌紫冥 阅读(250) 评论(0) 推荐(0)
摘要:今天本来以为进度可以快点,但是没想到这么慢,只是今天的知识点比较多。41-47多态:极大的改善我们的设计,同时也降低软件维护的代价。面向对象程序设计的最重要的妙诀:编译器不可能产生传统意义上的函数调用。一个非面向对象编程的编译器产生的函数调用会引起所谓的前期绑定。这么做意味着编译器将产生对一个具体函数名字的调用,而运行时将这个调用解析到将要被执行的代码的绝对地址。在OOP中,程序直到运行时才能够确定代码的地址,所以当消息发送到一个泛化对象时,必须采用其他的机制。为了解决这个问题,面向对象程序设计语言使用了后期绑定的概念。当向对象发送消息时,被调用的代码直到运行时才能确定。编译器确保被调用方法的 阅读全文
posted @ 2012-03-20 13:55 凌紫冥 阅读(213) 评论(0) 推荐(0)