- 博客(14)
- 收藏
- 关注
原创 第7条:避免使用终极方法
终结方法(finalizer)通常是不可预测的,也是很危险的,一般情况下是不必要的。一般在java中,一般用try-catch来完成回收一个对象所占资源的工作。终结方法的缺点: 1.不能保证会被及时地执行因为从一个对象变得不可到达开始,到它的终结方法被执行,所花费的时间是任意长的。因此,注重时间(time-critical)的任务不应该由终结方法来完成。 例如: 用终结方法来关闭已打开的
2015-06-09 19:28:41
423
原创 第6条:消除过期的对象引用
Java的垃圾回收固然省事,然而这并不代表着程序员不需要考虑内存管理。例如,下面是一个粗心的栈实现代码,直接贴有错误的部分public class Stack{ //省略。。。。。 //有误代码 public Object pop(){ if(size == 0){ throw new EmptyStackException();
2015-06-07 22:07:34
444
原创 第5条:避免创建不必要的对象
如何避免创建不必要的对像?充分利用可以重用的对象1.若对象不可变,它就始终可以重用先来一个极端的反面例子(一般程序员都不会无聊到这样做):String s = new String("stringtest");该语句没执行一次都会创建一个String实例,如果这在一个循环中,将会有很多String实例被创建,显然这是不必要的,显然这个代码应该这样写:String s = "stringtest";这
2015-06-07 21:42:44
405
原创 第4条:通过私有方法强化不可实例化的能力
有时候,会需要编写一些只含有静态域和静态方法的类。例如工具类(utility class),这些类不需要被实例化,也不需要被继承。 因为实例化对他们并没有什么卵用。然而,在缺少显式构造器的时候,编译器会自动提供以个公有的无参的缺省构造器。这样,这个工具类和别的类就没有区别了(可以实例化,可以被类继承)为了确保类不可以被实例化,我们可以通过让类包含私有构造器,那么它就不能被实例化了public cl
2015-06-02 13:38:28
426
原创 第3条:用私有构造器或者枚举类型强化Singleton属性
Singleton指仅仅被实例化一次的类。例如:工具类,数据库连接,等在Java 1.5之前,实现Singleton有两种方法,这两种方法都要把构造器保持为私有的,下面直接贴实例代码,应该都能看懂:第一种: 需要获取的公有静态成员(需要实现Singleton的对象)是个final域public class UtillA{ public static final UtillA INSTANC
2015-06-02 13:07:45
393
原创 第2条:遇到多个构造器参数时要考虑用构建器
无论是静态工厂还是构造器都有共同的局限性:它们都不能很好地扩展到大量可选参数。然后重叠构造器模式可以实现这一需求,但是又许多参数的时候,客户端代码会变得很难编写,并且可读性很差于是我们想到JavaBean模式,在这种模式下,调用一个无参构造器来创建对象,然后使用setter来对每个参数进行设置,例: Book book = new Book(); book.setNam
2015-05-23 20:54:05
402
原创 第1条:考虑用静态工厂方法代替构造器
在java中,一说到创建实例,自然就会想到构造器(构造函数),这是最简单也是最常用的创建实例的办法。然而,还有一种方法,那就是让类提供一个静态工厂方法 ,它只是一个返回类的实例的方法。总而言之,使用静态工厂方法的优势&劣势如下:[优势] 1.静态工厂方法有名称。 2.不必在每次调用都创建一个新对象。 3.可以返回原返回类型
2015-05-17 22:18:24
413
原创 容易想复杂的"回环变位"
今天看算法(第四版)回环变位”题目描述很简单: 如果字符串s重的字符循环移动任意位置之后能够得到另一个字符串t,那么s就被成为s的回环变位(circular rotation) 举例省略… 问题:请编写一个程序检查2个给定的字符串s和t是否互为回环变位。 提示:判断条件只需要一行代码看到题目当时满脑子想的都是双重循环啊,游标移动啊各种i,j,k…… 结果来一句这样的提
2015-05-17 20:00:48
2095
3
转载 FilenameFilter的使用
转自:http://jimb.iteye.com/blog/124930使用FilenameFilter实现图片过滤,只要.gif,.jpg,.png文件。 java 代码 public class ImageFilter implements FilenameFilter{ public boolean isGif(String file) { if (file.toLower
2015-05-13 21:31:01
505
原创 关于throw异常后方法名后是否要throws
Java中的异常分为两大类: 1.Checked Exception(非Runtime Exception) 2.Unchecked Exception(Runtime Exception)运行时异常 RuntimeException类是Exception类的子类,它叫做运行时异常,Java中的所有运行时异常都会直接或者间接地继承自RuntimeException类。 Java中凡是继承自E
2015-05-11 23:05:24
1152
转载 Java中try catch finally语句中含有return语句的执行情况(总结版)
转自http://www.2cto.com/kf/201312/267879.html在这里看到了try >但有一点是可以肯定的,finally块中的内容会先于try中的return语句执行,如果finall语句块中也有return语句的话,那么直接从finally中返回了,这也是不建议在finally中return的原因。下面来看这几种情况。情况一(try中有return,finally中没有re
2015-05-11 22:43:13
621
转载 Java异常知识结构体系
一、 异常的概念和Java异常体系结构 异常是程序运行过程中出现的错误。本文主要讲授的是Java语言的异常处理。Java语言的异常处理框架, 是Java语言健壮性的一个重要体现。 Java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。 在Java API中已经定义了许多异常类,这些异常类分为两大类,错误Error和异常Exception。 Jav
2015-05-11 22:16:04
426
转载 递归与迭代的区别
递归的基本概念:程序调用自身的编程技巧称为递归,是函数自己调用自己.一个函数在其定义中直接或间接调用自身的一种方法,它通常把一个大型的复杂的问题转化为一个与原问题相似的规模较小的问题来解决,可以极大的减少代码量.递归的能力在于用有限的语句来定义对象的无限集合.使用递归要注意的有两点:1)递归就是在过程或函数里面调用自身;2)在使用递归时,必须有一个明确的递归结束条件,称为递归出口.递归分为两个阶段:
2015-05-08 23:41:00
358
原创 快速排序(QuickSort)学习记录&个人理解
基本思想:通过一趟排序将待排记录分割成独立的两部分,其中一部分的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的。 对顺序表L中的子序列L
2015-05-08 15:38:46
871
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人