java基础--复习笔记.docx.pdf

上传人:tbuqq 文档编号:5616057 上传时间:2020-07-02 格式:PDF 页数:17 大小:551.51KB
返回 下载 相关 举报
java基础--复习笔记.docx.pdf_第1页
第1页 / 共17页
java基础--复习笔记.docx.pdf_第2页
第2页 / 共17页
java基础--复习笔记.docx.pdf_第3页
第3页 / 共17页
java基础--复习笔记.docx.pdf_第4页
第4页 / 共17页
java基础--复习笔记.docx.pdf_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《java基础--复习笔记.docx.pdf》由会员分享,可在线阅读,更多相关《java基础--复习笔记.docx.pdf(17页珍藏版)》请在三一文库上搜索。

1、JAVA基础 2011年4月17日 22:21 Path的主要功能是设置JDK的可执行命令classpath主要是在执行的时候起作用,告诉JVM类的保 存路径,一般设置成” Ps:classpath只在java命令的时候起作用,而对于javac不起任何作用 public class文件名称必须与类名称一致 class文件名称可以与类名称不一致 在整个java屮貝允许有 - ?个public class声明,但是允许有其他的class声明 java中的标识符 java屮的包、类、方法、参数和变量的名字,可由任意顺序的大小写字母、数字、下划线(_) 和美 元符号( $)组成,但标识符不能以数字开头

2、,不能是javaz中的保留关键字。 关键字说明: 1、在JAVA中goto和const没有任何的意义 2 assert是在JDK1.4 Z后增加进來的 3、enum是在JDK1.5 Z后增加进来的 java中以下儿个单词没彳j特殊意义,不要作为标识符:true,false,null 数值型 整数类型(byte,short, int, long) 浮点类型(float, double) 字符型(char) 布尔型(boolean) PS: 基本数据类型:类似于普通的值 引用数据类型:传递的是内存的地址 NO数据类型大小/ 位可表示的数据范围 1long (IK整形)64-922337203685

3、4775808 8223372036854775807 2int (整数)32-2147483648- 2147483647 3short (短整数)16-32768 32767 4byte (位)8-128127 5char (字符)20255 6float (单精度)32-3.4E38 (-3.4X10 38) 3.4E38 (-3.4X1038) 7double (双精度)64-1.7E308 (-1.7 X IO 308 ) T.7E308 (-1.7 X 10 308 ) 字符类型在内存中占有2个字节,可以用來保存英文字母等字符,计算机处理字符类型时,是把这 些字符当成不同的整数来看

4、待,因此,严格说,字符类型也算是整数类型的一?种 NO区别点重载覆写 1单词Overload! ngOverridi ng 2 定义方法名称相同,参数的类型或个数 不同 方法名称、参数的类型、返回值类型全部 相同 3定义对权限没有要求被覆写的方法不能拥有更严格的权限 4范围发生在一个类中发生在继承类中 No区别点thissuper 1 属性访 问 访问本类中的属性,如果本类没有此属性则从 父类中继续查找 访问父类中的属性 2 方法访问本类中的方法,如果本类中没冇此方法, 则此父类屮继续查找 直接访问父类中的方法 3 调用构 造 调用木类构造,必须放在构造方法的首行 调用父类构造,必须放在了类构

5、 造方法首行 4特殊表示当前对象无次概念 final关键字可以修饰类,函数,变量 类修饰类为最终类,任何类不能再继承它. 即:不能有子类,该类小的所有方法都隐式地被 指定为final 函数该方法在类里是授终方法, 继承它的方法不能去垂写它?即:不能被覆写 变量被修饰的变量是常量或者叫终态变量,一旦初始化后就不能再改变变量的值. 抽象类的定义及使川规则 包含一个抽象方法的类必须是抽象类 抽彖类和抽彖方法都要使用abstract关键字声明 抽彖方法只需声明而不需要实现 抽象类必须被子类继承,子类( 如果不是抽象类 ) 必须覆写抽象类中的抽象方法。接口的定义格式 Interface 接口名称 全局常

