Java语言程序设计基础教程(JavaAPI)ppt.ppt_第1页
Java语言程序设计基础教程(JavaAPI)ppt.ppt_第2页
Java语言程序设计基础教程(JavaAPI)ppt.ppt_第3页
Java语言程序设计基础教程(JavaAPI)ppt.ppt_第4页
Java语言程序设计基础教程(JavaAPI)ppt.ppt_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章JavaAPI 理解JavaAPI的概念了解Object类熟悉String类和StringBuffer类基本数据类型的对象类Hashtable与Properties类System类与Runtime类Date与Calendar DateFormat类Math与Random类 5 1JavaAPI的概念 Java的类库是Java语言提供的已经实现的标准类的集合 是Java编程的API ApplicationProgramInterface 它可以帮助开发者方便 快捷地开发Java程序 这些类根据实现的功能不同 可以划分为不同的集合 每个集合组成一个包 称为类库 Java类库中大部分都是由Sun公司提供的 这些类库称为基础类库 Java语言中提供了大量的类库共程序开发者来使用 了解类库的结构可以帮助开发者节省大量的编程时间 而且能够使编写的程序更简单更实用 Java中丰富的类库资源也是Java语言的一大特色 是Java程序设计的基础 Java常用包的简单介绍如下 1 java lang包 主要含有与语言相关的类 java lang包由解释程序自动加载 不需要显示说明 Java语言包 java lang 定义了Java中的大多数基本类 该包中包含了Object类 Object类是整个类层次结构的根结点 同时还定义了基本数据类型的类 如 String Boolean Byter Short等 这些类支持数字类型的转换和字符串的操作 在前面的章节中已经涉及了部分内容 本章主要介绍该包中的Math类和字符串类 2 java io包 主要含有与输入 输出相关的类 这些类提供了对不同的输入和输出设备读写数据的支持 这些输入和输出设备包括键盘 显示器 打印机 磁盘文件等 Java常用包的简单介绍如下 3 java util包 包括许多具有特定功能的类 有日期 向量 哈希表 堆栈等 其中Date类支持与时间有关的操作 4 java swing包和java awt包 提供了创建图形用户界面元素的类 通过这些元素 编程者可以控制所写的Applet或Application的外观界面 包中包含了窗口 对话框 菜单等类 Java常用包的简单介绍如下 5 包 含有与网络操作相关的类 如TCPScokets URL等工具 6 java applet包 含有控制HTML文档格式 应用程序中的声音等资源的类 其中Applet类是用来创建包含于HTML的Applet必不可少的类 7 java beans包 定义了应用程序编程接口 API JavaBeans是Java应用程序环境的中性平台组件结构 5 2Object类 Object类是Java程序中所有类的直接或间接父类 处在类的最高层次 一个类在声明时若不包含关键字extends 系统就会认为该类直接继承Object类 Object类包含了所有Java类的公共属性和方法 这些属性和方法在任何类中均可以直接使用 Object类有一个默认构造方法 publicObject 方法体为空在构造子类实例时 都会先调用这个默认构造方法 Object类中主要的方法如表5 1所示 Object类的equals方法比较两个对象是否相等 实现对象上差别可能性最大的相等关系 对于任何非空引用值x和y 当且仅当x和y引用同一个对象时 此方法才返回true 下面主要介绍equals方法和getClass方法的使用 1 equals方法的使用 classep5 1 a intx 1 classep5 1 publicstaticvoidmain Stringargs ep5 1 aOne newep5 1 a ep5 1 aTwo newep5 1 a Stringa1 a2 a3 abc a4 abc a1 newString abc a2 newString abc System out println a1 equals a2 是 a1 equals a2 System out println a1 a2是 a1 a2 System out println a1 equals a3 是 a1 equals a3 System out println a1 a3是 a1 a3 System out println a3 equals a4 是 a3 equals a4 System out println a3 a4是 a3 a4 System out println One equals Two 是 One equals Two System out println One Two是 One Two One Two System out println 赋值后 One equals Two 是 One equals Two System out println 赋值后 One Two是 One Two 可以看出 对于字符串变量来说 使用 运算符和 equals 方法来比较 其比较方式是不同的 运算符用于比较两个变量本身的值 即两个对象在内存中的首地址 equals 方法比较的是两个字符串中所包含的内容是否相同 对于非字符串类型的变量来说 运算符和 equals 方法都用来比较其所指对象在堆内存中的首地址 即比较两个类类型的变量是否指向同一个对象 对于a3和a4这两个由字符串常量生成的变量 其所存放的内存地址是相同的 2 getClass方法的使用 例5 2 getClass方法返回调用该方法所属的类 classep5 2 a protectedStringname publicep5 2 a Stringa name a classep5 2 publicstaticvoidmain Stringargs ep5 2 aOne newep5 2 a abc Classb One getClass 用变量b调用getClass 方法System out println 对象One所属的类为 b 5 3String类和StringBuffer类 String类和StringBuffer类主要用来处理字符串 这两个类提供了很多字符串的使用处理方法 String类是不可变类 一个String对象所包含的字符串内容永远不会被改变 而StringBuffer类是可变类 一个StringBuffer对象所包含的字符串内容可以被添加或修改 String常量字符串 一旦赋值或实例化后就不可更改 StringBuffer可变字符串构造器 如频繁的修改字符串值 可以使用StringBuffer 5 3 1String类 java lang包中的String类代表字符串 Java程序中的所有字符串字面值 如 abc 都作为此类的实例来实现 字符串是常量 它们的值在创建之后不能改变 因为String对象是不可变的 所以可以共享它们 例如 Stringstr abc 等效于 chardata a b c Stringstr newString data 1 String类常用构造方法 1 publicString 初始化一个新创建的String对象 它表示一个空字符序列 2 publicString Stringoriginal 初始化一个新创建的String对象 表示一个与该参数original相同的字符序列 换句话说 新创建的字符串是该参数字符串的一个副本 由于String是不可变的 不必使用该构造方法 除非需要original的显式副本 3 publicString char value 分配一个新的String 它表示当前字符数组参数value中包含的字符序列 该字符数组的内容已被复制 后续对字符数组的修改不会影响新创建的字符串 4 publicString char value intoffset intcount 分配一个新的String 它包含来自该字符数组参数的一个子数组的字符 offset参数是子数组第一个字符的索引 count参数指定子数组的长度 该子数组的内容已被复制 后续对字符数组的修改不会影响新创建的字符串 5 publicString byte bytes 初始化一个新创建的String对象 方法是使用平台的默认字符集解码字节的指定数组 参数bytes表示要解码为字符的字节 新的String的长度是一个字符集函数 因此不能等于字节数组的长度 当给定字节在给定字符集中无效的情况下 该构造方法无指定的行为 当需要进一步控制解码过程时 应使用CharsetDecoder类 6 publicString byte bytes StringcharsetName 构造一个新的String 方法是使用指定的字符集解码指定的字节数组 新的String的长度是一个字符集函数 因此不能等于字节数组的长度 当给定字节在给定字符集中无效的情况下 该构造方法无指定的行为 当需要进一步控制解码过程时 应使用CharsetDecoder类 2 String类常用方法 1 publicintlength 返回此字符串的长度 2 publiccharcharAt intindex 返回指定索引处的char值 索引范围为从0到length 1 序列的第一个char值在索引0处 第二个在索引1处 依此类推 这类似于数组索引 3 publicvoidgetChars intsrcBegin intsrcEnd char dst intdstBegin 将字符从此字符串复制到目标字符数组 4 publicbooleanequals ObjectanObject 比较此字符串与指定的对象 当且仅当该参数不为null 并且是表示与此对象相同的字符序列的String对象时 结果才为true 例5 3 一个说明字符串对象使用equals方法的例子 classep5 3 publicstaticvoidmain Stringargs Strings1 s2 s1 newString wearestudents s2 newString wearestudents System out println s1 equals s2 System out println s1 s2 Strings3 s4 s3 howareyou s4 howareyou System out println s3 equals s4 System out println s3 s4 5 3 2StringBuffer类 java lang包中的StringBuffer类表示可变字符序列 一个类似于String的字符串缓冲区 但不能修改 虽然在任意时间点上它都包含某种特定的字符序列 但通过某些方法调用可以改变该序列的长度和内容 StringBuffer上的主要操作是append和insert方法 可重载这些方法 以接受任意类型的数据 每个方法都能有效地将给定的数据转换成字符串 然后将该字符串的字符追加或插入到字符串缓冲区中 append方法始终将这些字符添加到缓冲区的末端 而insert方法则在指定的点添加字符 1 StringBuffer类的常用构造方法 1 StringBuffer 构造一个其中不带字符的字符串缓冲区 其初始容量为16个字符 2 StringBuffer intcapacity 构造一个不带字符 具有指定容量的字符串缓冲区 3 StringBuffer Stringstr 构造一个字符串缓冲区 并将其内容初始化为指定的字符串内容 2 StringBuffer类的常用方法 1 toString 返回此序列中数据的字符串表示形式 2 append booleanb 将boolean参数的字符串表示形式追加到序列 3 length 返回长度 字符数 4 charAt intindex 返回此序列中指定索引处的char值 5 setCharAt intindex charch 将给定索引处的字符设置为ch 6 getChars intsrcBegin intsrcEnd char dst intdstBegin 将字符从此序列复制到目标字符数组dst 7 substring intstart 返回一个新的String 它包含此字符序列当前所包含的字符子序列 8 insert intoffset Stringstr 将字符串插入此字符序列中 例5 6 一个使用StringBuffer类的例子 classep5 6 publicstaticvoidmain Stringargs StringBufferstr newStringBuffer 62791720 str insert 0 010 str setCharAt 7 8 str setCharAt str length 1 7 System out println str str append 446 System out println str str reverse System out println str 5 3 3String类和stringBuffer类下字符串的区别 String 常量字符串 一旦赋值或实例化后就不可更改 字符串缓冲区支持可变的字符串 如果对字符串中的内容经常进行操作 特别是内容要修改时 那么使用StringBuffer 如果最后需要String 那么使用StringBuffer的toString 方法 5 4基本数据类型的对象类 Java的基本数据包括byte int short long float double char Java同时也提供了基本数据类型相关的类 Java语言用包装类来把基本类型数据转换为对象 每个Java基本类型在java lang包中都有一个相应的包装类 参见表5 2 表5 2基本类型与包装类的对应 5 4 1Double类和Float类 Double类和Float类实现了对double和float基本型数据的类包装 Double类在对象中包装了一个基本类型double的值 每个Double类型的对象都包含一个double类型的字段 Double类的构造方法 Double doublenum 构造一个新分配的Double对象 它表示基本的double参数 此外 该类还提供了多个方法 可以将double转换为String 将String转换为double 还提供了其他一些处理double时有用的常量和方法 Float类在对象中包装了一个float基本类型的值 Float类型的对象包含一个float类型的字段 Float类的构造方法 Float doublevalue 构造一个新分配的Float对象 它表示转换为float类型的参数 此外 此类提供了几种方法 可在float类型和String类型之间互相转换 并且还提供了处理float类型时非常有用的其他一些常量和方法 5 4 2Byte Integer Short Long类 Byte类将基本类型byte的值包装在一个对象中 Byte类的构造方法 Byte bytevalue 构造一个新分配的Byte对象 以表示指定的byte值 一个Byte类型的对象只包含一个类型为byte的字段 此外 该类还为byte和String的相互转换提供了几种方法 并提供了处理byte时非常有用的其他一些常量和方法 Integer类在对象中包装了一个基本类型int的值 Integer类型的对象包含一个int类型的字段 Integer类的构造方法 Integer intvalue 构造一个新分配的Integer对象 它表示指定的int值 此外 该类提供了多个方法 能在int类型和String类型之间互相转换 还提供了处理int类型时非常有用的其他一些常量和方法 Short类在对象中包装基本类型short的值 一个Short类型的对象只包含一个short类型的字段 Short类的构造方法 Short shortvalue 构造一个新分配的Short对象 用来表示指定的short值 另外 该类提供了多个方法 可以将short转换为String 将String转换为short 同时还提供了其他一些处理short时有用的常量和方法 Long类在对象中封装了基本类型long的值 每个Long类型的对象都包含一个long类型的字段 Long类的构造方法 Long longvalue 构造新分配的Long对象 表示指定的long参数 此外 该类提供了多个方法 可以将long转换为String 将String转换为long 除此之外 还提供了其他一些处理long时有用的常量和方法 5 4 3Character类 Character类在对象中包装一个基本类型char的值 Character类型的对象包含类型为char的单个字段 Character类的构造方法 Character charvalue 构造一个新分配的Character对象 用以表示指定的char值 Character类还提供了几种方法 这些方法可以直接通过类名调用 用来确定字符的类别 小写字母 数字 等等 并将字符从大写转换成小写 反之亦然 例5 7 一个字符数组大小写转换的例子 publicclassep5 7 publicstaticvoidmain Stringargs chara a b c D E F for inti 0 i a length i if Character isLowerCase a i a i Character toUpperCase a i elseif Character isUpperCase a i a i Character toLowerCase a i for inti 0 i a length i System out print a i 5 5Hashtable与Properties类 Java util包中的Hashtable类实现一个哈希表 该哈希表将键映射到相应的值 任何非null对象都可以用作键或值 为了成功地在哈希表中存储和检索对象 用作键的对象必须实现hashCode方法和equals方法 Hashtable和HashMap对象可以让你把一个key和一个value结合起来 并用put 方法把这对key value输入到表中 然后你可以通过调用get 方法 把key作为参数来得到这个value 值 只要满足两个基本的要求 key和value可以是任何对象 为了将一个特定类的对象用做一个key 这个类必须提供两个方法 equals 和hashCode 这两个方法在java lang Object中 所以所有的类都可以继承这两个方法 HashCode 方法通过运用对象的内容执行一个哈希函数来生成一个int值 Hashtable和HashMap用这个值来算出一对key value位于哪个bucket 哈希元 或列表 中 5 5 2Properties类 Java util Properties类是Hashtable的一个子类 设计用于Stringkeys和values Properties对象的用法同Hashtable的用法相象Java util包中的Properties类表示了一个持久的属性集 该类继承自Hashtable Properties可保存在流中或从流中加载 属性列表中每个键及其对应值都是一个字符串 一个属性列表可包含另一个属性列表作为它的 默认值 如果未能在原有的属性列表中搜索到属性键 则搜索第二个属性列表 因为Properties继承于Hashtable 所以可对Properties对象应用put和putAll方法 但强烈反对使用这两个方法 因为它们允许调用方插入其键或值不是Strings的项 相反 应该使用setProperty方法 如果在 有危险 的Properties对象 即包含非String的键或值 上调用store或save方法 则该调用将失败 Properties类的构造方法 Properties 创建一个无默认值的空属性列表 Properties类提供了几个主要的方法 1 getProperty Stringkey 用指定的键在此属性列表中搜索属性 也就是通过参数key 得到key所对应的value 2 load InputStreaminStream 从输入流中读取属性列表 键和元素对 通过对指定的文件 比如说上面的test properties文件 进行装载来获取该文件中的所有键 值对 以供getProperty Stringkey 来搜索 3 setProperty Stringkey Stringvalue 调用Hashtable的方法put 他通过调用基类的put方法来设置键 值对 4 store OutputStreamout Stringcomments 以适合使用load方法加载到Properties表中的格式 将此Properties表中的属性列表 键和元素对 写入输出流 与load方法相反 该方法将键 值对写入到指定的文件中去 5 clear 清除所有装载的键 值对 该方法在基类中提供 5 5 3利用Properties类读取配置文件信息 各种语言都有自己所支持的配置文件类型 在Java中 Java支持的是 properties文件的读写 JDK内置的java util Properties类提供操作 properties文件的便利 例5 9 一个ep5 9 properties文件的形式 以下为数据库信息dbUserName rootdbPassword root 以下为服务器信息ip 192 168 0 9host localhost配置文件名为ep5 9 properties文件 其中 开始的一行为注释信息 在等号 左边的我们称之为key 等号 右边的我们称之为value 其实就是我们常说的键 值对 Key就是程序中的变量 而value是根据实际情况配置的值 2 代码实例 例5 10 一个使用ep5 9 properties文件的示例 程序的运行结果如下所示 查看ep5 9 properties配置文件 会发现文件已经被重新覆盖 只有两个键 值对 max 1000min 10通过上面的例子不难看出 在Java中操作配置文件是非常简单的 在一个需要用到大量配置信息的模块或系统里 有必要封装一个专门的类来使用配置文件 5 6System类与Runtime类 Java不支持全局函数和全局变量 Java设计者将一些与系统相关的重要函数和变量收集到了一个System类中 System类中的所有成员都是静态的 当要引用这些变量和方法的时候 直接使用System类名做前缀就可以了 例如以前学习的标准输入和输出 5 6 1System类 System类中的几个重要的方法 1 exit x 方法 终止当前正在运行的Java虚拟机 参数用作状态码 根据惯例 非0的状态码表示异常终止 事实上要退出Java程序 可以使用destory 退出一个独立运行的过程 2 currentTimeMillis方法 System currentTimeMillis 产生一个当前的毫秒 这个毫秒就是自1970年1月1日0时起的毫秒数 例5 11 返回自程序开始运行起至当前时间的以毫秒为单位的时间值 这是一个long型的大数值 可以用它来检测运行一段程序时所花费的时间 publicclassep5 11 publicstaticvoidmain String args longtimeTestStart System currentTimeMillis 记录开始的时间值System out println 欢迎您 longtimeTestEnd System currentTimeMillis 记录结束的时间值System out println 运行时间是 timeTestEnd timeTestStart 5 6 2Runtime类 Runtime类封装了Java命令本身所启动的实例进程 也就是封装了Java虚拟机进程 一个Java虚拟机对应一个Runtime实例对象 Runtime类中的许多方法和System类中的方法相重复 不能直接创建Runtime的实例对象 也就是不能通过new来创建 只能通过Runtime getRuntime静态方法来活得Runtime实例对象的引用 Java虚拟机本身就是Windows上的一个进程 这个进程中可以启动其它的windows程序 通过这种方式启动的windows程序实例就称为子进程 Java虚拟机调用Runtime的exec方法可以启动这个子进程 其返回值就是代表子进程的Process对象 例5 12 在java程序中启动一个windows记事本程序 并在该运行实例中打开这个java程序的源文件 启动的记事本程序在8秒钟后被关闭 publicclassep5 12 publicstaticvoidmain String args Processp null try p Runtime getRuntime exec notepad exec count txt 获得一个Runtime的实例对象并调用exec方法Thread sleep 8000 p destroy catch Exceptione e printStackTrace 5 7Date与Calendar类 Java语言提供了以下2个类来处理日期 java util Date 包装了一个long类型数据 表示与GMT 格林威治标准时间 的1970年1月1日00 00 00这一刻所相距的毫秒数 java util Calendar 可以灵活地设置或读取日期中的年 月 日 时 分和秒等信息 5 7 1Date类 java util包中的Date类表示特定的时间 精确到毫秒 使用Date类的无参数构造方法Date 创建的对象可以获取本地当前时间 Date 分配Date对象并初始化此对象 以表示分配它的时间 精确到毫秒 在类Date所有可以接受或返回年 月 日期 小时 分钟和秒值的方法中 将使用下面的表示形式 年份y由整数y 1900表示 月份由从0至11的整数表示 0是一月 1是二月等等 因此11是十二月 日期 一月中的某天 按通常方式由整数1至31表示 小时由从0至23的整数表示 因此 从午夜到1a m 的时间是0点 从中午到1p m 的时间是12点 分钟按通常方式由0至59的整数表示 秒由0至61的整数表示 值60和61只对闰秒发生 尽管那样 也只用在实际正确跟踪闰秒的Java实现中 于按当前引入闰秒的方式 两个闰秒在同一分钟内发生是极不可能的 但此规范遵循ISOC的日期和时间约定 例5 13 在下面的例子中 用三种格式输出时间 importjava util Date importjava text SimpleDateFormat classep5 13 publicstaticvoidmain Stringargs DatenowTime newDate System out println nowTime SimpleDateFormatmatter1 newSimpleDateFormat time yyyy年MM月dd日E北京时间 System out println matter1 format nowTime SimpleDateFormatmatter2 newSimpleDateFormat 北京时间 yyyy年MM月dd日HH时mm分ss秒 System out println matter2 format nowTime Datedate1 newDate 1000 date2 newDate 1000 System out println matter2 format date1 System out println matter2 format date2 System out println newDate System currentTimeMillis 5 7 2Calendar类 java util Calendar类是一个抽象类 它为特定瞬间与一组诸如YEAR MONTH DAY OF MONTH HOUR等日历字段之间的转换提供了一些方法 并为操作日历字段 例如获得下星期的日期 提供了一些方法 抽象类不能采用new实例化 但我们可以使用Calendar类的static方法getInstance 初始化一个日历对象 如 Calendarcalendar Calendar getInstance set 和get 方法可用来设置和读取日期的特定部分 比如年 月 日 时 分和秒等 上面的calendar对象可以调用方法 publicfinalvoidset intyear intmonth intdate publicfinalvoidset intyear intmonth intdate inthourOfDay intminute publicfinalvoidset intyear intmonth intdate inthourOfDay intminute intsecond 将日历翻到任何一个时间 参数year取负数时表示公元前 calendar对象调用方法 publicintget intfield 可以获取有关年份 月份 小时 星期等信息 参数field的有效值由Calendar的静态常量指定 例如 calendar get Calendar MONTH 返回一个整数 如果该整数是0表示当前日历是在一月 该整数是1表示当前日历是在二月等 calendar对象调用方法 publiclonggetTimeInMillis 返回此calendar的时间值 以毫秒为单位 5 8Math与Random类 java lang包中的Math类也称数学类 是一个工具类 它在解决与数学有关的一些问题是有着非常重要的作用 Math类包含许多用来进行科学计算的类方法 涉及大多数学函数 如sin cos exp abs等 这些方法可以直接通过类名调用 Math类还提供了Math PI和Math E两个静态数学常量 E和PI 它们的值分别为2 7182828284590452354和3 14159265358979323846 该类是final的 不能被继承 类中的方法和属性全部是静态 不允许在类的外部创建Math类的对象 因此 只能使用Math类的方法而不能对其作任何更改 5 8 1Math类 表5 3Math类的主要方法 使用这些方法时 用法为Math 为方法名 用法如 inta Math abs 124 intb Math floor 5 2 doubles Math sqrt 7 例5 15 Math类主要方法的举例 classep5 15 publicstaticvoidmain Stringargs System out println Pi Math PI System out println E Math E System out println abs 6 8 Math abs 6 8 System out println ceil 6 8 Math ceil 6 8 System out

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论