版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、J2SE简介 JAVA初步 面向对象 常用接口/类 计算机语言发展史及Java的历史地位 Java发展史与java体系 Java程序运行机制及优劣势分析 Java开发环境配置 Java开发、编译、运行、打包 Java基础语法、数据类型、数组 Java编写习惯 1.机器语言 2.汇编 3.高级语言:结构化、面向对象 4. 面向用户语言(智能编程)?所见即所得(图 形化)?SQL? 5.自然语言? 计算机语言发展史及Java的历史地位 Java发展史与java体系 Java程序运行机制及优劣势分析 Java开发环境配置 Java开发、编译、运行、打包 Java基础语法、数据类型、数组 Java编写
2、习惯 95年,Sun发布JDK1.0 98年,JDK1.2,更名为Java2 后续JDK1.3、1.4、JDK1.5,更名为Java 5.0 (最 新为JDK JDK 7 7) j2se java web j2eej2me移动增值 JAVA能开发那些类型的程序? Software Devleopment Kit (软件开发 包) Java Runtime Environment (Java运行环 境) 开发需要JDK 用户只需JRE 计算机语言发展史及Java的历史地位 Java发展史与java体系 Java程序运行机制及优劣势分析 Java开发环境配置 Java开发、编译、运行、打包 Jav
3、a基础语法、数据类型、数组 Java编写习惯 Java两种核心机制 Java虚拟机(Java Virtual Machine) 垃圾收集机制(Garbage collection) 源程序源程序 (*.java文件)文件) 字节码字节码 (*.class文件)文件) Java编译器编译器 类装载器类装载器 Class Loader 字节码校验器字节码校验器 byte verifier 解释器解释器 interpretor 系统平台系统平台 Java虚拟机可以理解成一个以字节码为机器指令的 CPU。 对于不同的运行平台,有不同的虚拟机。 Java 虚拟机机制屏蔽了底层运行平台的差别,实现了“一次
4、编译,随处运 行”。 UNIX JVM for UNIX Windows JVM for Windows Other Platform JVM for Other *.java*.class 编译编译执行执行 garbage collector 不再使用的内存空间应回收垃圾收集。 在C/C+ 等语言中,由程序员负责回收无用内存。 Java语言消除了程序员回收无用内存空间的责任; 它提供一种系统级线程跟踪存储空间的分配情况。 并在JVM的空闲时,检查并释放那些可被释放的存 储器空间。 垃圾收集在Java程序运行过程中自动进行,程序员 无法精确控制和干预。 硬盘 程序 内存 代码 操作系统 代码
5、1:Load到内存区 2:找到main方法开始执行 heap stack data segment code segment 3:执行过程中的内存管理 存放代码 静态变量 字符串常量 局部变量 new出来的东 西 一种面向对象的语言。 一种平台无关的语言,提供程序运行的解释环境。 一种健壮的语言,吸收了C/C+ 语言的优点,但 去掉了其影响程序健壮性的部分(如:指针、内存 的申请与释放等)。 1.平台无关性 平台无关性是指Java能运行于不同的平台。Java引进虚拟机 原理,并运行于虚拟机,实现不同平台的 Java接口之间。使用Java编写的程序能在世界范围内共享。Java的数据类型与 机器无
6、关,Java虚拟机 (Java Virtual Machine)是建立在硬件和操作系统之上,实现Java二进制代码的解释执行功能, 提 供于不同平台的接口的。 2.安全性 Java的编程类似C+,学习过C+的读者将很快掌握Java的精髓。Java舍弃了C+的指针对存储器地 址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针侵入系统。Java对程序 提供了安全管理器,防止程序的非法访问。 3.面向对象 Java吸取了C+面向对象的概念,将数据封装于类中,利用类的优点,实现了程序的简洁性和便于维 护性。类的封装性、继承性等有关对象的特性,使程序代码只需一次编译,然后通过上述特性
7、反复利 用。程序员只需把主要精力用在类和接口的设计和应用上。Java提供了众多的一般对象的类,通过继承 即可使用父类的方法。在Java中,类的继承关系是单一的非多重的,一个子类只有一个父类,子类的父 类又有一个父类。Java提供的Object类及其子类的继承关系如同一棵倒立的树形,根类为Object类, Object类功能强大,经常会使用到它及其它派生的子类。 4.分布式 Java建立在扩展TCP/IP网络平台上。库函数提供了用HTTP和FTP协议传送和接受信息的方法。这使得 程序员使用网络上的文件和使用本机文件一样容易。 5.健壮性 Java致力于检查程序在编译和运行时的错误。类型检查帮助检
8、查出许多开发早期出现的错误。Java自己 操纵内存减少了内存出错的可能性。Java还实现了真数组,避免了覆盖数据的可能,这些功能特征大大 提高了开发Java应用程序的周期。并且Java还提供了Null指针检测、数组边界检测、异常出口、Byte code校验等功能。 效率(运行速度) 内存操作限制(指针) 多态在运行时实现 平台无关性(不直接调用操作系统) 逆向编译 线程调度 可移植性带来的线程调度不够精细 计算机语言发展史及Java的历史地位 Java发展史与java体系 Java程序运行机制及优劣势分析 Java开发环境配置 Java开发、编译、运行、打包 Java基础语法、数据类型、数组
9、Java编写习惯 配置Java开发环境步骤(WindowsXP) 下载并安装最新版本的J2SDK。 设置 Windows 环境变量。PATH/CLASSPATHPATH/CLASSPATH 选择合适的文本编辑器或使用集成开发环境。 下载 http:/ 安装 配置 path class A 编译运行 编译命令:Javac Test.java 编译通过后运行:java Test(不加.class) 为便于管理大型软件系统中数目众多的类,解决类 的命名冲突问题,Java引入包(package)机制, 提供类的多重类命名空间。打包语句在源文件开头 class体之外 ,语句格式为: package pk
10、g1.pkg2.pkg3; java io lang System String Object util 如果将一个类打包,则使用该类时,必须使用该类的全 名(例如:com.sxt.MyClass),Java编译器才会在找 到该类。 也可以使用 import 在文件的开头引入要使用到的类; 例如: 可以不需要用import语句直接使用 java.lang 包中的 类。 import com.sxt.MyClass; import java.util.*;/引入引入java.util包中所有的类包中所有的类 . . . MyClass myClass = new MyClass(); /可以直接
11、使用类名可以直接使用类名 . . . java.lang包含一些Java语言的核心类,如String、 Math、Integer、System和Thread,提供常用功 能。 java.awt包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建 和管理应用程序的图形用户界面(GUI)。 包含执行与网络相关的操作的类。 java.io包含能提供多种输入/输出功能的类。 java.util包含一些实用工具类,如定义系统特性、 使用与日期日历相关的函数。 jar -cvf test.jar 计算机语言发展史及Java的历史地位 Java发展史与jav
12、a体系 Java程序运行机制及优劣势分析 Java开发环境配置 Java开发、编译、运行、打包 Java基础语法、数据类型、数组 Java编写习惯 标示符 对各种变量、方法和类等要素命名时使用的字符序列 运算符 算数运算符、关系运算符、逻辑运算符、赋值运算符、三目条件运算符等 表达式与语句 符合一定语法规则的运算符和操作数的序列即表达式 Java程序由一条条语句构成 关键字 条件:if else switch 循环:for while do break continue 方法 修饰符修饰符1 修饰符修饰符2 返回值类型返回值类型 方法名方法名(形式参数列表形式参数列表) Java语句;语句;
13、递归 基本数据类型 四类八种 引用数据类型 类型转换 默认基本数据类型转换 强制类型转换 常量/变量 常量:基本数据类型/”Strings”/final变量 变量 变量作用域 数组可以看成是多个相同类型数据组合,对这些数据的统一管理。 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。 数组中的元素可以是任何数据类型,包括基本类型和引用类型。 一维数组的声明方式: type var; 或 type var; 创建数组对象,使用关键字 new 创建数组对象,格式为: 数组名 new 数组元素的类型 数组元素的个数 数组初始化 动态初始化 数组定义与为数组元素分配空
14、间和赋值的操作分开进行 静态初始化 在定义数组的同时就为数组元素分配空间并赋值 数组元素的默认初始化 数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规 则被隐式初始化, 数组元素的引用 定义并用运算符new为之分配空间后后,才可以引用数组中的每个元素,数组元素的引用方式为: arrayNameindex 每个数组都有一个属性length指明它的长度 二维数组 数组的拷贝 java.lang.System类public static void arraycopy (Object src,int srcPos,Object dest, int destP
15、os,int length) 计算机语言发展史及Java的历史地位 Java发展史与java体系 Java程序运行机制及优劣势分析 Java开发环境配置 Java开发、编译、运行、打包 Java基础语法、数据类型、数组 Java编写习惯 命名 类名首字母大写 MyClass 变量名方法名首字母小写 myClass.myMethod() 驼峰标识 格式 大括号对齐 缩进tab/shift+tab 程序块间空行(eg. for 语句) 并排语句加空格 运算符两侧加空格(条件语句中可以减少) 前空格 成对编程 建行编程规范 面向对象 简介 类的定义 对象的创 建和使用 方法重载 继承与方 法重写 访
16、问控制 对象转型 动态绑定/ 多态 Object类 Fanail关 键字 抽象类接口 面向对象编程语言三大特征 隐藏/封装 继承 多态 类与对象 对象用计算机语言对问题域中事物的描述,对象通过“属属 性(性(attributeattribute)”和和“方法(方法(methodmethod)”来分别对应事 物所具有的静态属性和动态属性。 类是用于描述同一类形的对象的一个抽象的概念,类中定 义了这一类对象所应具有的静态和动态属性。 类可以看成一类对象的模板,对象可以看成该类的一个具 体实例。 面向对象 简介 类的定义 对象的创 建和使用 方法重载 继承与方 法重写 访问控制 对象转型 动态绑定/
17、 多态 Object类 Fanail关 键字 抽象类接口 用用 class 关键字定义一个类,例如:关键字定义一个类,例如: class Person /成员变量定义成员变量定义 private int id; private int age = 20; /方法定义方法定义 public int getAge() return age; public void setAge(int i) age = i; public int getId() return id; 类的定义主要由两方面组成类的定义主要由两方面组成 成员变量和方法。成员变量和方法。 声明成员变量的格式为:声明成员变量的格式为:
18、type =defaultValue ; 例如:例如: private int id; private int age = 20; 声明方法的格式为:声明方法的格式为: () 例如:例如: public int getAge() return age; 面向对象 简介 类的定义 对象的创 建和使用 方法重载 继承与方 法重写 访问控制 对象转型 动态绑定/ 多态 Object类 Fanail关 键字 抽象类接口 必须使用 new 关键字创建对象(构造方法) Person person= newnew Person (); 使用对象(引用) . . 成员变量来引用对象的成员 变量。 person
19、.age 使用对象(引用) . . 方法(参数列表)来调用对 象的方法。 person. setAge(23) 同一类的每个对象有不同的成员变量存储空间。 同一类的每个对象共享该类的方法。 public class Person int id; int age; Person(int n,int i) id = n; age = i; public class Test public static void main(String args) Person tom = new Person(1,25); Person john = new Person(2,27); Person() id =
20、 0; age = 20; Person(int i) id = 0; age = i; Person(int n,int i) id = n; age = i; 面向对象 简介 类的定义 对象的创 建和使用 方法重载 继承与方 法重写 访问控制 对象转型 动态绑定/ 多态 Object类 Fanail关 键字 抽象类接口 方法的方法的重载重载是指一个类中可以定义有相同的名字,是指一个类中可以定义有相同的名字, 但参数不同的多个方法。但参数不同的多个方法。 调用时,会根据不同的调用时,会根据不同的 参数表选择对应的方法。参数表选择对应的方法。 例:在例:在Person类中存在如下方法类中存在如
21、下方法 void info() System.out.println(My id is +id); void info(String t) System.out.println(t+ +id+ +age); 调用方法 (); (hello); 与普通方法一样,构造方法也可以重载 面向对象 简介 类的定义 对象的创 建和使用 方法重载 继承与方 法重写 访问控制 对象转型 动态绑定/ 多态 Object类 Fanail关 键字 抽象类接口 继承 Java 中使用 extends 关键字实现类的继承机制 通过继承,子类自动拥有了基类(superclass)的所有成员(成员变
22、量和方法)。 Java只支持单继承,不允许多继承: 一个子类只能有一个基类 一个基类可以派生出多个子类 重写 在子类中可以根据需要对从基类中继承来的方法进行重写。 重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型。 重写方法不能使用比被重写方法更严格的访问权限。 继承中的构造方法 子类的构造的过程中必须调用其基类的构造方法。 子类可以在自己的构造方法中使用super(argument_list)调用基类的构造方法。 使用this(agument list)调用本类另外的构造方法 如果用super,必须写在方法的第一句 如果子类的构造方法中没有显式地调用基类构造方法,则系统默认调用基
23、类无参数 的构造方法。 如果子类构造方法中既没有显式调用基类构造方法,而基类中又没有无参的构造方法, 则编译出错。 this 关键字 在类的方法定义中使用的 this 关键字代表使用该方法的对象的引用。 当必须指出当前使用方法的对象是谁时要使用this。 有时使用this可以处理方法中成员变量和参数重名的情况。 super 关键字 在Java类中使用super来引用基类的成分 static 关键字 在类中,用static声明的成员变量成员变量为静态成员变量,它为该类的公用变量, 在第一次使用时被初始化,对于该类的所以对象来说,static成员变量只 有一份。 用static声明的方法为静态方法
24、静态方法,在调用该方法时,不会将对象的引用传 递给它,所以在static方法中不可访问非static的成员。 可以通过对象引用或类名(不需要实例化)访问静态成员。 this可以看作是一个类中的变量,它的值是当前对象的引用 (static class) 面向对象 简介 类的定义 对象的创 建和使用 方法重载 继承与方 法重写 访问控制 对象转型 动态绑定/ 多态 Object类 Fanail关 键字 抽象类接口 Java权限修饰符 public protected private 置于类的成 员定义前,用来限定其他对象对该类对象成员的访问权 限。 对于class的权限修饰只可以用 public
25、和 default。 (inner class除外) public类可以在任意地方被访问 default类只可以被同一个包内部的类访问 修饰符修饰符类内部类内部同一个包同一个包子类子类任何地方任何地方 privateYes default|packageYesYes protectedYesYesYes publicYesYesYesYes 面向对象 简介 类的定义 对象的创 建和使用 方法重载 继承与方 法重写 访问控制 对象转型 动态绑定/ 多态 Object类 Fanail关 键字 抽象类接口 一个基类的引用类型变量可以“指向”其子类的对象。 一个基类的引用不可以访问其子类对象新增加的成
26、员 (属性和方法)。 可以使用 引用 变量 instanceof 类名 来判断该引用型 变量所所“指向指向”的对象的对象是否属于该类或该类的子类。 子类的对象可以当作基类的对象来使用称作向上转型 (upcasting),反之称为向下转型(downcasting) 面向对象 简介 类的定义 对象的创 建和使用 方法重载 继承与方 法重写 访问控制 对象转型 动态绑定/ 多态 Object类 Fanail关 键字 抽象类接口 动态绑定是指 “在执行期间 (而非编译期) 判断所引用对象 的实际类型,根 据其实际的类型 调用其相应的方 法。 上面例子中,根 据 Lady 对象的 成员变量 pet 所引
27、用的不同的 实际类型而调用 相应的 enjoy方 法 class Bird extends Animal private String featherColor; Bird(String n,String f) super(n); featherColor = f; public void enjoy() System.out.println(鸟叫声鸟叫声.); public class Test public static void main(String args) Lady l3 = new Lady (l3,new Bird(birdname,green); l3.myPetEnjoy
28、(); 多态的存在要有3个必要条件: 要有继承,要有重写,父类引用指向子类对象 面向对象 简介 类的定义 对象的创 建和使用 方法重载 继承与方 法重写 访问控制 对象转型 动态绑定/ 多态 Object类 Fanail关 键字 抽象类接口 ObjectObject类类 ObjectObject类是所有类是所有JavaJava类的根基类类的根基类 如果在类的声明中未使用如果在类的声明中未使用extendsextends关键字指明其基类,则默认基类为关键字指明其基类,则默认基类为ObjectObject类类 public class Person public class Person 等价于:
29、等价于:public class Person extends Object public class Person extends Object ObjectObject的方法的方法 toStringtoString方法方法 描述当前对象的有关信息。 在进行String与其它类型数据的连接操作时(如: System.out.println(“info”+person),将自动调用该对象类的 toString()方法 可以根据需要在用户自定义类型中重写toString()方法 equals方法 提供定义对象是否“相等”的逻辑。 Object 的 equals 方法 定义为:x.equals (
30、 y ) 当 x 和 y是同一个对象的应用时返回 true 否则返回 false。 J2SDK提供的一些类,如String,Date等,重写了Object的equals方法,调用这些类 的equals方法, x.equals (y) ,当x和y所引用的对象是同一类对象且属性内容相等时 (并不一定是相同对象),返回 true 否则返回 false。 可以根据需要在用户自定义类型中重写equals方法。 面向对象 简介 类的定义 对象的创 建和使用 方法重载 继承与方 法重写 访问控制 对象转型 动态绑定/ 多态 Object类 Fanail关 键字 抽象类接口 final的成员变量的值不能够被改
31、变 final的方法不能够被重写 final的类不能够被继承 面向对象 简介 类的定义 对象的创 建和使用 方法重载 继承与方 法重写 访问控制 对象转型 动态绑定/ 多态 Object类 Fanail关 键字 抽象类接口 用abstract关键字来修饰一个类时,这个类叫做抽 象类;用abstract来修饰一个方法时,该方法叫做 抽象方法。 含有抽象方法的类必须被声明为抽象类,抽象类必 须被继承,抽象方法必须被重写。如果重写不了, 应该声明自己为抽象。 抽象类不能被实例化。 抽象方法只需声明,而不需实现。 abstract class Animal private String name; A
32、nimal(String name) = name; public abstract void enjoy(); class Cat extends Animal private String eyesColor; Cat(String n,String c) super(n); eyesColor = c; public void enjoy() System.out.println (猫叫声猫叫声.); 面向对象 简介 类的定义 对象的创 建和使用 方法重载 继承与方 法重写 访问控制 对象转型 动态绑定/ 多态 Object类 Fanail关 键字 抽象类接口 接口(
33、interface)是抽象方法和常量值的定义的集 合。 从本质上讲,接口是一种特殊的抽象类,这种抽象 类中只包含常量和方法的定义,而没有变量和方法 的实现。 接口定义举例: public interface Runner public static final int id = 1; public void start(); public void run(); public void stop(); 接口可以多重实现; 接口中声明的属性默认为 public static final 的; 也只能是 public static final 的; 接口中只能定义抽象方法,而且这些方法默认为 pu
34、blic的、也只能是public的; 接口可以继承其它的接口,并添加新的属性和抽象 方法。 多个无关的类可以实现同一个接口。 一个类可以实现多个无关的接口。 与继承关系类似,接口与实现类之间存在多态性。 定义Java类的语法格式: class extends implements ,* * interface Singer public void sing(); public void sleep(); class Student implements Singer private String name; Student(String name) = name; publ
35、ic void study() System.out.println(studying); public String getName()return name; public void sing() System.out.println(student is singing); public void sleep() System.out.println(student is sleeping); interface Singer public void sing(); public void sleep(); interface Painter public void paint(); p
36、ublic void eat(); class Student implements Singer private String name; Student(String name) = name; public void study()System.out.println(studying); public String getName()return name; public void sing() System.out.println (student is singing); public void sleep() System.out.println (stude
37、nt is sleeping); class Teacher extends Object implements Singer,Painter private String name; public String getString() return name; Teacher(String name) = name; public void teach()System.out.println(teaching); public void sing()System.out.println (teacher is singing); public void sleep()Sys
38、tem.out.println (teacher is sleeping); public void paint()System.out.println (teacher is painting); public void eat()System.out.println (teacher is eating); public class Test public static void main(String args) Singer s1 = new Student(le); s1.sing(); s1.sleep(); Singer s2 = new Teacher(steven); s2.
39、sing(); s2.sleep(); Painter p1 = (Painter)s2;/也可以当作也可以当作Painter来看来看 p1.paint(); p1.eat(); 输出结果:输出结果: student is singing student is sleeping teacher is singing teacher is sleeping teacher is painting teacher is eating public class Test public static void main(String args) int a; a = new int3; a0 = 3;
40、 a1 = 9; a2 = 8; Date days; days = new Date3; days0 = new Date(1, 4, 2004); days1 = new Date(2, 4, 2004); days2 = new Date(3, 4, 2004); class Date int year,month,day; Date(int y, int m, int d) year = y; month = m; day = d; public class Test public static void main(String args) int a = new int 3, 9,
41、8 ; Date days = new Date(1, 4, 2004), new Date(2, 4, 2004), new Date(3, 4, 2004) ; class Date int year,month,day; Date(int y, int m, int d) year = y; month = m; day = d; int a = new int3; a0 = new int2; a1 = new int4; a2 = new int3 int t1 = new int4; /非法非法 静态初始化:静态初始化: int intA = 1,2,2,3,3,4,5; int
42、intB32 = 1,2,2,3,4,5;/非法非法 动态初始化:动态初始化: int a = new int35; int b = new int3 b0 = new int2; b1 = new int3; b2 = new int5; 异常处理字符串包装类 MathFileEnum 容器IO流线程 java.lang.Throwable 程序中异常的来源 调用的方法可能抛出异常 自定义new一个异常并throws 异常的处理 在本方法中处理:trycatch() 扔给上级:throws Tips:调用一个方法时注意它的声明是否抛出了异常 Throwable Error eg.动态链接 库
43、连接失败、 虚拟机错误 Exception RuntimeException: 无需在程序中显示地 catch或throws InterruptedException、 IOException etc.:必须在 程序中catch或者throws 异常处理字符串包装类 MathFileEnum 容器IO流线程 Java.lang.String extends Object Implements Serializable,Comparable,CharSequenc e String创建 String s1 = “” 基本数据类型-包装类 int/long/byte/short/char/bool
44、ean/float/double Integer/Character/大写首字母 用途 需要传入Objec作为参数、基本数据类型需要作为普通 Object处理eg. hashCode() 静态成员变量 MAX_VALUE、MINVALUE 静态方法int parseInt(String) 属性/方法定义类似一般class 使用: MyColour m = MyColour.red MyColour0 ? 异常处理字符串包装类 MathFileEnum 容器IO流线程 能装其他对象的器具: 数组(容量受限、可以用于基础数据类型) Collection/Map (java.util.* 包中,容量
45、可以扩展,只能添加引 用对象) Java Collections Framework 定义存取方法 Interface Collection 单个装入 定义存储方式 Interface Set 无序、不可重复 Interface List 有序、可重复 TreeSetHashSetLinkedList ArrayList 定义存储方式 Interface Map 成对装入:key-value AbstractMap HashMapTreeMap 容器的简单用法 add remove contains retainAll addAll 涉及到的相等判断 比较时涉及的方法 Collection:e
46、quals i.hasNext();)对i.next()操作; 增强的for循环 String s for(String ss: s) interface Set 没有比Collection多出额外的方法 元素不重复且无序 HashSet TreeSet interface List 元素有序且可以重复 每个元素对应一个整形序号记载位置,据此可存取元素 特有方法 Object get(int index) Object set(int index, Object element) 替换 返回旧元素 Void add(index, element)index后的元素向后挪一位 Object re
47、move(index) int indexOf(O) int lastIndexOf(O) java.util.Collections提供基于List的常用算法 Void sort(List) Void shuffle(List) Void reverse(List) Void fill(List, object) 填充 void copy(List, List) int binarySearch(List, Object) 先进行sort排序 interface Map 成对存储,只可存储对象 以键为索引,索引不可重复 HashMap(Hash表)、TreaMap(二叉树) 常用方法 Obj
48、ect put(Object key, Object value) Object get(key) Object remove(key) boolean containsKey(key),boolean containsValue(value) JDK1.5 支持自动打包:基础类型作为Map中方法的参 数,直接被打包为相应的包装类 add(“one”, 1)等价于add(“one”, new Integer(1) 如何选择数据结构 Array读快改慢读取比较频繁的数据 Linked改快读慢修改比较频繁 Hash搜索极快,遍历极慢 Tree插入/搜索都比较快,适合做索引 泛型 Generic A
49、PI中接口或类后有/等形式即适用泛型 作用 实现类型自动检查 集合中取出对象不需强制类型转换 自动打包 异常处理字符串包装类 MathFileEnum 容器IO流线程 java.io.* 包中定义了多个流类型(类或抽象类)来实 现输入/输出功能;可以从不同的角度对其进行分类: 按数据流的方向不同可以分为输入流和输出流。(以程序 的角度来考虑) 按处理数据单位不同可以分为字节流和字符流。 按照功能不同可以分为节点流和处理流。 J2SDK 所提供的所有流类型位于包java.io内都分别 继承自以下四种抽象流类型。 字节流字节流字符流字符流 输入流输入流InputStreamReader 输出流输出
50、流OutputStream Writer 节点流和处理流 节点流为可以从一个特定的数据源(节点)读写数据(如: 文件,内存) 文件流、字节/符数组流等 处理流是“套接”在已存在的流(节点流或处理流)之上, 通过对数据的处理为程序提供更为强大的读写功能。 缓冲流、转换流、打印流、对象流等 数据源数据源 程序程序 节点流节点流 数据源数据源 程序程序 处理流处理流 节点流类 类类 型型 字字 符符 流流字字 节节 流流 File(文件)文件) FileReader FileWriter FileInputStream FileOutputStream Memory Array CharArrayR
51、eader CharArrayWriter ByteArrayInputStream ByteArrayOutputStream Memory String StringReader StringWriter Pipe(管道)管道) PipedReader PipedWriter PipedInputStream PipedOutputStream 处理流类 处理类型处理类型 字字 符符 流流字字 节节 流流 Buffering BufferedReader BufferedWriter BufferedInputStream BufferedOutputStream Filtering Fi
52、lterReader FilterWriter FilterInputStream FilterOutputStream Converting between bytes and character InputStreamReader OutputStreamWriter Object Serialization ObjectInputStream ObjectOutputStream Data conversion DataInputStream DataOutputStream CountingLineNumberReaderLineNumberInputStream Peeking ah
53、eadPusbackReaderPushbackInputStream PrintingPrintWriterPrintStream 四种基础抽象流之:InputSteam 继承自InputSteam的流用于向程序中输入以字节(8bit)为单位 的数据 常用方法 int read() throws IOException /读一个字节以整数的形式返回(0255),到输入流的末尾返回-1 int read(byte buffer) throws IOException /读多个字节并存储到数组buffer,返回实际读取的字节数,读取 前已到流末尾返回-1 int read(byte buffer
54、, int off, int len) throws IOException/读取length个字节并存储到一个字节数组buffer,从 off位置开始存,最多len,返回实际读取的字节数,如果读取前以到 输入流的末尾返回-1 void close() throws IOException/关闭流释放内存资源 四种基础抽象流之:OutputSteam 继承自OutputSteam的流用于程序中输出以字节(8bit)为单位的 数据 常用方法 void write(int b) throws IOException/向输出流中写入一个字 节数据,该字节数据为参数b的低8位 void write(b
55、yte b) throws IOException/将一个字节类型的数 组中的数据写入输出流 void write(byte b, int off, int len) throws IOException/ 将一个字节类型的数组中的从指定位置(off)开始的len个字节写 入到输出流 void close() throws IOException /关闭流释放内存资源 void flush() throws IOException/将输出流中缓冲的数据全部写 出到目的地 四种基础抽象流之:Reader 继承自Reader的流都是向程序中输入以字符(16bit)为单 位的数据 常用类 int r
56、ead() throws IOException int read(char cbuf) throws IOException int read(char cbuf, int off, int len) throws IOException void close() throws IOException 四种基础抽象流之:Writer 继承自Writer流都是程序中输出以字符(16bit)为单位的数据 常用类 void write(int c) throws IOException void write(char cbuf) throws IOException void write(char
57、 cbuf, int offset, int length) throws IOException void write(String string) throws IOException void write(String string, int offset, int length) throws IOException void close() throws IOException void flush() throws IOException 对File的访问 FileInputSteam FileOutPutSteam FileReader FileWriter 构造函数 传入的参数
58、常用String或者File 输出流构造时可增加第二个参数boolean来开关是否是覆 盖性输出 构造会抛异常,用try-catch 常用方法 读写的时候也需要try-catch 直接读写效率比较低,一般都用处理流包装 缓冲流 “套接”在相应的节点流之上,对读写的数据提供缓冲区,增 加了一些新方法 BufferedReader/BufferedWriter BufferedInputStream/BufferedOutStream 构造函数 套接时一一对应 缓冲区大小可以指定 常用方法 继承自父类常规方法 BufferedReader继承的mark与reset方法 BufferedReader
59、新增readLine、BufferedWriter新增newLine 操作结束后记得close(输出还应先flush) 转换流 用于将字节流转换为字符流 InputStreamReader/OutputStreamReader 构造函数 传入InputStream/OutputStream类型的参数(子类) 可以传入String charset指定转换编码所用字符集 常用方法 write时可以写任意形式的字符串而不做处理 close(对于套接的流,关闭最外层即可) 什么是字符集什么是字符集? ?什么是编码什么是编码? ? 字符字符(Character)(Character):是文字与符号的总称
60、,包括文字、图形 符号、数学符号等。 字符集字符集(Charset)(Charset):就是一组抽象字符的集合。 字符集常常和一种具体的语言文字对应起来,该文字中的所 有字符或者大部分常用字符就构成了该文字的字符集,比如 英文字符集。 一组有共同特征的字符也可以组成字符集,比如繁体汉字字 符集、日文汉字字符集。 编码编码(Encoding)(Encoding): 制定编码首先要确定字符集,并将字符集内的字符排序,然 后和二进制数字对应起来。根据字符集内字符的多少,会确 定用几个字节来编码。 常用的字符集有哪些? ASCII American Standard Code for Informat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024高考地理一轮复习第二部分人文地理-重在运用第三章农业地域的形成与发展第20讲农业的区位选择课时作业含解析新人教版
- 小学艺术教育发展年度报告
- 吊篮安全管理措施
- 九年级历史上册第七单元工业革命和国际共产主义运动的兴起中考真题演练课件新人教版
- 九年级英语全册Unit5Whataretheshirtsmadeof第4课时习题课件3
- 医学统计学课件-生存分析第十七章资料讲解
- 二零二五年智能制造项目合作合同示范文本下载3篇
- 2024年阳泉固庄煤矿医院高层次卫技人才招聘笔试历年参考题库频考点附带答案
- 二零二五年钢结构项目居间监理咨询合同3篇
- 2024年江西洪州职业学院高职单招职业技能测验历年参考题库(频考版)含答案解析
- 房地产销售主管岗位招聘笔试题及解答(某大型央企)2024年
- 足球D级教练员培训汇报
- 岩溶区水文地质参数研究-洞察分析
- 三基三严练习题库与答案
- 大学体育与健康 教案全套 体育舞蹈 第1-16周
- 一年级数学练习题-20以内加减法口算题(4000道)直接打印版
- 施工作业安全管理规定(4篇)
- 浙江省金华市(2024年-2025年小学五年级语文)人教版质量测试((上下)学期)试卷及答案
- 传媒行业突发事件应急预案
- 2024年《工会法》知识竞赛题库及答案
- 《中国血脂管理指南》考试复习题库(含答案)
评论
0/150
提交评论