6、量; 抽象方法 ; 默认为public abstract类型的 对象的多态性 对象的多态性主要分为以下两种类型: 向上转型:子类对彖一父类对彖 对于向上转型,程序会口动完成,格式: 对象向上转型:父类父类对象二了类实例; 向下转型:父类对象一子类对象 对于向下转型时,必须明确的指明要转型的子类类型格式:对彖向下转型:了类了类对彖 =(了类) 父类实例 ps:转型Z后,因为操作的是父类对象,所以是无法找到在子类中定义的新方法。 个类永远不耍去继承一个C经实现好的类。只能继承抽象类或实现接口。 NO.区别点抽彖类接口 1定义包含一个抽象方法的类抽象方法和全局常量的集合 2 组成 构造方法、抽象方法

7、、普通方法、常变 a 常量、抽象方法 3使用了类继承抽象类(extends)了类实现接口(implements) 4关系抽彖类町以实现多个接口接口不能继承抽彖类,但允许继承 多个接口 5常用设计 模式 模板设计工厂设计、代理设计 6对象都通过对象的多态件产牛?实例化对象 7局限抽象类有单继承的局限接口没彳j此局限 8 实际 作为一个模板 是作为一个标准或是表示一种能力 9选择 如果抽象类和接口都可以使用的话,优先 使用接口,因为避免单继承的局限 10特殊一个抽象类中可以包金多个接口,一个 接11中可以包含多个抽象类 抽象类和接口的实例化:通过对象多态性 抽象类表示一个模板,接口制定的是一个标准

8、 常见的设计模式:模板设计,工厂设计,代理设计,适配器设计 Object类屮的主要方法:equals方法主要功能是完成两个对彖的比较 NO.方法名称类型描述 1public Objectf)构造构造方法 2public boolean equals(Object obj)普通对象比较 3public int hashCode()普通取得Hash码 4public String toStringf)普通对象打印时调川 包装类 No基本数据类型包装类 1intInteger 2charCharacter 3shortShort 4longLong 5floatFloat 6doubleDouble

9、 7boolea nBoolea n 8byteByte NO包名称作用 1javaang 此包为基木的包,像String这样的类就都保存在此包Z中,在JDK1.0 的时候如果 想编写程序,则必须手工导入此包,但是随后的JDK解决了此问题, 所以此包现在为口动导入 2 java Jan g.reflect 此包为反射机制的包, 是java.lang的子包 , 在java常用类库中回味读者 介绍 3java.util 此包为工貝 ?包,一些常用的类库、口期操作等等都在此包Z中,如果 把此包掌握精通齐种设计思路都好理解 4java.text提供一些文本的处理类库 5java.sql数据库操作包,提

10、供了各种数据库操作的类和接口 6java, net完成网络编程 7java.io输入、输出处理 8 java.awt 包含了构成抽象窗口工具集(abstract window toolkits)的多个类 , 这些类被 用來构建和管理应用程序的图形用户界面(GUI) 9javax.swi ng 此包用于建立图形用八界血,此包屮的组件相对于java.awt包而言是轻 量级组件 jar命令中的主要参数: c:创建新的文档 v:生成详细的输岀信息 f:指定存档的文件名 javac -d Hello, java jar -cvf my. jar org 一个jar包如果要想使用的话,则必须配置class

11、path路径set classpath二. ;d:packdemonmy. jar java中四种访问权限 范围privatedefaultprotectedpublic 同一类VJJJ 同?包中的类VVV 不同包的子类JJ 其他包中的类 J Integer,Byte,Float,Double,Short,Long 都属于Number 类的 了类,Number 类木身提供了一系列的返回 以上六种基木数据类型的操作 Character, Boolean 屈J ? Object 的H接子炎 throw和throws关键字联合使丿11问题 throw:抛出界常对彖 throws:在方法声明处使用,表

12、示此方法不处理异常 Exception的界常是必须处理的,而RuntimeException的界常是町以不处理的,但是为了保证程序的 运行,只要有异常最好全部都处理。 如果需要自定义界常,则直接继承Exception类即可 java命名规范 类: 所有单词的首字母大写, 如:Testjava 方法:第一 ?个单词的首字母小写,Z后每个单词的首字母大写如:getlnfoO 属性:第一个单词的首字母小写,Z后每个单词的首字母大写女II: studentName 包: 所有单词的字母小写 , 如:com. sou. cose, fbl 常量:所有单词的字母大写如:FLAG 进程是程序的一次动态执行过

13、程,它经历了从代码加载、执行到运行完毕的一个完整过程,这个过程 也是进程本身从产生、发展到最终消亡的过程 多线程是实现并发机制的一种有效手段。迹程和线程一样,都是是实现并发的一个基本单位。JAVA 的多线程实现 在JAVA中如果要想实现多线程町以采用以下两种方式: 继承Thread类 实现Runable接I I 为什么不能直接调用run ()方法,而是通过start ()调用呢 查找JDK中关于java.Iang.Thread类的定义 start 0方法有可能抛出异常 stopBeforeStart 是一个boolean 类型的变量 native关键字表示的是一个由java调用本机操作系统函数

14、的一个关键字,在java屮, 运 行java程丿芋调用本机的操作系统的函数以完成特定的功能。 如果要是想实现多线程的话,则肯定需要操作系统的支持,因为多线程操作中牵扯到一 个抢占CPU的情况, - 要等待CPU进行调度,那么这一点肯定需要操作系统的底展支 持,所以使用了native调用木机的系统函数,而目- 在各个操作系统中多线程的实现底 层代码肯定是不同的,所以使用native关键字也可以让JVM自动去调整个不同的JVM 实现。 threadstatus也表示一种状态 , 如果线程已经启动了再调用start()方法的时候就有可能产 生异常。 Thread类与Runnable接口的区别 使用T

15、hread类在操作多线程的时候无法达到资源共享的目的,而使用Runnable接口实现的多 线程操作可以实现资源共享。 使用Runnable接口的优点 1、适合多个相同程序代码的线程去处理同一个资源 2、可以避免山于单继承局限所带来的影响 3、 增强了程序的健壮性,代码能够被多个线程共享,代码与数据是独立的线程的状 态: 创建状态:准备好了一个多线程的对象:Thread t = new Thread (); 就绪状态:调用了start。方法,等待CPU进行调度 运行状态:执行run()方法 阻塞状态:暂时停止执行,可能将资源交给其他线程使用 终止状态 ( 死亡状态 ) :线程执行完毕了,不再使川

16、了 线程与进行的区别,关系: 线程是在进程的基础Z上划分的 线程消失进程不会消失,进程如果消失了,则线程肯定会消失 ps:毎当java程序执行的时候,实际上都会启动一个JVM,每一个JVM实际上就是在操作系统中启动 了一个进程。JAVA屮木身具备了垃圾回收机制,所以java运行时至少启动了两个线程:主线程,GC 代码块分为四种: 普通代码块:直接定义在方法屮 构造快:直接定义在类中,优先于构造方法执行,重复调用 静态块:使用static关键字声明,优先于构造快执行,只执行一次 同步代码块:使用synchronized关键字声明的代码块,成为同步代码块synchronized不但可以 定义代码块

17、,还可以用來定义同步方法注意: 1、 资源共享时需要进行同步操作 2、 程序中过多的同步会产生死锁 Object类对线程的支持?等待与唤醒 NO方法类型描述 1 public final void wait() throws InterruptedExcepti on 普通线程等待 2 public final void wait(long timeout) throws In terruptedExcepti on 普通 线程等待,并指定等待的漫 长时间,以毫秒为单位 3 public final void wait(long timeoutjnt nanos) throws Interru

