JAVA SE
kaoa000
宁静致远淡泊明志
展开
-
36、Java I/O系统
对程序语言设计者来说,设计一个令人满意的I/O(输入输出)系统,是件极艰巨的任务——《Thinking in Java》1、File类:一个File类的对象,表示了磁盘上的文件或目录;File类提供了与平台无关的方法来对磁盘上的文件或目录进行操作;File类直接处理文件和文件系统;File类没有指定信息怎样从文件读取和向文件存储;File类描述了文件本身的属性;File对象用来获取或处理与磁盘原创 2013-01-08 13:36:14 · 630 阅读 · 0 评论 -
37、Java IO流
1、流的概念:Java程序通过流来完成输入/输出。流是生产或消费信息的抽象。流通过Java的输入/输出系统与物理设备链接。尽管与它们链接的物理设备不尽相同,所有流的行为具有同样的方式。这样,相同的输入/输出类和方法适用于所有类型的外部设备。这意味着一个输入流能够抽象多种不同类型的输入:从磁盘文件,从键盘或从网络套接字。同样,一个输出流可以输出到控制台,磁盘文件或相连的网络。流是处理输入/输出的一个原创 2013-01-09 15:36:17 · 706 阅读 · 0 评论 -
38、定义一个自己的IO流
实现一个我们自己定义的输入流: 参考java.io.ByteArrayInputStream的类,它允许以流(stream)的方式依序地读取一个byte array中的內容。如果我们要实现自己的ByteArrayInputStream,首先要继承Inputstream类,然后要实现那个唯一的抽象方法:int read() 先看构造方法,因为是输入流,首先要确定数据源,又原创 2013-01-09 18:43:10 · 584 阅读 · 0 评论 -
35、Java内部类
1、内部类(Inner Class),共分为4种: 1)静态内部类(static inner class):只能访问外部类的静态成员变量与静态方法,生成静态内部类对象的方法:外部类.静态内部类 变量名 = new 外部类.静态内部类();outerClass.InnerClass inner = new OuterClass.InnerClass();class StaticIn原创 2013-01-08 13:22:27 · 531 阅读 · 0 评论 -
设计模式——34、观察者模式
对于一个按钮,注册了一个监听者后,点击按钮,监听者的actionPerformed(ActionEvent e)方法就能够自动执行,为什么能够自动调用呢??这是因为底层有一种机制,是一种模式,叫做观察者模式。1、观察者模式(Observer)定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,让他们能够自动更新自己。2、原创 2013-01-08 09:52:13 · 537 阅读 · 0 评论 -
33、AWT事件模型
事件——描述发生了什么的对象; 事件源——事件的产生器; 事件处理器——接收事件、解释事件并处理用户交互的方法; 如果用户在用户界面层执行了一个动作(鼠标点击和按键),这将导致一个事件的发生。事件是描述发生了什么的对象。存在各种不同类型的事件类用来描述各种类型的用户交互。 事件源——是一个事件的产生者。例如在Button组件上点击鼠标会产生以这个B原创 2013-01-07 20:48:40 · 2012 阅读 · 0 评论 -
32、AWT(Abstract Window Toolkit)
GUI(Graphical User Interface),图形用户界面关于文件的打包(形成.jar文件),myeclipse的File——>Export——>Java目录下的Jar File打包文件中含有META-INF目录,此目录下包含一个MANIFEST.MF文件,此文件指出了当双击Jar文件要执行的含有main方法的类名,文件内容如下:Manifest-Version: 1.0原创 2013-01-07 12:37:44 · 1825 阅读 · 0 评论 -
31、异常(Exception)
Java程序运行时会出现错误(Error)和异常(Exception),错误不能在进行处理,是致命的,异常还可以进行处理。java中的异常分为两大类: A)checked exception(非Runtime Exception) B)Unchecked exception(Runtime Exception)Java中所有的异常类都会直接或间接继承自Exception;R原创 2013-01-06 11:56:05 · 864 阅读 · 0 评论 -
30、注解(Annotation)
注解也是jdk1.5的新特性jdk内置注解1、Java注解(Annotation):Override注解表示子类要重写(override)父类的对应方法。@Override2、@Deprecated 表示方法是不建议被使用的public class DeprecatedTest{ @Deprecated public void doSomething() {原创 2013-01-05 21:50:30 · 700 阅读 · 0 评论 -
设计模式——29、代理模式(proxy)
代理模式的作用:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。1、代理模式一般涉及到的角色: a)抽象角色:声明真实对象和代理对象的共同接口 b)代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在原创 2013-01-05 18:07:31 · 869 阅读 · 0 评论 -
15、Object类详解
Class Object is the root of the class hierarchy.Every class has Object as a superclass.类Object是类层次结构的根,每个类都有一个Object类作为超类(父类)。也就是说每个类最终都继承了Object类。1、Object类位于java.lang包下,java.lang包在使用时无需显式导入,编译时由编译器原创 2012-12-20 15:36:02 · 3964 阅读 · 0 评论 -
设计模式——39、装饰模式(Decorator)
装饰模式又叫做包装模式(Wrapper);装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案;装饰模式以对客户透明的方式动态的给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同; 装饰模式可以在不创造更多子类的情况下,将对象的功能加以扩展。 装饰模式把客户端的调用委派到被装饰类。装饰模式的关键在于这种扩展完全是透明的;装饰模式是在原创 2013-01-09 19:58:54 · 538 阅读 · 0 评论 -
理解字节、字符与编码
在学习Java IO时,被出现的字节流、字符流搞得有点晕,就查了一下,觉得这篇文章很好,就转载了。 通过这篇文章,自己的理解就是:在屏幕上出现的、我们所看到的这些文字、字母、数字是叫字符,不同的国家按照自己的语言文字制定了自己的字符集标准,这就是ANSI字符集,在这个字符集中每个字符都有一个编号,我们所说的,比如Java定义一个字符变量时,存储的就是这个编号,而字符保存在计算机磁转载 2013-01-09 22:04:04 · 2210 阅读 · 0 评论 -
41、对象序列化与反序列化
将对象转换为字节流保存起来,并在以后还原这个对象,这种机制叫做对象序列化。 将一个对象保存到永久存储设备上称为持久化。 一个对象要想能够实现序列化,必须实现Serializable接口或Externalizable接口。1、Serializable是一个接口,并且没有定义方法。一个类如想被序列化,则需要实现java.io.Serializable接口,该接口中没有定原创 2013-01-10 16:40:12 · 829 阅读 · 0 评论 -
28、Java反射(reflection)机制(很重要)
Java语言的反射机制在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的。这种动态获取类的信息以及动态调用对象的方法的功能来自于Java 语言的反射(Reflection)机制。1、Java 反射机制主要提供了以下功能:在运行时判断任意一个对象所属的类。在运行时构造任意一个类的对象。在运行时判断任意一原创 2013-01-04 21:32:23 · 14803 阅读 · 0 评论 -
关于String中的intern方法(15章的进一步解释)
String中intern的方法 首先查看官方API那个的解释:———————————————————————————————————————internpublic String intern()返回字符串对象的规范化表示形式。 一个初始时为空的字符串池,它由类 String 私有地维护。 当调用 intern 方法时,如果池已经包含一个等于此 St转载 2012-12-20 15:39:26 · 510 阅读 · 0 评论 -
46、JVM之类加载器
ClassLoader(类加载器)1、Java虚拟机与程序的生命周期 在如下几种情况下,Java虚拟机将结束生命周期 –执行了System.exit()方法 –程序正常执行结束 –程序在执行过程中遇到了异常或错误而异常终止 –由于操作系统出现错误而导致Java虚拟机进程终止2、类的加载、连接与初始化 1)加载原创 2013-01-17 13:28:54 · 762 阅读 · 0 评论 -
45、java网络编程
使用java.net包中的相关类与接口进行网络编程1、网络基础:ISO/OSI七层协议协议:为进行网络中的数据交换(通信)而建立的规则、标准或约定。(=语义+语法+规则),不同层具有各自不同的协议。TCP/IP协议:TCP:面向连接的可靠的传输协议。UDP:是无连接的,不可靠的传输协议。 对等层实体之间虚拟通信。 下层向上层提供服务,实际通信在最底层完成T原创 2013-01-16 21:26:24 · 724 阅读 · 0 评论 -
44、对象的深克隆与浅克隆
深拷贝(deep clone)、浅拷贝(shallow clone)浅复制与深复制概念 –浅复制(浅克隆):被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。 –深复制(深克隆):被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象原创 2013-01-15 21:26:11 · 640 阅读 · 0 评论 -
43、多线程同步及synchronized关键字
为什么要引入同步机制 在多线程环境中,可能会有两个甚至更多的线程试图同时访问一个有限的资源。必须对这种潜在资源冲突进行预防。 解决方法:在线程使用一个资源时为其加锁即可。访问资源的第一个线程为其加上锁以后,其他线程便不能再使用那个资源,除非被解锁。public class FetchMoney{ public static void main(String[原创 2013-01-15 16:54:36 · 796 阅读 · 0 评论 -
42、线程与进程
线程Thread,多线程Multi-Thread1、线程概念什么是线程:线程就是程序中单独顺序的流控制。线程本身不能运行,它只能用于程序中。什么是多线程:多线程则指的是在单个程序中可以同时运行多个不同的线程执行不同的任务. 线程是程序内的顺序控制流,只能使用分配给程序的资源和环境。 多线程编程的目的,就是"最大限度地利用CPU资源",当某一线程的处理不需要占原创 2013-01-14 16:03:16 · 1062 阅读 · 0 评论 -
47、类加载器的父亲委托机制
类加载器的父亲委托机制(Parent Delegation) 类加载器用来把类加载到java虚拟机中。从JDK1.2开始,类的加载过程采用父亲委托机制。这种机制能更好的保证java平台的安全。在此委托机制中,除了Java虚拟机自带的根类加载器以外,其余的类加载器都有且只有一个父加载器。当Java程序请求加载器loader1加载Sample类时,loader1首先委托自原创 2013-01-25 09:30:01 · 1686 阅读 · 1 评论 -
关于unicode和UTF-8
unicode:简介 Unicode 是基于通用字符集(Universal Character Set)的标准来发展,并且同时也以书本的形式(The Unicode Standard,目前第五版由Addison-Wesley Professional出版,ISBN-10: 0321480910)对外发表。 2006年7月的最新版本的 Unicode 是5.0版本。 2005年3转载 2013-01-10 14:32:04 · 2474 阅读 · 0 评论 -
40、Java IO之字符流
尽管字节流提供了处理任何类型输入/输出操作的足够的功能,它们不能直接操作Unicode字符。既然Java的一个主要目的是支持“只写一次,到处运行”的哲学,包括直接的字符输入/输出支持是必要的。这里在学习几个字符输入/输出类。字符流层次结构的顶层是Reader 和Writer 抽象类。 字符输入/输出类是在java 的1.1版本中新加的。由此,你仍然可以发现遗留下的程序代码在应该使用字原创 2013-01-10 14:18:59 · 1131 阅读 · 0 评论 -
14、包与导入语句剖析
1、包(package):用于将完成不同功能的类分门别类,放在不同的目录(包)下。包的命名规则:将公司域名反转作为包名。如www.abc.com,com.abc.www为包名。对于包名来说,每个字母都需要小写。如果定义类的时候没有使用package,那么java就认为我们所定义的类位于默认包里面(default package)2、编译带有package声明的java源文件有两种方式:原创 2012-12-19 19:23:30 · 659 阅读 · 0 评论 -
设计模式——13、单例模式
Design Pattern(设计模式)单例模式(singleton )——表示一个类只会生成唯一的一个对象。思想:对象由类的构造方法生成,如果在类中定义一个public构造方法,则在其他类中可以使用new 类名()来生成无数类的对象,而如果我们禁止对构造方法的访问,就是只提供private(私有)构造方法,则外部类就无法调用new来生成对象(实例),现在就成了零例了。为了生成对象(实例)原创 2012-12-19 08:34:45 · 410 阅读 · 0 评论 -
8、方法参数传递、方法重载
1、如果一个java源文件中定义了多个类,那么这些类当中最多只能有一个类是public的,换句话说,定义的多个类可以都不是public的,main方法必须放在public类里面。2、参数传递举例public class Test{ public static void main(String[] args) { C原创 2012-12-14 10:30:49 · 1477 阅读 · 0 评论 -
18、集合(对java来说非常重要的技术)
java集合——java Collection,学习集合,要理解java集合框架,熟练使用java.util包中的相关类与接口进行程序开发。1、类集框架java.util包中包含java 2中新增的功能:Collection(集合,类集)。一个类集(Collection)是一组对象。类集的增加使得许多java.util中的成员在结构和体系结构上发生了根本的改变。2、类集概述java原创 2012-12-27 16:51:52 · 749 阅读 · 0 评论 -
17、java数组查找与交换排序及快速排序
简单的查找,从数组第一个元素开始,逐个与给定值比对,相等,返回数组下标,如果整个数组比对结束没有找到相等的,返回-1.1、二分查找法(binary search):前提条件,待查找的元素要有序。先确定三个量:low、heigh、和middle,分别表示一次查询的开始、结束和中间下标public class BinarySearch{ public static int bina原创 2012-12-25 21:24:17 · 1160 阅读 · 0 评论 -
16、StringBuffer类与包装类、java数组
字符串String是个常量,其对象一旦创建完毕就无法该改变,使用“+”进行拼接时,是生成了一个新的String对象,而不是向原有的String对象追加内容。字符串与任何其他原生数据类型变量相“+”,其他都先转换为字符串,然后相加。StringBuffer初始化有16个字符长度,append()方法返回StringBuffer对象本身,toString()方法返回一个字符串。1、包装类(Wr原创 2012-12-25 14:15:48 · 768 阅读 · 0 评论 -
1、Java SE入门、jdk及第一个java程序
Java分为几个版本:java SE(Java Standard Edition)、Java ME(Java Micro Edition)、Java EE(Java Enterprise Edition)Java由Sun公司推出(后被oracle公司收购)最初这几个版本称为J2SE、J2ME、J2EEJDK:Java Developmnt Kit (Java开发工具包,开发必备,包含编原创 2012-12-05 10:46:35 · 972 阅读 · 0 评论 -
7、面向对象之封装
1、如果一个类包含了属性与方法,那么该类的每一个对象都具有自己的属性,但无论一个类有多少个对象,这些对象共享同一个方法。2、关于方法参数传递的总结:对于Java中的方法参数传递,无论传递的是原生数据类型还是引用类型,统一是传值(pass by value)。3、什么类型的引用就能指向什么类型的对象,比如People类型的引用就能指向People类型的对象,但不能指向Student类型的对象原创 2012-12-11 09:06:25 · 454 阅读 · 0 评论 -
6、面向对象之封装
1、类中的属性又叫成员变量(member variable),属性:property或者attribute。对象(Object)又叫做实例(Instance)。生成一个对象的过程又叫做实例化。2、命名约定 a)类:首字母大写,如果一个类名由多个单词构成,那么每个单词首字母大写,中间不适用任何的连接符。比如MemberTest类 b)方法:首字母小写。如果一个方法有多个单词构原创 2012-12-10 20:57:03 · 446 阅读 · 0 评论 -
5、理解面向对象程序设计——封装
(编程好习惯——进行判断时,将常量写在前面,如:if(5==i),而不要写成if(i==5))面向对象程序设计——Object Oriented Programming,OOP1、什么是面向对象?在面向对象程序设计中有两个重要概念:类(class)和对象(object)。2、类:是一种抽象的概念,类中包含了数据(通常使用名词来表示)与对数据的操纵(通常使用动词来表示)。比如人就是一种抽原创 2012-12-10 16:10:14 · 1207 阅读 · 0 评论 -
4、流程控制语句——Flow Control Statement
1、条件运算符(三元表达式),其形式为:type d = a ? b : c ; 具体化形式为:int d = 2 2、流程控制语句if第一种形式: if(布尔表达式){ //待执行的代码} 第二种形式: if(布尔表达式){ //待执行的代码} else{ //待执行的原创 2012-12-10 11:32:31 · 647 阅读 · 0 评论 -
3、运算符(operator)
养成良好的编程习惯1、代码片段:int a = 1;int b = 2;int c = a/b;System.out.println(c);结果为0当有若干个变量参与运算时,结果类型取决于这些变量中表示范围最大的那个变量类型。比如参与运算中有int、double、short,最终运算结果类型为double。double a = 1;int b = 2;int原创 2012-12-07 10:34:01 · 692 阅读 · 0 评论 -
19、集合之LinkedList
LinkedList——链表相比较于ArrayList的方法,除了Add(),get(),remove(),size()等,LinkedList多了addLast(),addFirst(),getFirst1、一般将数据结构分为两大类:线性数据结构和非线性数据结构。线性数据结构有线性表、栈、队列、串、数组和文件;非线性数据结构有树和图。线性表的逻辑结构是n个数据元素的有限序列: (a1原创 2012-12-27 22:24:36 · 807 阅读 · 0 评论 -
20、栈和队列
1、ArrayList有三个构造函数:ArrayList() 构造一个初始容量为 10 的空列表。 ArrayList(Collection c) 构造一个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的。ArrayList(int initialCapacity) 构造一个具有原创 2012-12-28 08:31:19 · 495 阅读 · 0 评论 -
22、集合之Set之Map
Map——映射An object that maps keys to values.A map cannot contain duplicate keys;each key can map to at most one value.Map是将键映射到值的对象,一个映射不能包含重复的键,一个键最多只能映射到一个值。1、Map是一个接口,它的实现类:HashMapimport java原创 2012-12-29 11:22:54 · 465 阅读 · 0 评论 -
11、接口——interface
1、接口的地位等同于class,接口中的所有方法都是抽象方法。public interface InterfaceTest{public abstract void test();public void test1();//省略掉关键字abstract,这样也正确,}由于接口中的所有方法都是抽象方法。在声明接口中的方法时,可以使用abstract关键字,也可以不使用。通常情原创 2012-12-18 11:16:26 · 563 阅读 · 0 评论