`
stanxl
  • 浏览: 4387 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论
文章列表
我们知道TreeSet是Set接口下的一个实现类,TreeSet中的元素的排列顺序是和添加的顺序是没有关系的,并且它里面元素也是不能重复的 但是,TreeSet集合有它独有的特点,比如: import java.util.*; public class Test{ public static void main(String[] args){ TreeSet ts = new TreeSet(); ts.add("x"); ts.add("a"); ts.add("c& ...
我们知道ArrayList是List接口的一个实现类,它的特点是查询效率高,增删效率低,线程不安全 原因是因为ArrayList底层是封装了一个数组,它是用数组实现的。 看下图,数组在内存中的存储方式: 现在定义一个int[] a数组,假设 ...
所谓单例模式,就是让一个类在该类的外面只有一个实例 我们知道我们一旦把一个类给声明好了,它有多少个实例,取决于我们new多少次 那什么情况下能让一个类在该类的外面只有一个实例呢? 看下面代码: class Foo{ private Foo(){} } public class Test{ public static void main(String[] args){ } } Ok,为了不让它在外面new,干脆把构造器设置为private,保证了不能new多个,但是一个没有也不合适!! 问题又出现了,这样做的结果是“没例模式”!!! 好吧,这样做虽然外面不 ...
继上篇策略模式,可以引出一个叫做适配器模式的设计模式 先看下面的代码,还是上篇策略模式的代码段 interface Process{ public void process(File file); } public class Test{ public static void walkDir(Process p,File file){ File[] files = file.listFiles(); for(File ff : files){ if(ff.isDirectory()){ ...
其实策略模式,从字面意思上理解,类似于我想达到某一种效果时,不用去煞费苦心的再去想方法,而是已经做好的方法只要去调用就可以了 那么体现到java程序设计里,也可以这么理解,如果过程是随着参数的变化而变化的, ...
前天有人问我说,我知道用Statement可能会产生注入问题,但是啥是注入问题?其实我知道他了解过,但是现在忘记了….. 谁说不是呢,我也是有些遗忘了,我就知道如果在sql语句后直接拼接条件,是可能产生注入问题 ,当然了如果你设置的条件是你想要,肯定不会出现注入问题的 话不多说,既然说到了注入问题,就去看看这个传说中的“注入问题”…. 先让问题暴露出来,看下面的代码: 现在是这样,假设现在我的库里的数据是这样的: 1 黄药师 1900-1-1 400 2 黄晓明 1920-1-1 800 public class StatementTest{ publi ...
今天继续学习一种叫做装饰器模式的设计模式。 当相对已有的对象进行功能增强时,可以定义类,将已有对象传入,基于已有功能,提供加强功能。自定义的类称为装饰类 装饰类通常通过构造器接收被装饰的对象,并基于被装饰对象的功能,提供更强的功能 简单点说,就是这种模式是将已有对象的功能增强,并且以原对象已有的功能方法制作增强方法。好像越说越复杂了!! 比如,我们知道系统内置的BufferedReader类,是一个带缓冲的输入流,并且可以包装其他的节点流 ,它提供了一个readLine()方法,去提高效率,其实Reader是自带缓冲区的,默认是1024*8,即8192byte,而且不能改变,当多读一个字 ...
java中大概有21种设计模式,先看第一种,模版方法设计模式。 从一个简单的例子引出模版方法设计模式: 用for、while、do-while三种循环分别测出1到100的和; 一般的写法是: public class Test{ pubic static void main(String[] args){ // ...
1、进程:正在执行中的程序,其实是应用程序在内存中运行的那片空间。 2、线程:进程中的一个执行单元,负责进程中的程序的运行,一个进程中至少要有一个线程。一个进程中可以有多个线程的,这个应用程序也可以称 ...
1、字符串都是对象。 2、字符串是常量。它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为String 对象是不可变的,所以可以共享。 例如:String str = "abc";等效于: char data[] = {'a', 'b', 'c'}; String str = new String(data); 3、String s1 =
Stringstr=new String("abc"); 紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个String对象呢? 相信大家对这道题并不陌生,答案也是众所周知的,2个。 接下来我们就从这道题展开,一起回顾一下与创建St ...
问: 抽象类是否可继承实体类 (concrete class) 答: 抽象类是可以继承实体类,但前提是实体类必须有明确的构造函数 答案很明确,可以继承。其实从Object就是个实体类,java的API文档里,每个抽象类的条目里都明确写着直接或间接继承自Object,所以这点是没有疑问的。 关键在于这答案里所说的“前提是实体类必须有明确的构造函数”一句,是什么意思。 一般学习者会写的简单试验代码: class A{} abstract class B extends A{} 结果完全正常,编译通过。似乎和“实体类必须有明确的构造函数”完全没有关系。 这个问题涉及到两个个基础知识: ...
Global site tag (gtag.js) - Google Analytics