Java
hitol
SDUT
展开
-
设计模式(9):命令模式
命令模式:定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 通用类图: Receiver接受者角色:该角色就是干活的角色,命令传递到这里是应该被执行的Command命令角色需要执行的所有命令都在这里声明Invoker调用者角色接收到命令并执行命令。原创 2015-09-12 21:11:28 · 508 阅读 · 0 评论 -
设计模式(2):工厂方法模式
工厂方法模式: 定义: 定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使用一个类的实例化延迟到子类。 举个栗子:我们要生产水果罐头,我们应该怎么做呢?首先,我们需要准备好原料。其次我们需要一个罐头工厂,往工厂里运送不同的原料,出来的就是不同的罐头。 原料就是苹果啊、橘子啊等等的这些类。 interface IFruits { publ原创 2015-07-27 10:20:56 · 723 阅读 · 0 评论 -
设计模式(1):单例设计模式
单例设计模式: 定义:确保一个类只有一个实例,并且自行实例化,并向整个系统提供这个实例。 饿汉式: class Single { private static final Single s = new Single(); // 限制产生多个对象 private Single() { } // 通过该方法获得实例对象 public S原创 2015-07-25 15:04:17 · 670 阅读 · 0 评论 -
Java---31---RadnomAccessFile
RandomAccessFile: 随机访问文件,自身具备读写的方法。通过skipBytes(int x),seek(int x)来达到随机访问。 该类不算是IO体系中子类,而是直接继承自Object 但是它是IO包中成员,因为它具备读写功能。 随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组。存在指向该隐含数组的光标或索引,称为文件指针;输入原创 2015-06-03 21:11:49 · 813 阅读 · 0 评论 -
Java---30---IO(一)
IO流常用基类:字节流常用基类:InputStream,OutputStream字符流常用基类:Reader Writer转换流:InputStreamReader:字节流通向字符流的桥梁 用于操作字节流的字符流对象OutputStreamWriter:字符流通向字节流的桥梁 用于操作字符流的字节流对象由这四个类派生出来的子类名称都是以其父类名作为原创 2015-05-06 15:10:42 · 929 阅读 · 0 评论 -
Java---29---Map中元素的两种取出方式
Map中是没有迭代器的,那么Map中的元素是如何取出的呢?有两种方法:一种是通过Set keySet ()一种是通过 Set > entrySet ()keySet:: 将map中所有的键存入到Set集合中。在通过map的getKey ()方法即可获得 value的值entrySet: 返回此映射中包含的映射关系的Set视图。既包含键也包含值。 这个映原创 2015-05-02 15:05:01 · 3452 阅读 · 0 评论 -
Java---28---Set集合之TreeSet
TreeSet :可以对Set集合中的元素进行排序排序是按照ascii来排序的。import java.util.Iterator;import java.util.TreeSet;public class TreeSetDemo { public static void main(String[] args) { // TODO Auto-generated me原创 2015-04-09 16:25:19 · 886 阅读 · 0 评论 -
Java---26---List集合共性方法
List中元素是有序的,元素可以重复,因为该集合有索引。方法摘要 booleanadd(E e) 向列表的尾部添加指定的元素(可选操作)。 voidadd(int index, E element) 在列表的指定位置插入指定元素(可选操作)。 booleanaddAll(Col原创 2015-04-07 20:16:02 · 769 阅读 · 0 评论 -
Java---27---Set集合及其子类HashSet
Set中元素是无序的(存入和取出的顺序不一定一致),元素不可以重复。 Set中的方法和Collection中的方法是一样的。常见子类:HashSet TreeSetHashSet 底层数据结构是哈希表TreeSet 底层数据结构是二叉树import java.util.HashSet;import java.util.Iterator;class Person原创 2015-04-08 21:29:48 · 1429 阅读 · 0 评论 -
Java--22---String类
在Java中用于描述字符串的类就是String。Java程序中的所有字符串字面值(如“abc”)都作为此类的实例实现。字符串最大的一个特点就是:字符串是常量,它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。public class sss { public static void main(String[] args) { // TODO Auto-g原创 2015-03-31 20:33:36 · 669 阅读 · 0 评论 -
Java---24---基本数据类型对象包装类
基本数据类型对象包装类byte Byteshort shortint Integerboolean Booleanfloat Floatdouble Double char Character 基本数据类型对象包装类的最常见作用就是用于基本数据类型和字符串类型之间做转换 基本数据类型转换成字符串基本数据类型+””基本数据类型.原创 2015-04-02 14:38:57 · 711 阅读 · 0 评论 -
设计模式(3):抽象工厂模式
抽象工厂模式: 定义:为创建一组相关或相互依赖的对象提供一个接口,而且无须指定他们的具体类。 抽象工厂模式是工厂方法模式的升级版本,在有多个业务品种、业务分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方法。 通过女娲造人的例子来简单了解一下这个模式。 上篇文章中的女娲只是造出了不同肤色的人种,没有定义性别,这篇文章我们就来实现定义性别这个需求。原创 2015-07-29 14:52:21 · 630 阅读 · 0 评论 -
设计模式(4):模板方法模式
模板方法模式:定义: 定义一个操作中的算法框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 模板方法模式非常简单,仅仅使用了Java的继承机制,但它是一个应用非常广泛的模式。 在软件开发工程中,如果相同一段代码复制过两次,就需要对设计产生怀疑,架构师要明确地说明为什么相同的逻辑要出现两次或更多次。 模板方法模式的优原创 2015-07-29 16:18:37 · 665 阅读 · 0 评论 -
设计模式(5):建造者模式
建造者模式: 定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 类图: 4个角色:1.Product产品类通常是实现了模板方法模式。2.Builder抽象建造者规范产品的组建,一般是由子类实现。3.ConcreateBuilder实现抽象类定义的所有方法,并且返回一个组件好的对象。4.Direc原创 2015-08-01 10:17:02 · 769 阅读 · 0 评论 -
设计模式(10):责任链模式
责任链模式:定义:是多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。 责任链模式的重点是在“链”上,由一条链去离相似的请求在链中央决定谁来处理这个请求,并返回相应的结果。 通用类图: Handler实现三个职责:一是定义一个请求的处理方法HandleM原创 2015-09-13 11:10:58 · 638 阅读 · 1 评论 -
设计模式(7):原型模式
原型模式的定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。不通过new关键字来产生一个对象,而是通过对象复制来实现的模式就叫做原型模式。原型模式通用代码:class PrototypeClass implements Cloneable { @Override protected PrototypeClass clone()原创 2015-09-05 20:05:51 · 622 阅读 · 0 评论 -
设计模式(8):中介者模式
定义:用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变他们之间的交互。 中介者模式的类图:Mediator:抽象中介者角色ConcreteMediator:具体中介者角色Colleague:同事角色 每一个同事角色都知道中介者角色,而且与其他的同事角色通信的时候,一定要通过中介者角色协作。原创 2015-09-10 21:34:58 · 534 阅读 · 0 评论 -
6大设计原则(6):开闭原则
开闭原则是Java世界中最基本的设计原则,它指导我们如何建立一个稳定的、灵活的系统。定义:一个软件实体,如类、模块和函数,应该对扩展开放,对修改关闭。 什么意思呢?就是你写的这个类,或者是接口、函数,当因需求发生变化而要进行修改的时候,不应该去修改原代码,而是对原代码进行扩展。 举个书店售书的栗子: interface IBook { // 获得书名原创 2015-07-23 15:54:19 · 684 阅读 · 0 评论 -
6大设计原则(5):迪米特法则
迪米特法则:LoD也被称为最少知识原则定义:一个对象应该对其他对象有最少的了解。 通俗的说就是一个类应该对自己需要耦合或调用的类知道的最少,类内部如何复杂跟我们没有关系我们所要了解的只是类对外提供的public方法。 迪米特法则对类的低耦合性提出明确的要求,包含4个含义: 1.只和朋友交流一个例子:老师让体委点一下女生的数量。 class Te原创 2015-07-23 10:18:41 · 1008 阅读 · 0 评论 -
6大设计模式(4):接口隔离原则
接口隔离原则: 接口分两种:实例接口:Java中的类类接口:interface定义的接口 原则的两种定义:1.客户端不应该依赖它不需要的接口2.类间的依赖关系应该建立在最小的接口上 需要对接口进行细化,保持纯洁性。接口尽量细化,同时接口中的方法尽量少,增强专门性。 接口隔离原则是对接口进行规范约束,包含4层含义:1.接口要尽量小这是原创 2015-07-22 17:22:28 · 702 阅读 · 0 评论 -
6大设计原则(3):依赖倒置原则
依赖倒置原则:DIP定义:高层模块不应该依赖低层模块,两者都应该依赖其抽象抽象不应该依赖细节细节应该依赖抽象 什么是高层模块? 大概就是main方法那一块吧什么是低层模块?各个类、接口抽象就是指接口或抽象类,两者不能被实例化细节就是实现类,可以实例化对象 依赖倒置原则在Java中的表现:面向接口编程模块间的依赖通过抽象发生,实现类之间不发生直接的依赖原创 2015-07-22 10:07:19 · 799 阅读 · 0 评论 -
设计模式(6):代理模式
代理模式:定义:为其他对象提供一种代理以控制对这个对象的访问。 Subject抽象主题角色:抽象主题类可以是抽象类也可以是接口。 RealSubject具体主题角色:被代理角色 Proxy代理主题角色:代理类,负责对真实角色的应用,把所有抽象主题类定义的方法限制委托给真实主题角色实现,并且在真实角色处理完毕前后做预处理和善后处理工作。就是替具体原创 2015-08-02 16:16:46 · 582 阅读 · 0 评论 -
6大设计原则(1):单一职责原则
定义:应该且仅有一个原因引起类的变更。 理解:如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力,这种耦合会导致脆弱的设计。当变化发生时,设计会遭受到意想不到的破坏。 假如一个类A,有两个职责a,b,当职责a由于需求发生变化而需要修改时,有可能会导致职责b的功能发生故障。 解决:将类中的职责分开,原创 2015-07-21 17:23:25 · 920 阅读 · 0 评论 -
6大设计原则(2):里氏替换原则
里氏替换原则:LSP定义:如果对于每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都换为o2时,程序的行为没有发生变化,那么S是T的子类型。 在继承的时候,父类出现的地方子类就可以出现,子类可替代父类,因为子类中有父类的方法,然而父类却不可以替代子类,因为子类中可能有父类没有的方法。这就是所谓的向下转型是不安全的。 使用继承有很多优原创 2015-07-21 20:57:29 · 792 阅读 · 0 评论 -
Java---25---集合框架共性方法
集合类为什么会出现集合类 面向对象语言对事物的体现都是以对象的形式,所以为了方便对较多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式 数组和集合类同时容器,有何不同?数组虽然也可以存储对象,但是长度不可变;集合的长度是可变的,数组中可以存储基本数据类型,集合只能存储对象。 集合类的特点:集合只用于存储对象,集合长度是可变的,集合可以存储不同类型原创 2015-04-02 14:43:25 · 826 阅读 · 0 评论 -
Java---23---StringBuffer
StirngBuffer可以对字符串的内容进行增删字符串的组成原理就是通过该类来实现的StringBuffer是一个容器很多方法与String相同StringBuffer是可变长度的 特点:长度可变可以添加多种类型最终会通过toStirng方法变成字符串 StringBuffer的功能:增、删、改、查,当然还有存储的功能。1.存储appen原创 2015-04-02 14:33:58 · 723 阅读 · 0 评论 -
Java---01---初识
学Java也有一段时间了,一直没腾出手来做笔记。。。不得不说 边做笔记边学太慢了,但却学的扎实。。So。。总结+笔记一块写了吧。 刚开始接触Java 的时候面对的第一个程序:输出 “Hello Java”程序代码: class Main { public static void main (String[] args){ System.out.println("Hello原创 2014-11-26 19:42:10 · 704 阅读 · 0 评论 -
Java---07---接口
Java接口的概念:讲的是狭义的接口类型。广义的接口是指类的接口、方法的接口。初期理解,可以认为是一个特殊的抽象类当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示。 Java接口类似于纯抽象类,只包含常量和抽象方法,而没有变量和具体方法。从更深层次理解Java接口,是定义(规范、约束)与实现的分离。Java接口本身没有任何实现,所以Java接口比Java抽象类更抽象原创 2014-12-03 11:27:41 · 1003 阅读 · 0 评论 -
Java---04---类和对象
Java 是一种面向对象的程序设计语言,类和对象可以说是Java语言的核心。总结一下类和对象。 面向对象是从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人的思维方式,强调直接以问题域(现实世界)中的事物为中心来思考问题,认识问题,并根据这些事物的本质特点,把他们抽象地表示为系统中的对象,作为系统的基本构成单位。 类、对象和继承是面向对象的三要素。只原创 2014-11-27 23:11:36 · 666 阅读 · 0 评论 -
Java---02---数据类型
Java数据类型:程序中所有的数据都属于各自特定的数据类型,数据类型决定了它们的表示方式、取值范围以及可用的操作。 变量与常量:变量遵循的原则:先声明,后使用。 一.整数类型:1.字节型:byte最小的整数类型。它是有符号的8位类型,数的范围是 -128~127.2.短整型:short短整型是有符号的16位类型,数值的范围是 -3276原创 2014-11-26 20:16:36 · 607 阅读 · 0 评论 -
Java---快排
import java.util.Scanner;public class Main { public static void main (String[] args){ int a[] = new int[1000]; int n; Scanner read = new Scanner(System.in); n = read.nextInt(); for (int i原创 2014-11-27 09:47:04 · 659 阅读 · 0 评论 -
Java---11---多线程的两种创建方式
多线程的两种创建方式:下面这些东西是API文档中的:public class Threadextends Objectimplements Runnable线程 是程序中的执行线程。Java 虚拟机允许应用程序并发地运行多个执行线程。 每个线程都有一个优先级,高优先级线程的执行优先于低优先级线程。每个线程都可以或不可以标记为一个守护程序。当某个线程中运行的代原创 2014-12-10 00:22:01 · 1851 阅读 · 0 评论 -
Java---15---单例设计模式:---饿汉式和懒汉式
概念:单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 单例模式有以下特点:1.单例类只能有一个实例2.单例类必须自己给自己创建自己的唯一实例3.单例类必须给所有其他对象提供这一实例饿汉式:/*饿汉式*/class Single{ private static final Single s = new Sing原创 2014-12-18 16:08:59 · 1025 阅读 · 0 评论 -
Java---16---多线程---死锁
死锁:概念:所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象:死锁。死锁发生原创 2014-12-18 18:04:11 · 952 阅读 · 0 评论 -
Java---13---多线程---synchronized 同步代码块
还是之前卖票的例子:class Test implements Runnable{ private int num = 50; Object obj = new Object(); public void run () { while (true) { if (num >= 0)原创 2014-12-14 16:37:08 · 1184 阅读 · 0 评论 -
Java---14---多线程---synchronized 同步函数
设计这样一个程序:两个用户去银行存钱,每次存100,存3次,显示银行中总的钱数。class Bank{ private int sum;//sum代表银行中钱的总量 public void add (int n) { sum += n; System.out.println("sum = "+sum); }}cla原创 2014-12-18 14:57:27 · 1114 阅读 · 0 评论 -
Java---05---继承
继承:继承是对针对类之间的相交关系,使得某类可以继承另外一个类的特征和功能。被继承的现有类称之为父类(基类或超类),从现有类继承的新类称之为子类(或派生类)。由一个类可以派生出多个子类,这样就形成了类的层次关系。继承意味着“自动的拥有”。即特殊类(对象)中不必重新定义一般类中以存在的属性和行为。 继承的作用:1.清晰的体现类之间的结构层次关系2.减少代码和数据的重复,增强可用性原创 2014-11-28 00:52:49 · 614 阅读 · 0 评论 -
Java---03---数组
数组:1.数组的每一个元素属于同一个类型2.数组是引用型的,使用new 生成数组对象3.数组生成后,数组的元素个数就不能变了,称之为数组长度4.数组的每一个元素都能直接访问,使用数组下标来标识数组的元素5.数组的元素允许是数组类型的,从而形成二维数组、多维数组 数组的定义及生成:int a[] = new int[N];Int[] a = new int[N];原创 2014-11-26 20:51:28 · 611 阅读 · 0 评论 -
Java---06---继承(下)---final +抽象类+内部类
final关键字作为一个修饰符1.可以修饰类、函数、变量2.被final修饰的类不可以被继承为了避免被继承,被子类复写功能。3.被final修饰的方法,不可以被复写4.被final修饰的变量是一个常量,只能赋值一次,既可以修饰成员变量,又可以修饰局部变量。作为常量:常量的书写规范:所有的字母大写,如果有多个单词,用 “_” 连接。相当于C++中的const5.内部类定义原创 2014-12-02 16:27:27 · 909 阅读 · 0 评论 -
Java---21---停止线程
停止线程本来Thread类中有一个stop方法可以用来停止线程,但是却过时了,那么又该怎样停止线程呢?线程运行其实运行的是run方法中的代码,那么只要将run方法停止,那么线程也就随之停止了。一般线程的运行与循环相结合,那就好办了。将标记修改,那么run方法就会结束。class StopThread implements Runnable { private boolean fl原创 2015-01-23 17:22:59 · 728 阅读 · 0 评论