Java第6章.ppt
第第6章章 工具类与算法工具类与算法n n6.1 语言基础类库n n6.2 Applet类与Applet程序n n6.3 数组n n6.4 向量n n6.5 字符串n n6.6 递归n n6.7 排序n n6.8查找n n6.9 链表n n6.10 队列n n6.11 堆栈n n6.12 二叉树6.1 语言基础库类语言基础库类n nObject Object 类类类类 ObjectObject类是类是类是类是JavaJava程序中所有类的直接或间接父类,程序中所有类的直接或间接父类,程序中所有类的直接或间接父类,程序中所有类的直接或间接父类,也是类库中所有类的父类。也是类库中所有类的父类。也是类库中所有类的父类。也是类库中所有类的父类。(1)protected Object clone()(1)protected Object clone():生成当前对象的一个生成当前对象的一个生成当前对象的一个生成当前对象的一个拷贝,并返回这个复制对象。拷贝,并返回这个复制对象。拷贝,并返回这个复制对象。拷贝,并返回这个复制对象。(2)public(2)public booleanboolean equals(Objectequals(Object objobj):比较两个比较两个比较两个比较两个对象是否相同,是则返回对象是否相同,是则返回对象是否相同,是则返回对象是否相同,是则返回truetrue。(3)public final Class(3)public final Class getClassgetClass()():获取当前对象所获取当前对象所获取当前对象所获取当前对象所属的类信息,返回属的类信息,返回属的类信息,返回属的类信息,返回ClassClass对象。对象。对象。对象。(4)protected void finalize()(4)protected void finalize():定义回收当前对象时定义回收当前对象时定义回收当前对象时定义回收当前对象时所需完成的清理工作。所需完成的清理工作。所需完成的清理工作。所需完成的清理工作。(5)public String(5)public String toStringtoString()():返回当前对象本身的返回当前对象本身的返回当前对象本身的返回当前对象本身的有关信息,按字符串对象返回。有关信息,按字符串对象返回。有关信息,按字符串对象返回。有关信息,按字符串对象返回。n n数据类型类 数据数据类类型型类类基本数据基本数据类类型型BooleanBooleanbooleanbooleanCharacterCharactercharcharDoubleDoubledoubledoubleFloatFloatfloatfloatIntegerIntegerintintLongLonglonglongn n数据类型类是一个类,有自己的方法,这些方法数据类型类是一个类,有自己的方法,这些方法数据类型类是一个类,有自己的方法,这些方法数据类型类是一个类,有自己的方法,这些方法主要用来操作和处理它所对应的基本数据类型量。主要用来操作和处理它所对应的基本数据类型量。主要用来操作和处理它所对应的基本数据类型量。主要用来操作和处理它所对应的基本数据类型量。比如比如比如比如:Integer:Integer类类类类 (1)MAX-VALUE(1)MAX-VALUE域和域和域和域和MIN-VALUEMIN-VALUE域分别规定了域分别规定了域分别规定了域分别规定了intint类型量的最大值和最小值。类型量的最大值和最小值。类型量的最大值和最小值。类型量的最大值和最小值。(2)(2)构造函数构造函数构造函数构造函数public Integer(public Integer(intint value)value)public Integer(String s)public Integer(String s)(3)(3)数据类型转换方法分别将当前对象所对应的数据类型转换方法分别将当前对象所对应的数据类型转换方法分别将当前对象所对应的数据类型转换方法分别将当前对象所对应的intint量转换成其他基本数据类型的量,并返回转换后量转换成其他基本数据类型的量,并返回转换后量转换成其他基本数据类型的量,并返回转换后量转换成其他基本数据类型的量,并返回转换后的值。的值。的值。的值。public double public double doubleValuedoubleValue()()public public intint intValueintValue()()public long public long longValuelongValue()()(4)字符串与int量相互转化的方法 public String toString()方法将当前Integer对象对应的int量转化成字符串。public static int parseInt(String s)int i=Integer.parseInt(123);public static Integer valueOf(String s)int i=Integer.valueOf(123).intValue();n nMath类 Math类用来完成一些常用的数学运算,它提供了若干实现不同标准数学函数的方法。public final static double E;/public final static double E;/数学常量数学常量数学常量数学常量e epublic final static double PI;/public final static double PI;/圆周率常量圆周率常量圆周率常量圆周率常量public static double public static double abs(doubleabs(double a);/a);/绝对值绝对值绝对值绝对值public static double public static double acos(doubleacos(double a);/a);/反余弦反余弦反余弦反余弦public static double public static double exp(doubleexp(double a);/e a);/e的参数次幂的参数次幂的参数次幂的参数次幂public static double public static double floor(doublefloor(double a);a);public static double public static double log(doublelog(double a);/a);/自然对数自然对数自然对数自然对数public static double public static double max(doublemax(double a,double b);a,double b);public static float public static float min(floatmin(float a,float b);a,float b);public static double public static double pow(doublepow(double a,double b);/a,double b);/乘方乘方乘方乘方public static double random();public static double random();/产生产生产生产生0 0和和和和1(1(不含不含不含不含1)1)之间的伪随机数之间的伪随机数之间的伪随机数之间的伪随机数public static double public static double rint(doublerint(double a);/a);/四舍五入四舍五入四舍五入四舍五入public static double public static double sqrt(doublesqrt(double a);/a);/平方根平方根平方根平方根int i=9,j=7,k;k=Math.max(i,j);int i=(int)(Math.random()*10)+1;n nSystem类 System是一个功能强大、非常有用的特殊的类,这个类不能实例化,即不能创建System类的对象,所以它所有的属性和方法都是static的,引用时以System为前缀即可。1.用System类获取标准输入/输出 System类的属性有三个,分别是系统的标准输入、标准输出和标准错误输出:public static PrintStream err;public static InputStream in;public static PrintStream out;System.out.println(Hello World);2.用System类的方法获取系统信息,完成系统操作(1)public static long currentTimeMillis()(2)public static void exit(int status)(3)public static void gc()6.2 Applet类与类与Applet小程序小程序Applet类类n nApplet类是Java的另一个系统类java.awt.panel的类:n n包容和排列其他的界面元素;n n响应它所包容范围之内的事件或把事件向更高层次传递。n nimport java.applet.Applet;public class MyApplet extends Applet n nAppletApplet类的主要方法类的主要方法类的主要方法类的主要方法n ninit()init()完成完成完成完成AppletApplet类实例的初始化工作。类实例的初始化工作。类实例的初始化工作。类实例的初始化工作。由浏览器或由浏览器或由浏览器或由浏览器或 applet viewer applet viewer 调用,通知此调用,通知此调用,通知此调用,通知此 applet applet 它它它它已经加载到系统中。它经常在第一次调用已经加载到系统中。它经常在第一次调用已经加载到系统中。它经常在第一次调用已经加载到系统中。它经常在第一次调用 start start 方方方方法前被调用。法前被调用。法前被调用。法前被调用。如果如果如果如果 Applet Applet 的子类要执行初始化,的子类要执行初始化,的子类要执行初始化,的子类要执行初始化,则应该重写此方法。例如,带有线程的则应该重写此方法。例如,带有线程的则应该重写此方法。例如,带有线程的则应该重写此方法。例如,带有线程的 applet applet 将将将将使用使用使用使用 init init 方法来创建线程,使用方法来创建线程,使用方法来创建线程,使用方法来创建线程,使用 destroy destroy 方法销毁方法销毁方法销毁方法销毁它们。它们。它们。它们。n nstart()start()用来启动浏览器运行用来启动浏览器运行用来启动浏览器运行用来启动浏览器运行AppletApplet的主线程。的主线程。的主线程。的主线程。在在在在initinit()初始化之后被调用,()初始化之后被调用,()初始化之后被调用,()初始化之后被调用,AppletApplet重启:使用了浏览器的重启:使用了浏览器的重启:使用了浏览器的重启:使用了浏览器的ReloadReload操作或用户操作或用户操作或用户操作或用户将浏览器转向其他的页面又返回。将浏览器转向其他的页面又返回。将浏览器转向其他的页面又返回。将浏览器转向其他的页面又返回。n npaint()paint()在在在在AppletApplet中显示文字、图形和其他组件。中显示文字、图形和其他组件。中显示文字、图形和其他组件。中显示文字、图形和其他组件。AppletApplet被启动之后或是被启动之后或是被启动之后或是被启动之后或是AppletApplet所在的浏览器窗口改变,都所在的浏览器窗口改变,都所在的浏览器窗口改变,都所在的浏览器窗口改变,都会自动调用会自动调用会自动调用会自动调用paintpaint()来重新描绘自己的界面。()来重新描绘自己的界面。()来重新描绘自己的界面。()来重新描绘自己的界面。repaint()repaint()方法:方法:方法:方法:update()update()屏幕清空,然后调用屏幕清空,然后调用屏幕清空,然后调用屏幕清空,然后调用paint()paint()重画重画重画重画之。之。之。之。n nstop()stop()类似于类似于类似于类似于start()start()方法的逆操作,当用户浏览其它页时,浏览方法的逆操作,当用户浏览其它页时,浏览方法的逆操作,当用户浏览其它页时,浏览方法的逆操作,当用户浏览其它页时,浏览器将首先自动调用该方法停止执行器将首先自动调用该方法停止执行器将首先自动调用该方法停止执行器将首先自动调用该方法停止执行AppletApplet的主线程。的主线程。的主线程。的主线程。n ndestroy()destroy()当用户退出浏览器时,浏览器中运行的当用户退出浏览器时,浏览器中运行的当用户退出浏览器时,浏览器中运行的当用户退出浏览器时,浏览器中运行的AppletApplet实例也相应实例也相应实例也相应实例也相应被消灭,即被内存删除。在消灭被消灭,即被内存删除。在消灭被消灭,即被内存删除。在消灭被消灭,即被内存删除。在消灭AppletApplet之前,浏览器会自之前,浏览器会自之前,浏览器会自之前,浏览器会自动调用动调用动调用动调用destroy()destroy()方法来完成释放资源、关闭连接之类的操方法来完成释放资源、关闭连接之类的操方法来完成释放资源、关闭连接之类的操方法来完成释放资源、关闭连接之类的操作。作。作。作。Java Applet的生命周期与主要方法例例6-2n nInitCnt=0;StartCnt=0;n nStopCnt=0;DestroyCnt=0;PaintCnt=0;n npublic void init()n n n nInitCnt+;/init()方法执行次数加一n n n nDestroyCnt+;StartCnt+;StopCnt+;n ng.fillRect(25,200-InitCnt*30,40,InitCnt*30);Life.javaHTML文件参数传递文件参数传递n nAPPLETAPPLET和和和和是嵌入是嵌入是嵌入是嵌入AppletApplet的标记,其中至少需的标记,其中至少需的标记,其中至少需的标记,其中至少需包括三个参数:包括三个参数:包括三个参数:包括三个参数:codecode,heightheight和和和和widthwidth。n n(1)codebase(1)codebase:当:当:当:当AppletApplet字节码文件的保存位置与它所嵌入的字节码文件的保存位置与它所嵌入的字节码文件的保存位置与它所嵌入的字节码文件的保存位置与它所嵌入的HTMLHTML文档不同时,应使用参数文档不同时,应使用参数文档不同时,应使用参数文档不同时,应使用参数codebasecodebase来指明字节码文件来指明字节码文件来指明字节码文件来指明字节码文件的位置,这个位置应使用的位置,这个位置应使用的位置,这个位置应使用的位置,这个位置应使用URLURL的格式。例如:的格式。例如:的格式。例如:的格式。例如:codebase=http:/codebase=http:/www.illusion.org/Applet/aint.classwww.illusion.org/Applet/aint.class (2)(2)altalt:如如如如果果果果解解解解释释释释HTMLHTML页页页页面面面面的的的的是是是是一一一一个个个个不不不不包包包包含含含含JavaJava解解解解释释释释器器器器的的的的浏浏浏浏览览览览器器器器,那那那那么么么么它它它它将将将将不不不不能能能能执执执执行行行行字字字字节节节节码码码码,而而而而是是是是把把把把altalt参参参参数数数数指指指指明明明明的的的的信信信信息息息息显示给用户。显示给用户。显示给用户。显示给用户。alt=This a Java Applet your browser can not understand.alt=This a Java Applet your browser can not understand.(3)(3)alignalign:表表表表示示示示AppletApplet界界界界面面面面区区区区域域域域在在在在浏浏浏浏览览览览器器器器窗窗窗窗口口口口的的的的对对对对齐齐齐齐情况。情况。情况。情况。align=CENTERalign=CENTER参数的传递参数的传递 APPLET code=height=200 width=300 PARAM name=s=s=getParametergetParameter(vstringvstring)x=x=Integer.parseIntInteger.parseInt(getParametergetParameter(x);(x);y=y=Integer.parseIntInteger.parseInt(getParametergetParameter(y);(y);例子例子例子例子6-36-36.3 数组数组数组的主要特点如下:(1)数组是相同数据类型的元素的集合。(2)数组中的各元素是有先后顺序的。它们在内存中按照这个顺序连续存放在一起。(3)每个数组元素用整个数组的名字和它自己在数组中的位置表达。n n1.声明数组 数组元素类型 数组名 ;数组元素类型 数组名;n n2.创建数组空间数组名数组名数组名数组名 =new =new 数组元素类型数组元素类型数组元素类型数组元素类型 数组元素的个数数组元素的个数数组元素的个数数组元素的个数 ;n n3.创建数组元素并初始化n n 声明:int num;int num;n n 创建:num=new int3;int num=new int3;n n 赋值:num0=1;num1=4;n n int num=1,2,6;省略 new int num=new int 1,2,3;错误:int num3;int num;num=1,2,3;int num=new int31,2,3;Java数组时需要注意的几个问题:(1)数组元素的下标(即数组元素方括号内的数字,代表了数组元素在数组中的位置)从0开始,直到数组元素个数减1为止。(2)所有的数组都有一个属性length,这个属性存储了数组元素的个数,利用它可以方便地完成许多操作。(3)Java系统能自动检查是否有数组下标越界的情况。6.4 向量向量n n向量向量向量向量(Vector)(Vector)java.utiljava.util包包包包n n不同类型元素共存的变长数组。不同类型元素共存的变长数组。不同类型元素共存的变长数组。不同类型元素共存的变长数组。n n适用的情况适用的情况适用的情况适用的情况(1)(1)需要处理的对象数目不定,序列中的元素都是需要处理的对象数目不定,序列中的元素都是需要处理的对象数目不定,序列中的元素都是需要处理的对象数目不定,序列中的元素都是对象,或可以表示为对象。对象,或可以表示为对象。对象,或可以表示为对象。对象,或可以表示为对象。(2)(2)需要将不同类的对象组合成一个数据序列。需要将不同类的对象组合成一个数据序列。需要将不同类的对象组合成一个数据序列。需要将不同类的对象组合成一个数据序列。(3)(3)需要做频繁的对象序列中元素的插入和删除。需要做频繁的对象序列中元素的插入和删除。需要做频繁的对象序列中元素的插入和删除。需要做频繁的对象序列中元素的插入和删除。(4)(4)经常需要定位序列中的对象或其他查找操作。经常需要定位序列中的对象或其他查找操作。经常需要定位序列中的对象或其他查找操作。经常需要定位序列中的对象或其他查找操作。(5)(5)在不同的类之间传递大量的数据。在不同的类之间传递大量的数据。在不同的类之间传递大量的数据。在不同的类之间传递大量的数据。数组适用情况:数组适用情况:(1)序列中的元素是简单数据类型的数据。序列中的元素是简单数据类型的数据。(2)序列中元素的数目相对固定,插入、删除序列中元素的数目相对固定,插入、删除和查找操作较少。和查找操作较少。n n1.1.创建向量类的对象创建向量类的对象创建向量类的对象创建向量类的对象public Vector()public Vector();public Vector(public Vector(intint initCapacityinitCapacity););public Vector(public Vector(intint initCapacityinitCapacity,intint capacityIncrementcapacityIncrement););n n2.2.向向量序列中添加元素向向量序列中添加元素向向量序列中添加元素向向量序列中添加元素addElementaddElement()()方法将新元素添加在向量序列的尾部方法将新元素添加在向量序列的尾部方法将新元素添加在向量序列的尾部方法将新元素添加在向量序列的尾部insertElementinsertElement()()方法将新元素插入在序列的指定位置方法将新元素插入在序列的指定位置方法将新元素插入在序列的指定位置方法将新元素插入在序列的指定位置处。处。处。处。addElementaddElement(Object (Object objobj););insertElementinsertElement(Object (Object objobj,intint index);index);其中其中其中其中objobj是加入到向量序列中的对象,是加入到向量序列中的对象,是加入到向量序列中的对象,是加入到向量序列中的对象,indexindex是插入的是插入的是插入的是插入的位置位置位置位置(0(0为第一个位置为第一个位置为第一个位置为第一个位置)。Vector MyVector=new Vector();for(int i=1;i=10;i+)MyVector.addElement(new D200-Card(200180000+i,1111,50.0,200,0.1);MyVector.insertElement(new IP-Card(12345678,1234,100.0,200),0);n n3.3.修改或删除向量序列中的元素修改或删除向量序列中的元素修改或删除向量序列中的元素修改或删除向量序列中的元素(1)void(1)void setElementAtsetElementAt(Object(Object objobj,intint index)index)将向量序列将向量序列将向量序列将向量序列indexindex位置处的对象元素设置成为位置处的对象元素设置成为位置处的对象元素设置成为位置处的对象元素设置成为objobj,如果这个位置原来有元素则被覆盖。如果这个位置原来有元素则被覆盖。如果这个位置原来有元素则被覆盖。如果这个位置原来有元素则被覆盖。(2)(2)booleanboolean removeElementremoveElement(Object(Object objobj)删除向量序列中第一个与指定的删除向量序列中第一个与指定的删除向量序列中第一个与指定的删除向量序列中第一个与指定的objobj对象相同的元素,对象相同的元素,对象相同的元素,对象相同的元素,同时将后面元素前提补上空位。同时将后面元素前提补上空位。同时将后面元素前提补上空位。同时将后面元素前提补上空位。(3)void(3)void removeElementAtremoveElementAt(intint index)index)删除删除删除删除indexindex指定位置处的元素,同时将后面的元素向指定位置处的元素,同时将后面的元素向指定位置处的元素,同时将后面的元素向指定位置处的元素,同时将后面的元素向前提。前提。前提。前提。(4)void removeAllElements()清除向量序列中的所有元素。清除向量序列中的所有元素。n n4.4.查找向量序列中的元素查找向量序列中的元素查找向量序列中的元素查找向量序列中的元素(1)Object (1)Object elementAtelementAt(intint index)index)返回指定位置处的元素。返回指定位置处的元素。返回指定位置处的元素。返回指定位置处的元素。String String strstr=(=(String)MyVectorString)MyVector.elementAtelementAt(0);(0);(2)(2)booleanboolean contains(Object contains(Object objobj)检查向量序列中是否包含指定的对象元素检查向量序列中是否包含指定的对象元素检查向量序列中是否包含指定的对象元素检查向量序列中是否包含指定的对象元素objobj,是则,是则,是则,是则返回返回返回返回truetrue,否则返回,否则返回,否则返回,否则返回falsefalse。(3)(3)intint indexOfindexOf(Object (Object objobj,intint start-index);start-index);从指定的从指定的从指定的从指定的start-indexstart-index位置开始向后搜索,返回所找到位置开始向后搜索,返回所找到位置开始向后搜索,返回所找到位置开始向后搜索,返回所找到的第一个与指定对象的第一个与指定对象的第一个与指定对象的第一个与指定对象objobj相同的元素的下标位置。相同的元素的下标位置。相同的元素的下标位置。相同的元素的下标位置。若指定对象不存在,则返回若指定对象不存在,则返回若指定对象不存在,则返回若指定对象不存在,则返回-1-1。(4)(4)intint lastIndexOflastIndexOf(Object (Object objobj,intint start-index)start-index)从指定的从指定的从指定的从指定的start-indexstart-index位置开始向前搜索,返回所找到位置开始向前搜索,返回所找到位置开始向前搜索,返回所找到位置开始向前搜索,返回所找到的第一个与指定对象的第一个与指定对象的第一个与指定对象的第一个与指定对象objobj相同的元素的下标位置。相同的元素的下标位置。相同的元素的下标位置。相同的元素的下标位置。若指定对象不存在,则返回若指定对象不存在,则返回若指定对象不存在,则返回若指定对象不存在,则返回-1-1。intint i=0;i=0;while(i=while(i=MyVectorMyVector.indexOfindexOf(Welcome,i (Welcome,i)!=-1)!=-1)System.out.System.out.printlnprintln(i);(i);n n使用使用Vector时,一个需要特别注意的问题就时,一个需要特别注意的问题就是一定要先创建后使用。是一定要先创建后使用。6.5 字符串字符串n nString类:字符串常量类:字符串常量n nStringBuffer类:字符串变量类:字符串变量注意:注意:n n字符串常量与字符常量的不同字符串常量与字符常量的不同n nJava中的字符串常量,表面上与其他语言中中的字符串常量,表面上与其他语言中的字符串常量没有什么不同,但在具体实的字符串常量没有什么不同,但在具体实现上却有较大的差异。现上却有较大的差异。String类类n n1.1.构造函数构造函数构造函数构造函数(1)public String()(1)public String()创建一个空的字符串常量创建一个空的字符串常量创建一个空的字符串常量创建一个空的字符串常量(2)public(2)public String(StringString(String value)value)这个字符串常量可以是另一个这个字符串常量可以是另一个这个字符串常量可以是另一个这个字符串常量可以是另一个StringString对象,也可对象,也可对象,也可对象,也可以是一个用双引号括起的直接常量。以是一个用双引号括起的直接常量。以是一个用双引号括起的直接常量。以是一个用双引号括起的直接常量。(3)public(3)public String(StringBufferString(StringBuffer buffer)buffer)这个构造函数利用一个已经存在的这个构造函数利用一个已经存在的这个构造函数利用一个已经存在的这个构造函数利用一个已经存在的StringBufferStringBuffer对象为新建的对象为新建的对象为新建的对象为新建的StringString对象初始化。对象初始化。对象初始化。对象初始化。(4)public(4)public String(charString(char value value)这个构造函数利用已经存在的字符数组的内容初这个构造函数利用已经存在的字符数组的内容初这个构造函数利用已经存在的字符数组的内容初这个构造函数利用已经存在的字符数组的内容初始化新建的始化新建的始化新建的始化新建的StringString对象。对象。对象。对象。n nString s;s=new String(ABC);n nString s=new String(ABC);n nString s=ABC;n n2.字符串常量的操作字符串常量的操作 public public intint length();length();String s=Hello!String s=Hello!System.out.System.out.printlnprintln(s.length();(s.length();n n3.判断字符串的前缀和后缀判断字符串的前缀和后缀 public public booleanboolean startsWith(StringstartsWith(String prefix);prefix);public public booleanboolean endsWith(StringendsWith(String suffix);suffix);if(s.endsWith(0)|s.endsWith(2)|if(s.endsWith(0)|s.endsWith(2)|s.endsWith(4)|s.endsWith(6)s.endsWith(4)|s.endsWith(6)|s.endsWith(8)|s.endsWith(8)System.out.System.out.printlnprintln(此人是女性此人是女性此人是女性此人是女性););n n4.4.字符串中单个字符的查找字符串中单个字符的查找字符串中单个字符的查找字符串中单个字符的查找 public public intint indexOf(intindexOf(int chch););public public intint indexOf(intindexOf(int chch,intint fromIndexfromIndex););String s=Java String s=Java是面向对象的语言,是面向对象的语言,是面向对象的语言,是面向对象的语言,JavaScriptJavaScript是是是是脚本语言脚本语言脚本语言脚本语言;intint idxidx=s.=s.indexOfindexOf(int)Jint)J););intint i=-1;i=-1;do do i=s.i=s.indexOfindexOf(int)aint)a,i+1 );,i+1 );System.out.print(i+System.out.print(i+t);t);while(iwhile(i!=-1);!=-1);n npublic public intint lastIndexOf(intlastIndexOf(int chch););public public intint lastIndexOf(intlastIndexOf(int chch,intint fromIndexfromIndex););do do i=s.i=s.lastIndexOflastIndexOf(int)aint)a,i+1 );,i+1 );System.out.print(i+System.out.print(i+t);t);while(iwhile(i!=-1);!=-1);n n5.字符串中子串的查找字符串中子串的查找public int indexOf(String str);public int indexOf(String str,int fromIndex);public int lastIndexOf(String str);public int lastIndexOf(String str,int fromIndex);String s=JavaString s=Java是面向对象的语言,是面向对象的语言,是面向对象的语言,是面向对象的语言,JavaScriptJavaScript是脚是脚是脚是脚本语言本语言本语言本语言;String sub=String sub=语言语言语言语言;for(for(intint i=i=s.lengths.length();i!=-1 ;)();i!=-1 ;)i=s.i=s.lastIndexOflastIndexOf(sub,i-1);(sub,i-1);System.out.print(i+System.out.print(i+t);t);上述程序运行的结果是:26 10 -1n n获取字符串中的某个字符的方法:public char charAt(int index);注意:index从0算起n n6.6.比较两个字符串比较两个字符串比较两个字符串比较两个字符串public public intint compareTo(StringcompareTo(String anotherStringanotherString););public public booleanboolean equals(Objectequals(Object anObjectanObject););public public booleanboolean equalsIgnoreCase(StringequalsIgnoreCase(String anotherStringanotherString););String s1=String s1=Hello!WorldHello!World;s2=;s2=hello!worldhello!world;booleanboolean b1=s1.equals(s2);b1=s1.equals(s2);booleanboolean b2=s1.b2=s1.equalsIgnoreCaseequalsIgnoreCase(s2);(s2);i=s1.i=pareTocompareTo(s2);(s2);n n7.7.连接字符子串连接字符子串连接字符子串连接字符子串public String public String concat(Stringconcat(String strstr););这个方法将参数字符串连接在当前字符串的尾部,这个方法将参数字符串连接在当前字符串的尾部,这个方法将参数字符串连接在当前字符串的尾部,这个方法将参数字符串连接在当前字符串的尾部,并返回这个连接而成的长