18、ptedException 普通线程等待,并指定等待的最 长毫秒及纳秒 4public final void notify()普通唤醒第一个等待的线程 5public final void notifyAII()普通唤醒全部等待的线程 泛型 泛型可以解决数据类型的安全性问题,它主要的原理,是在类声明的时候,通过一个标志标识 类中某个属性的类型或者是某个方法的返回值及参数类型。这样在类声明或实例化的时候只要 指定好需要的类型即可。 泛型对象定义: class类泛型类型 修饰符泛型类型屈性;public 泛型类型getterO public void setter(泛型类型变 量) 受限泛型 在引

19、用传递中,泛型操作中也可以设置一个泛型对象的范围上限和范围下限。范围上限使川 extends关键字声明,农示参数化的类型可能是所指定的类型,或者是此类型的子类,而范围下 限使用super进行声明,表示参数化的类型可能是所指定的类型,或者是此类型的弗雷,直至 Object类 设置上限: 声明对彖:类名称? extends类对象名称 定义类:访问权限类名称V泛型标识extends类 设置下限: 声明对象:类名称? super类对象名称定义类:访问权限类名称v 泛型标识 extends类 ?个类的子类可以通过对彖多态性,为其父类实例化,但是在泛型操作屮,子类的泛型类型是无法 使用父类的泛型类型接受的

20、,例如InfovString不能使用lnfoObject接受 泛型方法的定义: 访问权限泛型标识泛型标识方法名称 ( 泛型标识参数名称 ) 国际化实现的支持类 如果要想实现Java程序的国你化操作必须通过以下的三个类完成java, ut订.Locale用于表示一 个国家语言类java.util.ResourceBundel用于访问资源文件java.text.MessageFormat格式 化资源文件的占位字符串( 该类是Format类的子类 ) 资源文件的优先级: Message zh CN. class Message_zh_CN. properties Message, propertie

21、s System类,列出本机的全部系统属性的方法 System.getProperties().list(System.out); 列出系统全部属性 ?个对彖如果不使用,则肯定要等待进行垃圾收集,垃圾收集可以自动调用也可以手工调用,手工 调用的时候就是调用System.gcf咸者Runtime.getRuntime().gc()o但是,如果一个对彖在回收Z 前需要 做一些收尾工作,则就必须覆写Object类中的: protected void finalize() throws Throwable 在对象被回收之前进行调丿IJ,以处理对象回收而的若干操作,例如释放资源等等。 SimpleDat

22、eFormat类使用的时候,必须注遺的是在构造对彖时要传入匹配的模板。 构造方法:public SimpleDateFormat(String pattern) 转换:public Date parse(String source) throws ParseException 此时取得的是全部的时间数格式 化:public final String format(Date date)将时间JE新格式化成字符串显示 PS: lx DateEormat可以直接使川,但莫本身是- 一个抽象类,可以根据Locale指定的区域不 同得到不同的日期时间显示效呆 2 Si m p 1 eDat eF or

23、mat 类是Da t eFormat 类的子类 , 一般情况卜來讲DateFormat 类 很少会直接使用,而都使丿LI SimpleDateFormat类完成。 MessageFormat,DateFormat,NumberFormat是Format三个常用的子类,如果要想进一步完成 一个好的国际化程序,则肯定需耍同时使用这样三个类完成,根据不同的国家显示日期, 或者 显示货币的形式。 在以后的JAVA类库屮会经常看到Cl enable接口的出现,一定要记住,只冇实现了此接口,对彖才 可以被克隆,否则无法克隆。 一种比较器:Comparator 如呆一个类已经开发完成,但是在此类建立的初期并

24、没有实现Comparable接口,此时肯定是 无法进行对彖排序操作的,所以为了解决这样的问题,java又定义了另一个比较器的操作接口 -Comparator 此接口定义在java, util包中, 接口定义如下 : public in terface ComparatorT public int compare(T olj o2 ); boolean equals(Object obj); 如果想耍止则表达式驱动起來,则必须依靠Pattern类和Matcher类 Pattern主要是表示一个规则的意思,即:止则表达式的规则需要在Pattern类屮使用。Matcher 类主要表示使用Patter

25、n指定好的验证规则。 schedule。与scheduleAtFiexdRate()方法的区别 schedult()方法的执行时间间隔永远是固定的,如果Z前出现了延迟的情况,Z厉也会继续按照 设定好的间隔时间來执行 scheduleAtFixedRate()A法可以根据出现的延迟时间自动调整下一次间隔的执行时间TimeTask 类 要想执行具体的任务,则必须使用TimeTask类,TimeTask类是一个抽象类,如果要使用该 类,需要自己建立一个类來继承此类,并实现其中的抽彖方法。 No方法类型描述 1 public void cancel() 普通用来终止此任务,如果该任务只执行一次而几还没

26、 冇执行,则永远不会再执行,如果为重复执行任 务,则Z后不会再执行 ( 如果任务正在执行,则执 行完后不会再执行 ) 2 public void run() 普通该任务所要执行的具体操作,该方法引入的接口 Runnable屮的方法,了类需要覆写此方法 3public long scheduleExectionTime() 普通返回最近一次要执行该任务的时间( 如果止在执 行,则返冋此任务的执行安排时间) ,- 般 在run() 方法中调用,用來判断当前是否有足够的时间來执 行完成该任务 java屮Io操作有札I应的步骤,以文件操作为例,主要的操作流程如下: 1使用File类打开 - 个文件 2

27、、 通过字节流或字符流的子类,指定输出的位置 3、 进行读 / 写操作 4、 关闭输入 / 输出 Inputstream类的常用方法 NO方法或常量类型描述 1 public int available!) throws lOExcepti on 普通可以取得输入文件的大小 2 public void close) throws lOExcepti on 普通关闭输入流 3 public abstract int read() throws lOExcetion 普通读取内容, i 数字的方式读取 4public int read(byte b) throws普通将内容读到byte数组Z中,同

28、时返 lOExcetio n回读入的个数 Writer类的常用方法 no方法或常量类型描述 1public abstarct void close() throws lOExcetion普通关闭输出流 2public void write(String str) throws lOExcetion普通将字符串输出 3 public void write(char cbuf) throws lOExcepti on 普通将字符数组输出 4public abstract void flush() throws lOExcetion普通强制性清空缓存 字符流的操作比字节流操作好一点,就是可以宜接输出

29、字符串了。不用再像之前那样进行转换 操作。 字符流与字节流的区别 字节流在操作的时候本身是不会用到缓冲区(内存)的,是与文件本身直接操作的,而字符流 在操作的时候是使用到缓冲区的。 字节流:程序一字节流(直接操作文件)一文件 字符流:程序一字符流一缓存? 文件(数据在先放在缓存之后,再从缓存写入文 件) 开发中是使用字节流还是字符流好? 在所有的硬盘上保存文件或是进行传输的时候都是以字节的方式进行的。包括图 片也是按字节完成,而字符是只有在内存中才会形成的,所冇使川字节的操作是 最多的。 outputStreamWriter 和InputStreamReader 在整个10包中,实际上就是分为

30、字节流和字符流,但是除了这两个流Z外,还 存在一 组字节流字符流的转换类 OutputStreamWriter:是Writer的子类,将输出的字符流变为字节流,即:将一个字符 流的输出对彖变为字节流的输出对彖。 InputStreamReader:是Reader的了类,将输入的字节流变为字符流, 即: 将一 个字节流 的输入对象变为字符流的输入对象。 转换步骤 如果以文件操作为例,则在内存中的字符数据需要通过OutputStreamWriter变 为字节流 才能保存在文件Z中,读取的时候需要将读入的字节流通过InputStreamReader 变为字 符流。 写入数据:程序 -* 了符数据(内

31、存中的数据)7符流-*OutputStreamWriter (将输出的字符流变为字节流)一字节流一文件 读取数据:程序一字符数据(内存屮的数据)f 字符流InputStreamReader(将 输入的字 节流变为字符流)一字节流一文件 FileWriter不是Writer的子类,ifij是转换流的子类FileReader不是Reader的子类,而是 转换流的子类 也就是说,最后不管如何,虽然是以字符的输出流形式操作了字节的输出流,但 是实际上还是以字节的形式输出,而字符的输入流,虽然以字符的形式操作,但 实际上还是使用的字节流,也就是说,传输或者是从文件中读取数据的时候,文 件里真正保存的数据

32、永远是字节。 ByteArraylnputStream 和ByteArrayOutputStream 除了输入输出可以从文件中来Z外,也可以将输入输出的位置设置在内存上,此 时就要使用ByteArrayInputstrea ByteArrayOutputStream 來完 成输入输出功能 了。 ByteArrayTnputStream主要完成将内容写入到内存中ByteArrayOutputStream抓哟 将内存中的数据输出写入内存:数据ByteArray 1 nputStrearn ( 将数据写入到内存 之中 ) 一内 存 内存输出:数据 -*ByteArrayOutputStream (

33、从内存读取数据 ) 内存 内存操作流的对 戏那个一定是一内存为准,不要以程序为准 实际上此时可以通过向上转型的关系为OutputStream或Inputstream实例 化 管道的主要作用是可以进行两个线程间的通讯,分为管道输出流 (PipeedOutputStream)、管道输入流(PipedlnputStrcam), 如果要想进行管道输出, 则必须把输出 流连在输入流上,在PipedOutputStream类上有如下的一个方法用于连接管道: public void connect(PipedlnputStream snk) throws lOExcetion 线程1 PipeedOutpu

34、tStream PipedlnputStream 线程2 输出流 一连接一输入流 在整个10包中,打印刘是输出信息最方便的类,主要包含字节打印流(PrintStream) 和字符打印 流(PrintWriter)。打印流提供了非常方便的打印功能,可以打印任何 的数据类型,例如:小数、整数、字符等。PrintStream类的常用方法 NO方法类型描述 1 public PrintStream(File file)throws FileNotFo un d Exceti on 构造通过一个File对象实例化 PrintStream 类 2 public PrintStream(OutputStre

35、am out) 构造 接受Outputstream对象, 实 例化PrintStream 类 3 public PrintStream printf(Locale 1,String format,Object .args) 普通根据指定的Locale进行格式化 输出 4 public PrintStream printf(String format,Object.args) 普通根据本地环境格式化输出 5public void print(boolean b)普通 此方法被重载很多次,输出任 意数据 6 public void printin(boolean b) 普通此方法被重载很多次,输出

36、任 意数据后换行 System表示系统类 NOSystem类的常量描述 1public static final PrintStream out对应系统标准输出,一般是显示器 2public static final PrintStream err错误信息输出 3public static final PrintStream in度硬着标准输入,一般是键盘 使用static final关键字声明的变量是全局常量,主要是常量,则索冇的单词字母必须全部大写,如果 按照现在的操作标准:System.OUTSystem. out NO方法或常量类型描述 1 public static void set

37、Out(PrintStream out) 普通匝定向“标准”输出流 2 public static void setErr(PrintStream err) 普通 重定向“标准”错误输出流 3public static void setln(lnputStream in)普通重定向“标准”输入流 最好的输入方式是将全部输入的数据暂时放到一块内存之中,之后一次性的从内存中读取出数 据,这样所冇数据只读了一次,则不会造成乱码,而也不会受长度的限制。Buffer:表示缓冲 区的,之前的StringBuffer,缓冲区屮的内容可以更改,看以提高效率。如果要想接受任意长度的 数据,而R避免乱码产生,就可

