java编程思想

1.1 抽象过程
    编程就是建模过程,早期的汇编语言是专门针对机器设计的,需要在要解决的问题和机器之间建立模型。
    1. 万物为对象
    2. 程序是对象集合,相互通过发送消息来调用
    3. 可以继承
    4. 每个对象都是某个类的实例
    5. 特定类型的所有对象可以接收同样的消息

1.2 每个对象都有一个接口
    通俗的说就是对象都有method

1.3 每个对象都提供服务
    许多的method组成了服务

1.4 被隐藏的具体实现
    类创建者和客户端程序员,private,protected,public

1.5 复用具体实现
    直接使用,组合,继承

1.6 继承
    通过覆盖或增加新的methond,is-a(只是覆盖),is-like-a(新方法)

1.7 多态的可互换对象
    动态绑定

1.8 单根继承结构
    相比于C++,更容易实现GC,
    创建一组类时,更容易使用其它类提供的接口,C++中可能得用多重继承

1.9 容器

    我们需要的只是一个用来存放对象的抽象概念,在具体的实践中会有不同的要求,如Map,List,Vector。

    参数化类型,Java中引入的新概念,由编译器实现,在1.4版以前,元素放入容器中会转型成Object,取出又要转成原来的类型,现在可以创建只能保存某种元素的容器。

1.10 对象的创建和生命期
    使用单根继承和对象都在堆上分配使得Java的GC实现起来相对简单。
    C++的智能指针?

1.11 异常处理,处理错误
    异常使错误处理相对容易,在C中是使用返回值,如果有内存读写错误~ ~

1.12 并发编程
    Java内置支持

1.13 Internet
    Internet的基础就是 客户端/服务器 模式,要尽量减少服务器的工作量,脚本语言可完成80%工作,剩下的20%可以由applet或Flex(flash)。Java在服务器编程有优势。

1.14 总结
    评估需要用什么语言,可以看看python。

5 初始化与清理------------------------------------------------------------------------------
    可以在构造函数中调用
    finalize(),在垃圾回收时调用,1.什么时候回收不明确,可能永远都不会回收 2.回收只与内存有关
    可以用在如调用了C++ new,在finalize()里面调用delete,或用来检查系统资源是否释放(文件是否关闭)
    Java的虚拟机会先向系统请求一大块空间,new的时候只要改变一下指针就可以,相当于在栈上分配,速度很快,垃圾回收有两种策略,停止——复制,标记——清扫
    变参函数 void print(Object... args);      print("one", "two", "three");
    枚举是一个类型,可用在switch语句中
   

7 构造器------------------------------------------------------------------------------------
8 多态--------------------------------------------------------------------------------------
    Base { "base" }
    Advense extends Base {
        String str = "str"
        Advense() { "adv" }
    }
    结果 base str adv
    类的构造函数中可以调用重载的方法,并且是多态的,要注意数据初始化
    子类可以覆盖父类的方法并改变方法的返回值(但返回值要是父类返回值的子类型)
    Java的转型都会做检查

9 接口-----------------------------------------------------------------------------------
    抽象类是不希望实例化的类,
    接口是类与类之间的约定,不做任何实际的工作,成员变量为final型
    策略模式,根据传入的类不同
    适配器将一个类的接口包装了起来
    抽象类的耦合比接口强,
    接口部分的解决了多重继承问题,因为接口是没有实现的方法,可以解决菱形继承的问题
    放入接口中的data自动成为static和final
    实现工厂模式,(工厂模式和策略模式有什么不同?)

10 内部类---------------------------------------------------------------------------------

    内部类实际上实现了多重继承


11 持有对象-------------------------------------------------------------------------------

    容器内能只放置类,由于单根继承,可以写 ArrayList list = new ArrayList();
    初始化加入多个元素 new ArrayList<Integer>(Arrays.asList(1, 2, 5))   
    ArrayList, LinkedList,
    HashSet, TreeSet, LinkedHashSet,
    HashMap, TreeMap, LinkedHashMap,

 

12 异常--------------------------------------------------------------------
    什么时候要使用异常?比如对一个函数的参数做检查要使用异常吗?
    异常处理理论上有两种模型,一种是终止模型,一种是恢复模型,但由于恢复模型太复杂,一般不用
    自定义异常类很简单,直接继承Exception,写一个无参和一个String参数的构造函数就可以了
    异常是new出来的,垃圾回收器会自动清理它,相比C++要容易多了
    finally用于做无论是否抛出异常都一定要做的事,如关闭打开的文件
    异常的优点在于对错误处理的一致性上,只要不吞咽下错误,你就一定能发现错误

13 字符串------------------------------------------------------------------
    字符串是不可变的常量
    用于String的+,+= 是Java中仅有的重载操作符,调用了StringBuilder
    如果是用循环语句拼接字符串,最好在循环中使用StringBuilder
    要学习 正则表达式

   

14 类型信息----------------------------------------------------------------
    JVM加载一个类的过程, 加载 链接 初始化
    RTTI:编译时类已存在
    反射:运行时类才存在
    RTTI在实际编程中的使用:传统的类型转换,查询类型的信息,instanceof
       



   
15 泛型--------------------------------------------------------------------
    元组的实现
    非泛型类可以使用泛型方法 <T> void f(T t)
    在对象转化成泛型对象时会擦除自身的信息,只能将泛型当作Object

16 数组--------------------------------------------------------------------
    数组相对于容器,唯一的优点是效率
    除非经过测试证明容器是瓶颈且换成数组能大大提高效率,否则应该使用容器

17 容器深入研究------------------------------------------------------------
   
18 Java I/O系统------------------------------------------------------------
    主要讲类库中的类
19 枚举类型----------------------------------------------------------------
20 注解--------------------------------------------------------------------
21 并发---------------------------------------------------------------------
22 Swing-------------------------------------------------------------------

现在就看这么多了,暂时不再系统的看了,2010.8.19

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 实现方案的隐藏 1.4 方案的重复使用 1.5 继承:重新使用接口 1.5.1 改善基础类: 尽管extends关键字暗示着我们要为接口“扩展”新功能,但实情并非肯定如此。为区分我们的新类,第二个办法是改变基础类一个现有函数的行为。我们将其称作“改善”那个函数。 为改善一个函数,只需为衍生类的函数建立一个新定义即可。我们的目标是:“尽管使用的函数接口未变,但它的新版本具有不同的表现”。 1.5.2 等价和类似关系 1.6 多形对象的互换使用 1.6.1 动态绑定 1.6.2 抽象的基础类和接口 1.7 对象的创建和存在时间 1.7.1 集合与继承器 1.7.2 单根结构 1.7.3 集合库与方便使用集合 1.7.4 清除时的困境:由谁负责清除? 1.8 违例控制:解决错误 1.9 多线程 1.10 永久性 1.11 Java和因特网: 既然Java不过另一种类型的程序设计语言,大家可能会奇怪它为什么值得如此重视,为什么还有这么多的人认为它是计算机程序设计的一个里程碑呢?如果您来自一个传统的程序设计背景,那么答案在刚开始的时候并不是很明显。Java除了可解决传统的程序设计问题以外,还能解决World Wide Web(万维网)上的编程问题。 1.11.1 什么是Web? 1.11.2 客户端编程 1.11.3 服务器端编程 1.11.4 一个独立的领域:应用程序 1.12 分析和设计 1.12.1 不要迷失: 在整个开发过程中,最重要的事情就是:不要将自己迷失!但事实上这种事情很容易发生。大多数方法都设计用来解决最大范围内的问题。当然,也存在一些特别困难的项目,需要作者付出更为艰辛的努力,或者付出更大的代价。但是,大多数项目都是比较“常规”的,所以一般都能作出成功的分析与设计,而且只需用到推荐的一小部分方法。但无论多么有限,某些形式的处理总是有益的,这可使整个项目的开发更加容易,总比直接了当开始编码好! 也就是说,假如你正在考察一种特殊的方法,其中包含了大量细节,并推荐了许多步骤和文档,那么仍然很难正确判断自己该在何时停止。时刻提醒自己注意以下几个问题: (1) 对象是什么?(怎样将自己的项目分割成一系列单独的组件?) (2) 它们的接口是什么?(需要将什么消息发给每一个对象?) 在确定了对象和它们的接口后,便可着手编写一个程序。出于对多方面原因的考虑,可能还需要比这更多的说明及文档,但要求掌握的资料绝对不能比这还少。 整个过程可划分为四个阶段,阶段0刚刚开始采用某些形式的结构。 1.12.2 阶段0:拟出一个计划: 1.12.3 阶段1:要制作什么?: 1.12.4 阶段2:如何构建? 1.12.5 阶段3:正式创建 1.12.6 阶段4:校订 1.12.7 计划的回报 1.13 Java还是C++? 第2章 一切都是对象 “尽管以C++为基础,但Java是一种更纯粹的面向对象程序设计语言”。 无论C++还是Java都属于杂合语言。但在Java中,设计者觉得这种杂合并不象在C++里那么重要。杂合语言允许采用多种编程风格;之所以说C++是一种杂合语言,是因为它支持与C语言的向后兼容能力。由于C++是C的一个超集,所以包含的许多特性都是后者不具备的,这些特性使C++在某些地方显得过于复杂。 Java语言首先便假定了我们只希望进行面向对象的程序设计。也就是说,正式用它设计之前,必须先将自己的思想转入一个面向对象的世界(除非早已习惯了这个世界的思维方式)。只有做好这个准备工作,与其他OOP语言相比,才能体会到Java的易学易用。在本章,我们将探讨Java程序的基本组件,并体会为什么说Java乃至Java程序内的一切都是对象。 2.1 用句柄操纵对象 2.2 必须创建所有对象: 创建句柄时,我们希望它同一个新对象连接。通常用new关键字达到这一目的。new的意思是:“把我变成这些对象的一种新类型”。所以在上面的例子中,可以说: String s = new String("asdf"); 它不仅指出“将我变成一个新字串”,也通过提供一个初始字串,指出了“如何生成这个新字串”。 当然,字串(String)并非唯一的类型。Java配套提供了数量众多的现成类型。对我们来讲,最重要的就是记住能自行创建类型。事实上,这应是Java程序设计的一项基本操作,是继续本书后余部分学习的基础。 2.2.1 保存在什么地方 2.2.2 特殊情况:主类型 2.2.3 Java中的数组 2.3 绝对不要清除对象:在大多数程序设计语言中,变量的“存在时间”(Lifetime)一直是程序员需要着重考虑的问题。变量应持续多长的时间?如果想清除它,那么何时进行?在变量存在时间上纠缠不清会造成大量的程序错误。在下面的小节里,将阐示Java如何帮助我们完成所有清除工作,从而极大了简化了这个问题。 2.3.1 作用域 2.3.2 对象的作用域 2.4 新建数据类型:类 2.4.1 字段和方法 2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序:正式构建自己的第一个Java程序前,还有几个问题需要注意。 2.6.1 名字的可见性 2.6.2 使用其他组件 2.6.3 static关键字 2.7 我们的第一个Java程序 2.8 注释和嵌入文档 2.8.1 注释文档 2.8.2 具体语法 2.8.3 嵌入HTML 2.8.4 @see:引用其他类 2.8.5 类文档标记 2.8.6 变量文档标记:变量文档只能包括嵌入的HTML以及@see引用。 2.8.7 方法文档标记 2.8.8 文档示例

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值