已阅读5页,还剩88页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档 1欢迎下载 第 1 章 Java 概述 Java 语言的特特点 一种面向对象的语言 一种平台无关的语言 一种健壮的语言 吸收了 C C 的优点 但去掉了其影响程序健壮性的部分 如 指针 内存的申请与释放等 Java 的两种核心机制 Java 虚拟机 Java Virtual Machine 垃圾回收机制 Garbage Collection 源程序 java 文件 Java 编译器 字节码 class 文件 类装载器 字节码校验器 解释器 操作系统平台 一次编译 随处运行 Java 是一种解释型语言 JDK Java Development Kit 软件开发工具包 JRE Java Runtime Environment 运行时环境 开发需要 JDK 用户只需 JRE PATH WINDOWS 系统执行命令时要搜寻的路径 如 javac exe java exe CLASSPATH Java 在编译和运行时要找的 class 所在路径 代表当前路径 java 运行 java 程序 精品文档 2欢迎下载 javac 编译 java 程序 java version 一个源文件最多只能有一个 public 类 其他类数量不限 源文件名必须与 public 类名一致 Java 应用程序的执行入口时 main 方法 public static void main String args Java 语言中严格区分大小写 编译后 每一个类都对应一个 class 文件 第 2 章 基础语法 标示符由字母 下划线 美元符 或数字组成 标示符应以字母 下划线 美元符开头 Java 标示符对大小写敏感 长度无限制 注意 见名知意 且不能与 Java 语 言关键字重名 abstractdefaultifprivatethis booleandoimplementsprotectedthrow breakdoubleimportpublicthrows byteelseinstanceofreturntransient caseextendsintshorttry catchfinalinterfacestaticvoid charfinallylongstrctfpvolatile classfloatnativesuperwhile 精品文档 3欢迎下载 constfornewswitchnull continuegotopackagesynchronized goto 和 const 虽然未使用 但也被作为 Java 的关键字保留 程序执行过程 程序 1 load 到内存区 2 找到 main 方法开始执行 3 执行过程中 的内存管理 Java 数据类型的划分 硬盘 程序代码操作系统 代码 heap 堆 new 出来的东西 stack 栈 局部变量 data segment 静态变量 字符串常量 code segment 存放代码 数值型 整数类型 byte short in t long 浮点类型 float double 精品文档 4欢迎下载 boolean 类型数据只允许取值 true 或 false 不可以使用 0 或非 0 的整数值取 代 true 和 false 这点和 c 语言不同 Java 字符采用 Unicode 编码 每个字符占两个字节 因而可以用十六进制编码 形式表示 例 char c u0061 Java 语言的整型常量默认为 int 类型 声明 long 型常量可以后加 l 或 L 类型占用存储空间数值范围 byte 1 字节 27 27 1 short 2 字节 215 215 1 int 4 字节 231 231 1 long 8 字节 263 263 1 数据类型 基本数据类型 引用数据类型 字符型 char 布尔型 boolean 类 class 数组 接口 interface 精品文档 5欢迎下载 Java 浮点型常量默认为 double 型 声明 float 型需在数字后面加 f 或 F 类型占用存储空间数值范围 float 4 字节 3 403E38 3 403E38 double 8 字节 1 798E308 1 798E308 基本数据类型转换 boolean 类型不可以转换为其他的数据类型 整型 字符型 浮点型的数据在混合运算中相互转换 转换时遵循以下原则 容量小的类型自动转换为容量大的类型 byte short char int long float double byte short char 之间不需要相互转换 他们三者在计算时首先会转换为 int 类型 可以将整型常量直接赋值给 byte short char 等类型变量 而不需要进行强制 类型转换 只要不超过其表数范围 除用于算术加法外 还可用于对字符串进行连接操作 运算符两侧的 操作数中只要有一个是字符串 String 类型 系统会自动将另一个操作数转 换为字符串然后再进行连接 当进行打印时 无论任何类型 都自动转换为字 符串进行打印 break Leaf int i this i i Leaf increament i return this void print System out println i i public static void main String args Leaf leaf new Leaf 100 leaf increament increament print static 在类中 用 static 声明的成员变量为静态成员变量 它为该类的公用变量 在 第一次使用时被初始化 对于该类的所有对象来说 static 成员变量只有一份 用 static 声明的方法为静态方法 在调用该方法时 不会将对象的引用传递给 它 所以在 static 方法中不可访问非 static 的成员 精品文档 9欢迎下载 静态方法不再是针对某个对象调用 所以不能访问非静态成员 可以通过对象引用或类名 不需要实例化 访问静态成员或方法 package则该文件中的类位于 com yao 目 录下 如果将一个类打包 则使用该类时 必须使用该类的全名 例如 com yao MyClass Java 编译器才会找到该类 也可以使用 import 在文件的开头引入要使用的类 例 import com yao MyClass 可以不需要用 import 语句直接使用 java lang 包中的类 访问位于同一个包中的类不需要引入 class 文件的最上层包的父目录必须位于 classpath 下 JDK 中主要的包介绍 java lang 包含一些 Java 语言的核心类 如 String Math Integer System 和 Thread 提供常用功能 使用时不需要引入 lang language java awt 包含了构成抽象窗口工具集 abstract window toolkits 的多个类 这些类被用来构建和管理应用程序的图形用户界面 GUI java applet 包含了 applet 运行所需的一些类 包含了与网络相关的操作的类 精品文档 10欢迎下载 java io 包含能提供多种输入 输出功能的类 java util 包含一些实用工具类 如定义系统特性 使用与日期日历相关的函 数 java 运行时所需的类位于 jdk jre lib rt jar 打 jar 包 定位到需要打包的最上层的父路径 jar cvf xxx jar 指目录中所有文件夹打包 jar 包也可设为 classpath 变量 继承 extends 通过继承 子类自动拥有了基类 superclass 的所有成员 成员变量和方法 包括 private 成员 拥有私有变量的所有权 但无使用权 Java 只支持单继承 不允许多继承 一个子类只能有一个基类 一个基类可以 派生多个子类 访问控制 权限修饰符 public protected private default 包访问权限 修饰符类内部同一个包子类任何地方 private XXX default XX protected X public 对于 class 的权限修饰符只可以用 public 和 default public 类可以在任意地方被访问 default 类只可以被同一个包内的类访问 精品文档 11欢迎下载 方法重写 overwrite override 在子类中可以根据需要对从基类中继承来的方法进行重写 重写方法必须和被重写方法具有相同方法名称 参数列表和返回类型 重写方法不能使用比被重写方法更严格的访问权限 super 在 Java 类中使用 super 来引用基类的成分 继承中的构造方法 子类的构造过程中必须调用其基类的构造方法 子类可以再自己的构造方法中使用 super argument list 调用基类的构造方 法 使用 this argument list 调用本类的另外的构造方法 如果调用 super 必须写在子类构造方法的第一行 如果子类的构造方法中没有显式地调用基类构造方法 则系统默认调用调用基 类无参数的构造方法 如果子类构造方法中既没有显式调用基类构造方法 而基类中又没有无参的构 造方法 则编译出错 Object 类 Object 类是所有 Java 类的根基类 如果在类的声明中未使用 extends 关键字指明其基类 则默认基类为 Object 类 public class Person 等价于 精品文档 12欢迎下载 public class Person extends Object toString Object 类中定义有 public String toString 方法 其返回值时 String 类 型 描述当前对象的有关信息 返回一个字符串 该字符串由类名 对象是该 类的一个实例 此对象哈希码的无符号十六进制表示组成 即 getClass getName Integer toHexString hashCode 在进行 String 与其他类型数据的连接操作时 如 System out println info person 将自动调用该对象类的 toString 方法 可以根据需要在用户自定义类型中重写 toString 方法 建议所有子类都重 新此方法 equals public boolean equals Object obj x equals y 对于任何非空引用值 当且仅当 x 和 y 引用同一个对象时 此方法 返回 true x y 具有值 true JDK 提供了一些类 如 String Date 等 重写了 Object 的 equals 方法 调用这些类的 equals 方法 x equals y 当 x 和 y 所引用的对象时同一 类对象且属性内容相等时 并不一定时同一对象 返回 true 否则返回 false 建议重写 例子 String s1 new String Hello String s2 new String Hello System out println s1 s2 false System out println s1 equals s2 true 精品文档 13欢迎下载 对象转型 casting 一个基类的引用类型变量可以 指向 其子类的对象 一个基类的引用不可以访问其子类对象新增加的成员 属性和方法 可以使用 引用变量 instanceof 类名 来判断该引用变量所 指向 的对 象是否属于该类或该类的子类 子类的对象可以当作基类的对象来使用称作向上转型 upcasting 反之称为 乡下转型 downcasting 需强制转换 动态绑定和多态 动态绑定是指在执行期间 而非编译期间 判断所引用对象的实际类型 根据 其实际类型调用其相应的方法 1 要有继承 2 要有重写 3 父类引用指向子类对象 抽象类 用 abstract 关键字来修饰一个类时 这个类叫做抽象类 用 abstract 来修饰 一个方法时 该方法叫做抽象方法 含有抽象方法的类必须被声明为抽象类 抽象类必须被继承 抽象方法必须被 重写 抽象类不能被实例化 抽象方法只需声明 而不需实现 final final 的变量的值不能被改变 精品文档 14欢迎下载 final 的方法不能被重写 final 的类不能被继承 接口 interface 实现 implements 接口是抽象方法和常量值得定义的集合 从本质上讲 接口是一种特殊的抽象类 这种抽象类中只包含了常量和方法的 定义 而没有变量和方法的实现 多个无关的类可以实现同一个接口 一个类可以实现多个无关的接口 与继承关系类似 接口与实现类之间存在多态性 接口中声明属性默认为 public static final 的 也只能是 public static final 的 接口中只能定义抽象方法 而且这些方法默认为 public 的 也只能是 public 的 接口可以继承其他的接口 并添加新的属性和抽象方法 第 4 章 异常处理 异常指运行期出现的错误 所谓错误是指在程序运行的过程中发生的一些异常事件 如 除 0 溢出 数组 下标越界 所要读取的文件不存在 Java 程序的执行过程中如出现异常事件 可以生成一个异常类对象 该异常对 象封装了异常事件的信息并将被提交给 Java 运行时系统 这个过程称为抛出 throw 异常 当 Java 运行时系统接收到异常对象时 会寻找处理这一异常的代码并把当前异 常对象交给其处理 这一过程称为捕获 catch 异常 异常的概念 声明该方法可能抛出 的异常 精品文档 15欢迎下载 public void someMethod throws someException if someCondition throw new someException 错误原因 构造并抛出 异常对象 精品文档 16欢迎下载 Error 称为错误 由 Java 虚拟机生成并抛出 包括动态链接失败 虚拟机错误 等 程序对其不做处理 Exception 所有异常类的父类 其子类对应了各种各样可能出现的异常事件 一般需要用户显式的声明或捕获 RuntimeException 特殊的异常 如被 0 除 数组下标越界等 其产生比较频 繁 处理麻烦 如果显式的声明或捕获将会对程序可读性和运行效率影响很大 因此由系统自动检测并将它们交给缺省的异常处理程序 用户可不必对其处理 Exception in java lang try someMethod catch SomeException e 异常处理代码 调用该方法时试图捕获异 常 定义处理异常的代码 Throwable ErrorException RuntimeException 精品文档 17欢迎下载 ClassNotFoundException IOException InterruptedException RuntimeException ArithmeticException 当出现异常的运算条件时 抛出此异常 例 如 一个整数 除以零 时 抛出此类的一个实例 NullPointerException IndexOutOfBoundsException 指示某排序索引 例如对数组 字符 串或向量的排序 超出范围时抛出 ArrayIndexOutOfBoundsException 用非法索引访问数组时抛出 的异常 如果索引为负或大于等于数组大小 则该索引为非法索引 StringIndexOutOfBoundsException 此异常由 String 方法抛 出 指示索引或者为负 或者超出字符串的大小 对诸如 charAt 的一些方法 当索引等于字符串的大小时 也会抛出该异常 finally try 可能抛出异常的语句 catch SomeException1 e catch SomeException2 e finally try 代码段后跟有一个或多个 catch 代码段 每个 catch 代码段声明其能处理的一种特定类 型的异常并提供处理的方法 当异常发生时 程序会终止当前的流程 根据 获取异常的类型去执行相应的 catch 代码段 如果没有异常产生 所有的 catch 代码段都被 略过不执行 finally 段的代码无论是否发生异常都会执行 通常在 finally 语句中可以进行资源的清除工作 如 关闭打开的文件 删除临时文件等 精品文档 18欢迎下载 getMessage 方法 用来得到有关异常事件的信息 printStackTrace 方法 用来跟踪异常事件发生时执行堆栈的内容 在一个 try 语句块中 基类异常的捕获语句 捕获 SomeException2 时 try 语句 1 语句 2 catch SomeException1 e catch SomeException2 e finally 后面的语句 没有捕获到异常时 try 语句 1 语句 2 catch SomeException1 e catch SomeException2 e finally 后面的语句 readFile throws IOException method1 throws IOException readFile method2 throws IOException method2 public static main String s try method2 catch IOException e 抛出 抛出抛出 在一个 try 语句块中 基类异常 的捕获语句不可以写在子类异常 捕获语句的上面 否则会有编译 错误 子类异常不会被捕获 先逮小的 再逮大的 精品文档 19欢迎下载 使用自定义的异常 1 通过继承 java lang Exception 类声明自己的异常类 2 在方法适当的位置生成自定义异常的实例 并用 throw 语句抛出 3 在方法的声明部分用 throws 语句声明该方法可能抛出的异常 class MyException extends Exception private int id public MyException String message int id super message this id id public it getId return id 注意 重写方法需要抛出与原方法所抛出异常类型一致的异常货不抛出异常 第 5 章 数组 数组变量属引用类型 数组也可以看成是对象 数组中的每个元素相当于该对 象的成员变 因此数组分配空间后 每个元素也被按照成员变量的规则被隐式 初始化 type var 或 type var Java 语言中声明数组时不能指定其长度 数组中元素的个数 例 int a 5 非法 Java 中使用关键字 new 创建数组对象 格式为 数组名 new 数组元素的类型 数组元素的个数 精品文档 20欢迎下载 注意 元素为引用数据类型的数组中的每一个元素都需要实例化 动态初始化 数组定义与为数组元素分配空间和赋值的操作分开进行 静态初始化 在定义数组的同时就为数组元素分配空间并赋值 每一个数组都有一个属性 length 指明它的长度 例 a length 的值为数组 a 的长度 元素个数 Java 中多维数组的声明和初始化应按从高维到低维的顺序进行 例如 int a new int 3 a 0 new int 2 a 1 new int 4 a 2 new int 3 int error new int 4 是错误的 数组的拷贝 使用 java lang System 类的静态方法 public static void arraycopy Object src int srcPos Object dest int destPos int length 可以用于数组 src 从第 srcPos 项元素开始的 length 个元素拷贝到目标数组 dest 从 destPos 项开始的 length 个位置 如果源数据数目超出目标数组边界会抛出 IndexOutOfBoundsException 异常 精品文档 21欢迎下载 第 6 章 常用类 String Java lang String 类代表不可变的字符序列字符串是常量 它们的值在创建之 后不能更改 字符串缓冲区支持可变的字符串 因为 String 对象是不可变的 所以可以共享 例如 String str abc 等效于 char data a b c String str new String data Java 语言提供对字符串串联符号 以及将其他对象转换为字符串的特殊 支持 字符串串联是通过 StringBuilder 或 StringBuffer 类及其 append 方法实现的 字符串转换是通过 toString 方法实现的 该方法由 Object 类 定义 并可被 Java 中的所有类继承 xxxx 为该类的一个对象 String 类的常见构造方法 String String original 创建一个 String 对象为 original 的拷贝 String char value 用一个字符数组创建一个 String 对象 String char value int offset int count 用一个字符数组从 offset 项 开始的 count 个字符序列创建一个 String 对象 public class Test public static void main String args String s1 hello String s2 hello System out println s1 s2 true s1 new String hello s2 new String hello System out println s1 s2 false 精品文档 22欢迎下载 System out println s1 equals s2 true char c s u n j a v a String s4 new String c String s5 new String c 4 4 System out println s4 sun java System out println s5 java String 类常用方法 1 public char charAt int index 返回字符创中的第 index 个字符 public int length 返回字符串的长度 public int indexOf String str 返回字符串中出现 str 的第一个位置 public int indexOf String str int fromIndex 返回字符串中从 fromIndex 开始出现 str 的第一个位置 public boolean equalsIgnoreCase String another 比较字符串与 another 是否一样 忽略大小写 public String replace char oldChar char newChar 在字符串中用 newChar 字符替换 oldChar 字符 public class Test public static void main String args String s1 sun java s2 Sun Java System out println s1 charAt 1 u System out println s2 length 8 精品文档 23欢迎下载 System out println s1 indexOf java 4 System out println s1 indexOf Java 1 System out println s1 equals s2 false System out println s1 equalsIngoreCase s2 true String s 我是程序员 我在学 java String sr s replace 我 你 System out println sr 你是程序员 你在学 java String 类常用方法 2 public boolean startsWith String prefix 判断字符串是否以 prefix 字符 串开头 public boolean endsWith String suffix 判断字符串是否以 suffix 字符串 结尾 public String toUpperCase 返回一个字符串为该字符串的大写形式 public String toLowerCase 返回一个字符串为该字符串的小写形式 public String substring int beginIndex 返回该字符串从 beginIndex 开始 到结尾的子字符串 public String substring int beginIndex int endIndex 返回该字符串从 beginIndex 开始到 endIndex 结尾的子字符串 public String trim 返回将该字符串去掉开头和结尾空格后的字符串 public class Test public static void main String args String s Welcome to Java World 精品文档 24欢迎下载 String s1 sun java System out println s startWith Welcome true System out println s endWith World false String sL s toLowerCase String sU s toUpperCase System out println sL welcome to java world System out println sU WELCOME TO JAVA WORLD String subS s substring 11 System out println subS Java World String sp s1 trim System out println sp sun java String 类常用方法 3 静态重载方法 public static String valueOf 可以将基本类型数据转换为 字符串 例 public static String valueOf double d public static String valueOf int i public String split String regex 可以将一个字符串按照指定的分隔符 regex 分隔 返回分隔后的字符串数组 public class Test public static void main String args int j 1234567 String sNum String valueOf j System out println j 是 sNum length 位数 j 是 精品文档 25欢迎下载 7 位数 String s Mary F 1988 String sPlit s split for int i 0 i sPlit length i System out println sPlit i Mary nF n 1976 StringBuffer 类 java lang StringBuffer 代表可变的字符序列 StringBuffer 和 String 类似 但 StringBuffer 可以对其字符串进行改变 String s1 hello String s2 world s1 s1 s2 StringBuffer 类常见的构造方法 StringBuffer 创建一个不包含字符序列的 空 的 StringBuffer 对象 StringBuffer String str 创建一个 StringBuffer 对象 包含与 String 对象相同的字符序列 helloworld s2 s1 helloworld 精品文档 26欢迎下载 StringBuffer 常用方法 重载方法 public StringBuffer append 可以为该 StringBuffer 对象添加 字符序列 返回添加后的该 StringBuffer 对象引用 例如 public StringBuffer append String str public StringBuffer append StringBuffer sbuf public StringBuffer append char str public StringBuffer append char str int offset int len public StringBuffer append double d public StringBuffer append Object obj 重载方法 public StringBuffer insert 可以为该 StringBuffer 对象在指 定位置插入字符序列 返回修改后的该 StringBuffer 对象引用 例 public StringBuffer insert int offset String str public StringBuffer insert int offset double d 方法 public StringBuffer delete int start int end 可以删除从 start 开 始到 end 1 为止的一段字符序列 返回修改后的该 StringBuffer 对象引用 和 String 类含义类似的方法 public int indexOf String str public int indexOf String str int fromIndex public String substring int start public String substring int start int end public int length 精品文档 27欢迎下载 public StringBuffer reverse 用于将字符序列逆序 返回修改后的该 StringBuffer 对象的引用 public class Test public static void main String args String s Mircosoft char a a b c StringBuffer sb1 new StringBuffer s sb1 append append IBM append append Sun System out println sb1 Mircosoft IBM Sun StringBuffer sb2 new StringBuffer 数字 for int i 0 i角度 toRadians double angdeg 角度 弧度 精品文档 29欢迎下载 File 类 java io File 类代表系统文件名 路径和文件名 常见构造方法 public File String pathname 以 pathname 为路径创建 File 对象 如果 pathname 是相对路径 则默认的当前路径在系统属性 user dir 中存储 public File String parent String child 以 parent 为父路径 child 为子 路径创建 File 对象 File 的静态属性 String separator 存储了当前系统的路径分隔符 常用方法 通过 File 对象可以访问文件的属性 public boolean canRead public boolean canWrite public boolean exists public boolean isDirectory public boolean isFile public boolean isHidden public long lastModified 返回此抽象路径名表示的文件最后一次被修改的 时间 public long length 返回此抽象路径名表示的文件的长度 如果此路径表示 一个目录 则返回值不确定 public String getName 返回由此抽象路径名表示的文件或目录的名称 public String getPath 将此抽象路径名转换为一个路径名字符串 精品文档 30欢迎下载 通过 File 对象创建空文件或目录 在该对象所指的文件或目录不存在的情况下 public boolean createNewFile throws IOException public boolean delete public boolean mkdir 创建此抽象路径名指定的目录 public boolean mkdirs 创建此抽象路径名指定的目录 包括所有必需但不 存在的父目录 import java io public class TestFile public static void main String args String separator File separator String filename myfile txt String directory mydir1 separator mydir2 String directory mydir1 mydir2 String directory mydir1 mydir2 File f new File directory filename if f exists System out println 文件名 f getAbsolutePath System out println 文件大小 f length else f getParentFile mkdirs try f createNewFile catch IOException e e printStackTrace 精品文档 31欢迎下载 第 7 章 容器 JDK 所提供的容器 API 位于 java util Collection 接口 定义可存取一组对象的方法 其子接口 Set 和 List 分别定义 了存储方式 Set 中的数据对象没有顺序且不可以重复 List 中的数据对象有顺序且可以重复 Map 接口定义了存储 键 key 值 value 映射对 的方法 Collection Set List HashSetArrayListLinkedList Map HashMap 精品文档 32欢迎下载 Collection 接口中所定义的方法 int size boolean isEmpty void clear boolean contains Object element boolean add Object element 只能添加对象 不能添加基础类型 添加基础 类型包装类对象 基础类型一般存放在栈上 站上的内容随时有可能被清空 不能保存 boolean remove Object element 调用对象的 equals 方法 Iterator iterator boolean containAll Collection c boolean addAll Collection c boolean removeAll Collection c boolean retainAll Collection c 交集 Object toArray 容器类对象在调用 remove contains 等方法时需要比较对象是否相等 这时会 涉及到对象类型的 equals 方法和 hashCode 方法 对于自定义的类型 需要重写 equals 和 hashCode 方法以实现自定义的对象相等规则 重写 equals 方法的同时 必须重写 hashCode 方法 注意 相等的对象应该具有相等的 hash codes Iterator 接口 所有实现了 Collection 接口的容器类都有一个 iterator 方法用以返回一个 精品文档 33欢迎下载 实现了 Iterator 接口的对象 Iterator 对象称作迭代器 用以方便的实现对容器内元素的遍历操作 Iterator 接口定义了以下方法 boolean hasNext 判断游标右边是否有元素 Object next 返回游标右边的元素并将游标移动到下一个位置 next 的返回 值为 Object 类型 需要转换为相应类型 void remove 删除游标左面的元素 在执行完 next 之后该操作只能执行一次 游标 元素 next Iterator 对象的 remove 方法时在迭代过程中删除元素的唯一的安全方法 foreach 语句 foreach 对于遍历 array 或 Collection 相当方便 for 缺陷 数组 不能方便的访问下标值 集合 与使用 Iterator 相比 不能方便的删除集合中的内容 总结 除了简单遍历并阅读出其中的内容外 不建议使用 foreach Set 接口 Set 接口是 Collection 的子接口 Set 接口没有提供额外的方法 但实现 Set 接口的容器类中的元素师没有顺序的 而且不可以重复 即相同的元素不会被 加入 有 HashSet TreeSet 等 精品文档 34欢迎下载 List 接口 List 接口是 Collection 的子接口 实现 List 接口的容器类中的元素师有顺序 的 而且可以重复 List 容器中的元素都对应一个整数型的序号记载其在容器中的位置 可以根据 序号存取容器中的元素 有 ArraryList LinkedList 等 List 接口常用方法 Object get int index Object set int index Object element 替换 void add int index Object element 插入 boolean remove int index int indexOf Object o 返回此列表中第一次出现的指定元素的索引 如果此 列表不包含该元素 则返回 1 int lastIndexOf Object o Lists 常用算法 类 java util Collections 提供了一些静态方法实现了基于 List 容器的一些常 用算法 void sort List 对 List 容器内的元素排序 void shuffle List 对 List 容器内的对象进行随机排序 void reverse List 对 List 容器内的对象进行逆序排序 void fill List Object 用一个特定的对象重写整个 List 容器 void copy List dest List src 将 src List 容器内容拷贝到 dest List 容器 内 int binarySearch List Object 对于顺序的 List 容器 采用折半查找法查找 特定对象 精品文档 35欢迎下载 所有可以 排序 的类都实现了 java lang Comparable 接口 Comparable 接 口中只有一个方法 public int compareTo Object obj 该方法 返回 0 表示 this obj 返回正数表示 this obj 返回负数表示 this obj 实现 Comparable 接口的类通过实现 comparaTo 方法从而确定该类对象的排序方 式 如何选择数据结构 衡量标准 读的效率和改的效率 Array 读快改慢 Linked 读慢改快 Hash 介于上两者之间 Map 接口 实现 Map 接口的类用来存储键 值对 Map 接口的实现类有 HashMap 和 TreeMap Map 类中存储的键 值对通过键来标识 所以键值不能重复 Map 类常用方法 Object put Object key Object vakue Object get Object key Object remove Object key boolean containKey Object key boolean containValue Object value int size 精品文档 36欢迎下载 boolean isEmpty void putAll Map t 从指定映射中将所有映射关系复制到此映射中 void clear import java util public class Test private static final Integer ONE new Integer 1 private static final int ONE 1 public static void main String args Map m new HashMap for int i 0 i args length i Integer freq Integer m get args i int freq Integer m get args i null 0 Integer m get args i m put args i freq null ONE new Integer freq intValue 1 m put args i freq 0 ONE freq 1 System out println m size distinct words detected System out println m Auto boxing unboxing 在合适的时机自动打包 解包 自动将基础类型装换成对象 精品文档 37欢迎下载 自动将对象装换为基础类型 泛型 import java util public class BasicGeneric public static void main String args List c new ArrayList c add aaa c add bbb c add ccc for int i 0 i c size i String s c get i System out println s Collection c2 new HashSet c2 add aaa c2 add bbb c2 add ccc for Iterator it c2 iterator it hasNext String s it next System out println s 第 8 章 流 java io 按数据流的方向的不同可以分为 输入流和输出流 站在程序的角度上 按处理数据单位不同可以分为字节流和字符流 起因 JDK1 4 以前类型不明确 装入集合的类型都被当做 Object 对待 从而失去自己 的实际类型 从集合中取出时往往需要转 型 效率低 容易产生错误 解决办法 在定义集合的时候同时定义 集合中对象的类型 可以在定义 Conllection 的时 候指定 也可以在循环时用 Iterator 指定 好处 增强程序的可读性和稳定
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年温州市瓯海区第三人民医院面向社会招聘工作人员5人笔试参考题库及答案详解
- 2026年喀什大学附属中学银龄教师招聘(5人)笔试参考题库及答案详解
- 2026内蒙古师范大学科研助理招聘7人(第二批)笔试备考题库及答案详解
- 词块教学:开启专业学位硕士研究生英语写作能力提升之门
- 2026年陕西特岗教师招聘383人考试参考题库及答案详解
- 2026湖南长沙宁乡市所属事业单位公开选调工作人员3人笔试模拟试题及答案详解
- 招聘1人!西宁市妇幼保健计划生育服务中心招募志愿者笔试模拟试题及答案详解
- 2026济宁高新区实验学校附属幼儿园招聘考试参考题库及答案详解
- 2026新疆水发润鑫水处理科技有限公司第二批社会招聘2人笔试模拟试题及答案详解
- 2026四川二滩实业发展有限责任公司九龙孟底沟分公司招聘16人笔试模拟试题及答案详解
- 2026年危险化学品重点县专家指导服务自查表
- 2026年贵州综合评标专家库评标专家考试经典试题及答案
- 代煎中药评估考核制度
- 厂中厂安全培训教学课件
- 煤矿生产区队交接班制度
- 酒店标准品牌化运营方案
- 2026年1月浙江首考英语真题(原卷版)
- 银行消防安全教育培训课件
- 洗矿车间安全培训
- 水资源保护规划编制规程(2025版)
- 2026年高考全国II卷历史真题解析含答案
评论
0/150
提交评论