38、以使用BufferedReader 因为输入的数据有可能出现中文,所 以,此处使用字符流完成。 System.in本身表示的是lnputStream(7节流) ,现在要求接收的是有个7符流,需要将了节流变 为7符流才nJ以,InputStreamReader BufferedReader 实例化 BufferedReader buf = null; buf = new BufferedReader(new InputStreamReader(System.in); 将字符流放到字符流缓冲区之中一将字节流变为字符流一字节输入流 Scanner ( 专门的输入数据类 ) 此类以完成Buffered

39、Reader类的功能。也町以方便的对输入数据进行验 证。 NO方法或常量类型描述 1 public Seanner (Fi le source) throws FileNotFoundException 构造从文件中接受内容 2 public Seanner(lnputStream source)构造从指定的字节输入流中接收 内容 3public boolean hasNext(Pattern pattern) 普通判断输入的数据是否符合指 定的正则标准 4public boolean hasNextlnt()普通判断输入的是否是整数 5public boolean hasNextFloat(

40、)普通判断输入的是否是小数 6public String next()普通接受内容 7public String next(Pattern pattern)普通接受内容,进行正则验证 8public int nextlnt()普通接受数字 9public float nextFloat()普通接受小数 10 public Seanner useDelimiter(String pattern) 普通设置读取的分隔符 数据操作流 数据输出流(DataOutputStreain 是OutputStream 的子类 ) 数据输入流(DatalnputStream) 如果要想使用数据操作流,则肯定要由

41、用户H己制定数据的保存格式,必须按指定好的格式保 存数据,才可以使用数据输入流将数据读取进来。 Sequenceinputstream 类的常用方法 NO方法类型描述 1 public Seque nceln putStream(l nputStream sljnputStream s2) 普通使用两个输入流对象实 例化木类对象 2public int available() throws lOException普通返回文件人小 冋退流 在java io中所有的数据都是采用顺序的读取方式,即,对于一?个输入流來讲都是采用从头到 尾顺序读取的,如果在输入流中某个不需要的内容被读取进來,则只能通过

42、程序将这些不需要 的内容处理掉,为了解决这样的读取问题,在JAVA屮提供了一种回退输入流 (PushbacklnputStrcain、PushbackRoader),可以把读取进來的某些数据重新退回到输入流的缓冲 区Z中。 编码: 在计算机世界里,任何的文字都是以指定的编码方式存在的,在JAVA程序的开发屮最常见的 是以下几种编码: ISO8859-1编码属于单字节编码,最多只能表示0-255的字符范围,主要在英文上应用 GBK/GB2312中文的国际编码,专门用来表示汉字,是双字节编码 unicode java屮就是使用此编码方式,也是最标准的一种编码, 是使用16进制表示的 编码,但此编码

43、不兼容iso8859-l编码 UTF由于unicode不支持iso8859-l编码,而fl.容易容易占用更多的空间,而且对于英文字母也 需要使用两个字节编码,这样使用unicode不便于传输和存储,因此产生了utf编 码,utf编码兼 容了iso8859T编码,同时也可以用來表示所有的语言字符,不过utf编 码是不定长编码,每一 个字符的长度从1-16个字节不等, - ?般在中文网页中使用此编码,以为这样可以节省空间。 对象的序列化和反序列化 使用对象输入流输出序列化的步骤: 序列化 反序列化 程序ObjectOutputStream 序列化对象-ObjectlnputStream-* 程序

44、在使用Extnerl izable接I 1的时候需要在被序列化的类中定义一个无参构造,因为此接口在进行反序 列化的时候,会先使川类屮的无参构造方法进行实例化,之后再将内容分别设置到属性Z中 E x t e r n a l i z a b l e接 口 与S e r i a li z a b l e接 口 实 现 序 列 化 的 区 别 NO区别SerializableExtnerlizable 1 实现复 杂度 实现简单,JAVA对其有内建 支持 实现复杂,由开发人员自己完成 2 执行效 率 所冇对彖由JAVA同一保存, 性能较低 开发人员决定那个对象保存, 对能 的速 度提升 3 保存信息

45、保存时占用空间大部分存储,可能的空间减少 对象序列化总结 : 1、 对彖序列化的作川,对彖序列化病不一定都向文件中保存,也冇可能面向与其他的 输入或输出 2、 被序列化対象的类必须实现Serializable接口,如果某个属性不希望被保存下来,则 可以使用transient关键字声明 3 ObjectOutputStream 序列化对象 ,Objectinputstream 反序列化对象 4、Externalizable接口的作用:开发人员手工实现序列化的操作 5、 使用序列化保存一组对象的时候要使用对象数组的形式操作。 对象数组中包含一组对象,但是对象数组使用的吋候存在一个长度的限制,那么类

46、集是专门解 决这种限制的,使用类集可以方便的向数组中增加任意多个数据。 对象数组的操作屮基木上都要保证对象类型的一致性,对于类集而言木身其内部的元素也应该 保持一致,不管是何种类型的数据,所有的操作方式都应该是一样的。 类集框架主要接口 NO接口描述 1 Collecti on存放一组单值的最大接口,所谓的单值是指集合屮的每个元素都是一个对 象,一般很少会直接使用此接口直接操作 2 List 是Collection接口的子接口,也是最常用的接口,此接口对Collection 接口进 行了人量的扩充,里面的内容是允许重复的。 3Set是Collection接口的子接口,没冇对Collection

47、接口进行扩充,里面不允许 存放重复内容 所有的重复复内容是靠hashCode()和equals()两个方法区分的 TreeSet依靠Comparable接口完成排序的操作 4Map Map是存放一对值的最人接口,即,接口屮的每个元素都是一对,以Key- Lvalue的形式保存 常用子类: HashMap, Hashtable, TreeMap, WeakHashMap 5Iterator 集合的输出接口,用于输出集合小的内容,只能进行从前到后的单向输出 6Listiterator是Iterator的了接口,可以进行双向输出 7Enu merati on是最早的输出接口,用于输出指定集合中的内容

48、 8 SortedSet 单值的排序接口,实现此接口的集合类,里而的内容是可以排序的,使用 比较器排序 9SortedMap存放一対值的排序接口,实现此接口的集合类,里血的内容按照Key 排 序,使用比较器排序 10Queue队列接口,此接口的了类可以实现队列操作 11 Map.Entry Map.Entry的内部接口 , 每个Map. Entry对象都保存着对Key-* value的内 容, 每个Map接口中都保存多个Map. Entry接口实例。 子类的差界ArrayList与Vector的区别 NO比较点ArrayListVector 1 性能采用界 ?步处理方式,性能更 高 采用同步处

49、理方式,性能较低 2 线程安非线程安全线程安全 3 输出只能使用Iterator、foreach 输 出 “J 以使用Iteratorforeach.Enumeration 输出 Map接口的常用了类 HashMap:无序存放的,是新的操作类,Key不允许重复 Hashtable:无序存放的 , 是旧的操作类 ,key不允许重复 TreeMap:可以排序的Map集合,按集合中的key排序,key不允许重复WeakllashMap:弱 引用的Map集合, 当集合中的某些内容不再使用时, 可以清除掉无用的数据,可以使用gc进行 回收。 IdenttityHashMap: key 口J 以重复的Map 集合 TreeMap:排序类 , 按key排序 NO比较点HashMapHashtable 1 性能 米用异步处理方式,性能更高 采用同步处理方式,性能较低 2线程安全非线程安全线程安全 Map接口输出 对于Map接口来说,其本身是不能直接使用迭代( 例如:Iterator,foreach)进彳亍 输出 的,因为Map中的每个位置存放的是一对值(keyvalue),而Iterator中 每次只能找到一 个值。所以如果此时非要使用迭代

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1