`
hanwesley
  • 浏览: 57092 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

corejava小结 2009年5月9日

阅读更多
<script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>

1、杂七杂八,序

参加培训几乎有2个多月了,一直都很认真的在培训,培训的事情没有告诉家人,一直都和女朋友相依为命,真的很感谢女朋友在这段时间里能够跟我同甘共苦,尽管有时候她也会抱怨,发脾气,但是过了还是很好的!

说起java语言,大学时候就开始接触了,但是一直没有认真学习,没有踏踏实实学习,真的很后悔!

还好,在贵州的志愿者服务我提前结束了,几乎在同期志愿者结束服务期的时候我培训也就结束了,相比那个时候也就是今年7,8月的时候我可能会庆幸当时中止服务期是明智的决定。尽管当时贵州有一批好同志,好同事,值得留念的山山水水,但是我的事业不能耽误啊!也许是比较自私了点吧。呵呵


2、core Java知识


2.1 类库

不像面向过程的语言,java语言的最大优点就是面向对象,按照常人的逻辑思维来编写代码,来用代码来实现实际中相应的逻辑问题,不需要考虑计算机底层是如何运作的,当然也不是完全不知,但是作为java程序员,应该更多的是解决商业领域中的实际项目难题和项目需求,而不应该沉迷于java语言本身,学习java语言更多的应该是学习面向对象的逻辑思维能力和方式。

面向对象的三大特征就是封装,继承,多态,其中继承是核心,多态的基础是继承,多态是父类引用指向子类对象,即子类可以当做父类的一个引用来处理。而封装就是对某些属性或方法隐藏,为外部提供更加安全有效的方法来操纵本类方法或属性。封装是软件设计时重点考虑的,相对应,多态是编码时重点考虑的。

java类库为程序员提供了很多基础实现,在实际开发中灵活应用这些方法,尽量减少自己写一些重复代码,呵呵,所谓不发明新轮子嘛!类库很庞大,也不是一下子就能掌握的,但是最基本的,java.lang,java.util,java.io等包应该滚瓜烂熟,编写代码不允许设计这些类库的方法或类还要去查阅API,否则没有一家公司会愿意接受你。

Objcet是java语言的根,其他所有类都是Object类的子类,在java语言中仅支持单继承,继承的主要目的是继承父类类型,而非继承父类代码,也就是说,只有子类 is a 父类时才考虑继承,java语言引入单继承的目的就是防止程序员为了继承代码而用继承,使类层次变得庞大,不易维护。同时,java语言引入接口机制来解决多重继承,接口中只有规范和定义没有具体实现,因此不担心程序员为了复用代码而继承多个接口。

一般重写Object中的boolean equals(Object obj),int hashcode(),String toString(),Object Clone(Object obj)方法。


2.2 Collection集合接口,List(有序有重复) ,Set(无序无重复)

List,Set是Collection接口的子接口,Collection接口实现了Iterable(可迭代)接口

List的主要实现类 1、ArrayList 可变长数组,查询快,插入删除慢 2、LinkedList 底层链表 插入删除快,查询慢

Set的主要实现类 1、HashSet 底层hash表,查询快

SortedSet是Set的子接口,其中TreeSet是SortedSet的实现类,TreeSet底层为平衡二叉树实现,对集合中的元素已经排序,排序原则按照先比较hashCode方法,如果hashCode值在集合中已经存在则丢弃,否则比较equals方法,相等则舍弃,否则加入链中。TreeSet默认以java.lang.comparable接口中的CompareTo(T t)方法比较,也可以在构造参数中指定以Comparator接口中的compare(T t1,T t2)方法比较。

Map接口,设计的主要目的是查找表,以键值对存储,其中键不能重复,值可以重复。Map接口与Collection接口无关,Map中添加元素用put(Object o1,Object o2)方法

Map实现类:1、HashMap 底层以hash表实现,2、TreeMap底层为平衡二叉树,对建进行排序,排序方式类似TreeSet的比较方式。

Iterator(迭代器)就是对集合中的元素进行遍历访问,hasNext()方法判断是否还有下一个元素,不移动指针,next()移动指针到下一个元素,在迭代器中可以remove一个元素,但是不能在迭代中同时调用集合remove方法和迭代器remove方法,会抛出java.util.ConcurrentModificationException。


2.3 Exception 异常

在Java中引入Exception(异常机制)主要是为了处理错误,可以提高系统的容错性。Exception分检测异常check Exception和运行时异常RuntimeException。运行时异常是编译时无法解决,只能在运行时才会被发现或抛出;检测异常在编译时受检。

解决办法:1、throws方式,向上抛出异常,交由调用他的方法处理,如果上层还不处理,程序中止;

2、try{}catch(Exception e){}finally{},一旦发现异常,即捕获异常,其他代码任然继续执行,加finally块后,finally内代码一定会执行,因此不要在finally中return,return会覆盖try,catch,将真正的异常“吃掉”。

自定义业务异常,在具体系统中考虑定义系统业务异常,而不是给客户抛底层API异常,自定义异常是先继承一个Exception类或子类并写无参构造和带String参数的构造方法。

2.4 内部类
内部类可以定义在类体,方法,参数等位置,可以有方法名,或无方法名。无方法名的叫匿名内部类。

内部类可以用来解决多重继承,

引用最广的还是TreeSet和TreeMap的比较器,因为比较器只对该方法有效,因此这种一次调用即失效的方式很好。并且是一种设计良好的回调模式。在本方法中调用某接口的方法实现相应功能。

2.5 面向接口编程

抽象出不变性,封装可变性。

面向接口编程是一种思想的用于实现多态性,提高软件灵活性和可维护性的架构部件。


接口可以用于回调

抽象类和接口异同点:

两者相同点(书上都是这么说的):
都不能被直接实例化,都可以通过继承实现其抽象方法。
都是面向抽象编程的技术基础,实现了诸多的设计模式。

不同点:
接口支持多继承;抽象类不能实现多继承。
接口只能定义抽象规则;抽象类既可以定义规则,还可能提供已实现的成员。
接口是一组行为规范;抽象类是一个不完全的类,着重族的概念。
接口可以用于支持回调;抽象类不能实现回调,因为继承不支持。
接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法;抽象类可以定义字段、属性、包含有实现的方法。
接口可以作用于值类型和引用类型;抽象类只能作用于引用类型。例如,Struct就可以继承接口,而不能继承类。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics