java-7工具类及常用算法(49).ppt_第1页
java-7工具类及常用算法(49).ppt_第2页
java-7工具类及常用算法(49).ppt_第3页
java-7工具类及常用算法(49).ppt_第4页
java-7工具类及常用算法(49).ppt_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

JAVA 程序设计,第9章 工具类及常用算法,1,9.1.1 Java基础类库,java.lang包是Java语言的核心类库 java.io包是Java语言的标准输入/输出类库 java.util包包括了Java语言中的一些低级的实用工具 ava.awt包是Java语言用来构建图形用户界面(GUI)的类库 java.applet包是用来实现运行于Internet浏览器中的Java Applet的工具类库 包是Java语言用来实现网络功能的类库 其他包,2,9.1 Java语言基础类,JDK API文档,JDK API文档可以从网站下载,安装后,打开index.html即可 网上可以找到chm格式的,甚至中文版,3,9.1.2 Object类,Object类是Java程序中所有类的直接或间接父类 类java.lang.Object处于Java开发环境的类层次树的根部,其他所有的类都直接或间接地为它的子类。该类定义了一些所有对象最基本的状态和行为,包括与同类对象相比较,转化为字符串等等。下面我们分别进行介绍(详细用法大家可以查阅Java JDK的API)。,4,(1) equals( ),用来比较两个对象是否相同,如果相同,则返回true,否则返回false,它比较的是两个对象状态和功能上的相同,而不是引用上的相同。 Integer one = new Integer (1); Integer anotherOne = new Integer (1); if (one.equals (anotherOne) System.out.println (“objects are equal”); 例中,equals( )方法返回true,因为对象One和anotherOne 包含相同的整数值1.,5,(2) getClass ( ),getClass ( )方法是final方法,它不能被重载。它返回一个对象在运行时所对应的类的表示,从而可以得到相应的信息。下面的方法得到并显示对象的类名: void PrintClassName( Object obj ) System.out.println(“ The objects class is “ + obj.getClass( ).getName( ) ); ,6,(3) toString( ),toString( )方法用来返回对象的字符串表示,可以用来显示一个对象。例如: System.out.println ( Thread.currentThread ( ).toString ( ) ); 可以显示当前的线程。 通过重载toString ( )方法可以适当地显示对象的信息以进行调试。,7,Object类的toString()方法,当System.out.println()方法的参数为Object类型,println()会自动调用Object对象的toString()方法,然后打印toString()方法返回的字符串。 System.out.println(new Object().toString(); 等价于: System.out.println(new Object();,8,覆盖父类的函数(P195/例9-6),public String toString() return(“电话卡接入号码:“ + connectNumber +“n 电话卡卡号:“ + cardNumber +“n 电话卡密码:“ + password +“n 卡中的金额:“ + balance +“n 通话附加费:“ + additoryFee); ,9,9.1.3 基本数据类型的包装类,Java的基本数据类型用于定义简单的变量和属性将十分方便,但为了与面向对象的环境一致,Java中提供了基本数据类型的包装类(wrapper),它们是这些基本类型的面向对象的代表。与8种基本数据类型相对应,基本数据类型的包装类也有8种,分别是:Character,Byte,Short,Integer,Long,Float,Double,Boolean。,10,6.1.2 数据类型类,表6-1 数据类型类及对应的基本数据类型,11,P98,这几个类有以下共同特点。 (1)这些类都提供了一些常数,以方便使用,如Integer.MAX_VALUE(整数最大值), Double.NaN(非数字),Double. POSITIVE_INFINITY(正无穷)等。 (2)提供了valueOf(String),toString(),用于从字符串转换及或转换成字符串。 (3)通过xxxxValue()方法可以得到所包装的值,Integer对象的intValue()方法。 (4)对象中所包装的值是不可改变的(immutable)。要改变对象中的值只有重新生成新的对象。 (5)toString(), equals()等方法进行了覆盖。 除了以上特点外,有的类还提供了一些实用的方法以方便操作。例如,Double类就提供了更多的方法来与字符串进行转换。,12,/double转成string的几种方法 d=3.14159; s = “ + d; s = Double.toString( d ); s = new Double(d).toString(); s = String.valueOf( d ); / String转成double的几种方法 s = “3.14159“; try d = Double.parseDouble( s ); d = new Double(s).doubleValue(); d = Double.valueOf( s ).doubleValue(); catch(NumberFormatException e ) e.printStackTrace(); ,13,(4)String与 int 量相互转化 public String toString ( ) 将当前对象所对应的 int 量转化成字符串; public static int parseInt (String s) 类方法,将字符串转化成 int 量; public static Integer valueOf (String s) 类方法,将字符串转化成 Integer 对象,该对象对应的 数值与字符串表示的数值一致;,14,所有数据类型类都是最终类。除 Boolean 类和 Character 类是 Object 类的直接子类外,其他类都是抽象类 Number 类的子类,与 Integer 类相似的属性和方法。 例从字符串转成其它基本数据类型; int i = Integer . parseInt (“123”) ; int i = Integer . valueOf (“123”) . intValue ( ) ; float f = Float . valueOf (“1 . 23”) . floatValue ( ) ; boolean b = Boolean . valueOf (“true”) . booleanValue ( ) ;,15,9.9.3 自动装箱与拆箱,在JDK1.5以上的版本中则可以自动地进行装箱和拆箱:自动装箱是指基本类型自动转为包装类(如int转为Integer);自动拆箱是指包装类自动转为基本类型 (如Integer转为int) int a = 3; ArrayList ary = new ArrayList(); ary.add(a); /装箱:int自动转换成Integer对象作为add方法的参数 int c = (Integer)ary.get(0); / 拆箱:Integer自动转换成int赋值给变量c,16,P100,341,Math 类,特点:1)提供实现标准数学函数的方法,用来完成常用数学运算; 2)使用方法全部是 static 方法,可直接采用类名调用; public final static double E ; / 数学常量 e public final static double PI ; / 圆周率 public static double abs (double a) ; / 绝对值 public static double acos (double a) ; / 反余弦 public static double exp (double a) ; / e 的 a 次幂 public static double floor (double a) ; / 不大于 a 的最大整数 public static double IEEEremainder (double f1, double f2) ; / 求余,17,public static double log (double a) ; / 自然对数 public static double max (double a, double b) ; / 最大值 public static double random ( ) ; / 返回带正号的 double 值,大于或等于 0.0,小于 1.0。 public static double rint (double a) ; / 四舍五入 public static double sqrt (double a) ; / 平方根 例 求 1100 之间的一个随机数 int i = (int) (Math . random ( )* 100 )+1 ; 产生一个x1,x2内的随机整数x x=(int)(Math.random()*(x2-x1+1)+x1) Math.random()产生一个0,1)区间内的实数,18,System 类,public final class System extends Object 特点:System 类不能继承,且所有属性和方法都是 static 的。 用 System 类获取标准输入/输出 public static InputStream in ; / 标准输入 public static PrintStream out ;/ 标准输出 public static PrintStream err ;/ 标准错误输出 例: char c = System . in . read ( ) ; System . out . println (“Hello !”) ;,19,P319,用 System 类的方法获取系统信息,完成系统操作 public static long currentTimeMillis ( ) : 获取自 1970 年 1 月 1 日零时至当前系统时刻的微秒数; public static void exit ( int status ) : 强制 Java 虚拟机退出运行; public static void gc ( ) : 强制调用 Java 虚拟机的垃圾回收功能;,20,9. 2 字符串,程序中需要用到的字符串可以分为两大类,一类是创建之后不会再做修改和变动的字符串常量;另一类是创建之后允许再做更改和变化的字符串。前者是String类,后者是StringBuffer类。,21,9.2.1 String类,String 类对象保存不可修改(immutable)的Unicode字符序列 String类的下述方法能创建并返回一个新的String对象: concat, replace, substring, toLowerCase, toUpperCase, trim,String. 提供查找功能的有关方法: endsWith, startsWith, indexOf,,lastIndexOf. 提供比较功能的方法: equals, equalsIgnoreCase, 其它方法: charAt ,length.,22,P189,6.5 字符串 (String),String 类表示字符串常量(创建之后不能改变)。 (比较:字符串变量 StringBuffer) 创建字符串常量 String 对象 String 类有11个构造函数。具有代表性的如: public String ( ) -分配一个空字符串。 public String (String value) - 构造一个与value相同的String; public String (StringBuffer buffer) - 构造一个与 StringBuffer 内容相同的String; public String (char value ) 由字符数组构造;,23,对象声明: String s ; 对象创建: s = new String (“abc”) ; 声明与创建合并: String s = new String (“abc”) ; 以赋值的形式声明和创建:String s = “abc” ; String 类的函数: public int length ( ) : 求字符串长度。 例 String s = “Hello!” ; System .out .println (s .length ( );,24,判断字符串的前缀和后缀 public boolean startsWith ( String prefix) ; public boolean endsWith ( String prefix) ; 判断当前字符串的前缀和后缀是否是指定的字符子串。 例如,可以利用这两个方法来区分新老电话用户,或由居民身份证的最后一位数字判断性别(奇数为男性,偶数为女性): if (s. endsWith(“0”) | s. endsWith(“2”) | s. endsWith(“4”) | s. endsWith(“6”) | s. endsWith(“8”) ) System .out .println (“ 此人是女性”) ;,25,字符串中单个字符的查找 public int indexOf ( int ch ); public int indexOf ( int ch , int fromIndex); public int lastIndexOf ( int ch ); public int lastIndexOf ( int ch , int fromIndex); 查找当前字符串中某特定字符出现的位置。前两个方法是由前向后查找,后两个方法是由后向前查找,并返回字符出现的位置。若找不到,返回 1。,26,例:找出字符 a 在字符串中的所有出现位置: String s = “Java 是面向对象的语言,JavaScript 是脚本语言” ; int i = -1; do i = s. indexOf (int)a, i+1) ; System .out .print ( i+”t”) ; while (i != -1) ; 运行结果是: 1 3 14 16 -1,27,子串 查找 public int indexOf ( String str ); public int indexOf ( String str, int fromIndex ); public int lastIndexOf ( String str ); public int lastIndexOf ( String str, int fromIndex ); 查找某特定字符子串在当前字符串中出现的位置。,28,例找出字符子串“语言”在字符串 s 中的所有出现位置: String s = “Java 是面向对象的语言,JavaScript 是脚本语言” ; String sub =“语言” ; for ( int i =s. length ( ); i != -1; ) i = s. lastIndexOf (sub, i -1) ; System .out .print ( i+”t”) ; 运行结果是: 26 10 -1,29,字符串 比较 public int compareTo ( String anotherString ) : 相同,返回 0 ; 字母序大于,返回大于 0 的整数; 反之,返回小于 0 的整数; public boolean equals ( Object anObject ) :覆盖 Object 类的方法; public boolean equalsIgnoreCase ( String anotherString ) :不区分字母大小写。 例:P189-191,例9-1,例9-3,30,连接字符子串 public String concat ( String str ) :参数字符串连接在当前字符串尾部,并返回连接而成的长字符串,但当前字符串不变。 例String s = “Hello !” ; System .out .println (s.concat (“ World !” ) ); System .out .println ( s ) ; 输出为: Hello! World! Hello!,31,substring():返回字符串的一个子字符串。 public String subString(int beginIndex) public String subString(int beginIndex,int endIndex) 子串在源串的起始位置为beginIndex,结束为endIndex-1。如没有提供endIndex,则结束位置为:字符串长度1。,32,9.2.2 StringBuffer类 (P201),StringBuffer类对象保存可修改的Unicode字符序列 构造方法 StringBuffer() StringBuffer(int capacity) StringBuffer(String initialString) 实现修改操作的方法: append, insert, reverse, setCharAt, setLength.,33,StringBuffer 类 可以扩充和修改的字符串变量; 创建 public StringBuffer( ):构造一个空 StringBuffer 对象。 public StringBuffer( int length ):构造一个初始容量 为 length 的 StringBuffer 对象。 public StringBuffer( String str ):构造一个所包含字符序列 与 String 参数 str 相同的 StringBuffer 对象;,34,字符串变量的扩充、修改 (1)public StringBuffer append ( 参数类型 参数对象名 ) ; 将指定参数对象转化成字符串,附加在原 StringBuffer 字符串对象之后。 (2)public StringBuffer insert (int 插入位置,参数类型 参数对象名) ; 在指定位置插入给定的参数对象所转化而成的字符串。,35,StringBuffer buf = new StringBuffer ( ) ; buf . append (“Hello, Guys !”) ; System . out . println (buf . toString ( ) ; buf . insert (6,30) ; System . out . println (buf . toString ( ) ; 输出的结果是: Hello, Guys ! Hello, 30 Guys !,字符串的赋值和加法 例 String str = “Hello,” ; str = str + “Guys !” ; 问题:String 为字符常量,如何进行字符串连接的? Java 中如下处理: String str = “Hello,” ; 等价于:String str = new StringBuffer( ) . append (“Hello,”) . toString ( ) ; str = str + “Guys !” ; 等价于:str = new StringBuffer ( ) . append (str) . append(“Guys !”) . toString ( ) ;,36,比较String类和StringBuffer类,String类不可编辑 StringBuffer类可编辑 String s1=new String(“abc”); s1.concat(“def”); StringBuffer sb1=new StringBuffer(“abc”); sb1.append(“def”); System.out.println(s1); System.out.println(sb1);,37,9.4 Scanner类 (p205),38,6.5.3 Java Application 命令行参数 功能命令行参数用来向 Java 应用程序传递数据。 格式: java 主类名 参数 参数 参数 这些参数的类型都是 String 类型,它们保存在一个字符串数组中,并作为主类 main 方法的参数 args 供程序使用。 注意事项: 当希望将命令行参数作为其他类型数据使用时,应进行相应的类型转换 注意数组越界问题 例 class Hello public static void main(String args) System.out.println(args0+args1); 使用命令运行:java Hello name hello,39,1.设有以下代码: String s1 = “XYZ“; String s2 = “XYZ“; String s3 = new String(“XYZ“); 则表达式s1=s2和s1=s3的值分别是( d ) A. true,true Bfalse,false Cfalse,true Dtrue,false 2.创建字符串s:String s=new String(“hello”);以下( d )语句将改变s。 A. s.append(“aaa”); B. s.concat(s); C. s.substring(3) D. 以上语句都不会,3. 一个异常处理中 finally语句块只能有一个或者可以没有。 A. 正确 B. 错误 4.下面的程序段执行后输出的结果是( )。 StringBuffer buf=new StringBuffer(“Beijing2008“); buf.insert(7,“); System.out.println(buf.toString(); A. Beijing2008 BBeijing2008 CBeijing2008 DBeijing#2008,41,5. (A)类是所有异常类的父类。 A.Throwable B. Error C. Exception D. AWTError 6.设有两个字符串对象str1和str2,则表达式“str1 = str2”的意义是判别字符串 str1 和str2 比较的引用 false 。,42,7下列关于运行字节码文件的命令行参数的描述中,正确的

温馨提示

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

评论

0/150

提交评论