第10章 工具类.ppt
教学目的及要求教学目的及要求 v掌握:掌握:StringString和和StringBufferStringBuffer对象的创建方法、常用的对象的创建方法、常用的方法;方法;命令行参数命令行参数argsargs的使用;的使用;MathMath类的常用方法的使用类的常用方法的使用 第第1010章章 工具类工具类 v10.1 String10.1 String和和StringBufferStringBuffer 10.1.1 String10.1.1 String的创建的创建 10.1.2 String10.1.2 String中常用的方法中常用的方法 10.1.3 String10.1.3 String的不可改变性的不可改变性 10.1.4 String10.1.4 String、charchar、bytebyte 10.1.5 10.1.5 StringBufferStringBuffer的创建的创建 10.1.6 10.1.6 StringBufferStringBuffer中常用的方法中常用的方法第第1010章章 工具类工具类v10.2 10.2 命令行参数命令行参数argsargsv10.3 Math10.3 Math类类 10.3.1 10.3.1 取整方法取整方法round()round()、floor()floor()、ceil()ceil()10.3.2 random()10.3.2 random()10.3.3 10.3.3 powpow()()10.3.4 10.3.4 sqrtsqrt()()作业作业v创建一个类处理二进制与十进制将的转换,创建一个类处理二进制与十进制将的转换,并通过并通过main()main()函数验证是否正确。函数验证是否正确。1 1、StringString对象的创建对象的创建vStringString对象:代表一组不可改变的对象:代表一组不可改变的UnicodeUnicode字字符序列,对它的任何修改实际上又产生一个符序列,对它的任何修改实际上又产生一个新的字符串。新的字符串。v创建方法创建方法 静态方式:像给变量直接赋值一样使用,如静态方式:像给变量直接赋值一样使用,如String s=Hello;String s=Hello;动态方式:使用动态方式:使用newnew运算符,如运算符,如String s=new String s=new String(HelloString(Hello););1 1、StringString对象的创建对象的创建v两种创建方式的区别:使用静态方式创建的两种创建方式的区别:使用静态方式创建的字符串,在堆内存的缓冲池中只会产生唯一字符串,在堆内存的缓冲池中只会产生唯一的一个字符串对象。当使用该方式产生同样的一个字符串对象。当使用该方式产生同样一个字符串时,堆内存中不再开辟另外一块一个字符串时,堆内存中不再开辟另外一块空间,而是两个引用变量指向同一个字符串空间,而是两个引用变量指向同一个字符串对象。采用动态方式创建的字符串,在堆内对象。采用动态方式创建的字符串,在堆内存中会产生出不同的对象。存中会产生出不同的对象。public class public class StringTestStringTest public static void public static void main(Stringmain(String argsargs)String s1=String s1=abcabc;String s2=String s2=abcabc;String s3=new String s3=new String(abcString(abc););String s4=new String s4=new String(abcString(abc););System.out.printlnSystem.out.println(s1=s2?+(s1=s2);(s1=s2?+(s1=s2);System.out.printlnSystem.out.println(s1=s3?+(s1=s3);(s1=s3?+(s1=s3);System.out.printlnSystem.out.println(s3=s4?+(s3=s4);(s3=s4?+(s3=s4);2 2、StringString类中常用的构造器类中常用的构造器 vString()String():初始化一个新创建的:初始化一个新创建的StringString对象,对象,它表示一个空字符串它表示一个空字符串()()。注意:空字符串与注意:空字符串与nullnull的区别。空字符串表示的区别。空字符串表示StringString对象的内容为空。而对象的内容为空。而nullnull表示表示StringString类的类的变量不指向任何的变量不指向任何的StringString对象。对象。2 2、StringString类中常用的构造器类中常用的构造器vString(charString(char bytes,intbytes,int offset,intoffset,int length)length):使用一个字符数组创建一个:使用一个字符数组创建一个StringString对象。如:对象。如:char c=char c=a,b,c,d,ea,b,c,d,e;String s=new String(c,1,2);String s=new String(c,1,2);System.out.println(sSystem.out.println(s););2 2、StringString类中常用的构造器类中常用的构造器vString(byteString(byte bytes,intbytes,int offset,intoffset,int length)length):使用一个字节数组创建一个:使用一个字节数组创建一个StringString对象。对象。vString(StringString(String strstr):创建一个:创建一个StringString对象,对象,并用并用strstr为该对象初始化。为该对象初始化。vString(StringBufferString(StringBuffer buffer)buffer):创建一个:创建一个StringString对象,并使用对象,并使用StringBufferStringBuffer对象中的对象中的内容为该对象初始化。内容为该对象初始化。1 1、创建新字符串的方法、创建新字符串的方法 vpublic String public String concat(Stringconcat(String strstr):将指定字符:将指定字符串连接到此字符串的结尾,产生一个新的字符串。串连接到此字符串的结尾,产生一个新的字符串。vpublic String public String replace(charreplace(char oldCharoldChar,char,char newCharnewChar):返回一个新的字符串,它是通过用:返回一个新的字符串,它是通过用newCharnewChar替换此字符串中出现的所有替换此字符串中出现的所有oldCharoldChar得到的。得到的。vpublic String public String substring(intsubstring(int beginIndexbeginIndex,intint endIndexendIndex):返回一个新字符串,它是从:返回一个新字符串,它是从beginIndexbeginIndex位置开始到位置开始到endIndexendIndex位置(不包含位置(不包含endIndexendIndex索引字索引字符)为止的一个子字符串。符)为止的一个子字符串。1 1、创建新字符串的方法、创建新字符串的方法vpublic String public String toLowerCasetoLowerCase()():将当前字符:将当前字符串中的所有字符都转换为小写,产生一个新串中的所有字符都转换为小写,产生一个新的字符串。的字符串。vpublic String public String toUpperCasetoUpperCase()():将当前字符:将当前字符串中的所有字符都转换为大写,产生一个新串中的所有字符都转换为大写,产生一个新的字符串。的字符串。vpublic String trim()public String trim():去除当前字符串前:去除当前字符串前后的空格,产生一个新的字符串。后的空格,产生一个新的字符串。public class public class TestStringTestString public static void public static void main(Stringmain(String argsargs)String s=String s=heLLoheLLo;String t=String t=s.concat(worlds.concat(world!);/!);/字符串的连接字符串的连接System.out.println(tSystem.out.println(t););String u=String u=s.replace(l,ws.replace(l,w););System.out.println(uSystem.out.println(u););/字符的替换字符的替换String v=s.substring(0,2);String v=s.substring(0,2);System.out.println(vSystem.out.println(v););/取子串取子串String w=String w=s.toLowerCases.toLowerCase();();System.out.println(wSystem.out.println(w););/全小写全小写String x=String x=s.toUpperCases.toUpperCase();();System.out.println(xSystem.out.println(x););/全大写全大写String y=String y=nihaonihao ;String z=String z=y.trimy.trim();();System.out.println(zSystem.out.println(z);/);/去除空格去除空格 2 2、查找字符的方法、查找字符的方法 vpublic public booleanboolean startsWith(StringstartsWith(String prefix)prefix):测:测试此字符串是否以试此字符串是否以prefixprefix指定的前缀开始。指定的前缀开始。vpublic public booleanboolean endsWith(StringendsWith(String suffix)suffix):测试:测试此字符串是否以此字符串是否以suffixsuffix指定的后缀结束。指定的后缀结束。vpublic public intint indexOf(StringindexOf(String strstr):返回:返回strstr指定字指定字符串在当前字符串中第一次出现处的索引。符串在当前字符串中第一次出现处的索引。vpublic public intint LastIndexOf(StringLastIndexOf(String strstr):返回:返回strstr指指定字符串在当前字符串中最后一次出现处的索引。定字符串在当前字符串中最后一次出现处的索引。3 3、字符比较的方法、字符比较的方法 vpublic public booleanboolean equals(Objectequals(Object anObjectanObject):将此字符串与指定的对象比较。:将此字符串与指定的对象比较。vpublic public booleanboolean equalsIgnoreCase(StringequalsIgnoreCase(String anotherStringanotherString):将:将anotherStringanotherString与当前字与当前字符串比较,不考虑大小写。符串比较,不考虑大小写。4 4、其他方法、其他方法 vpublic char public char charAt(intcharAt(int index)index):返回指定:返回指定索索indexindex处的字符。处的字符。vpublic public intint length()length():返回此字符串的长度。:返回此字符串的长度。public class public class TestStringTestString public static void public static void main(Stringmain(String argsargs)String s=String s=abcdebfgabcdebfg;System.out.println(s.startsWith(xSystem.out.println(s.startsWith(x););System.out.println(s.endsWith(fgSystem.out.println(s.endsWith(fg););System.out.println(s.indexOf(bSystem.out.println(s.indexOf(b););System.out.println(s.lastIndexOf(bSystem.out.println(s.lastIndexOf(b););System.out.println(s.equals(aBcDEbFgSystem.out.println(s.equals(aBcDEbFg););System.out.println(s.equalsIgnoreCase(aBcDEbFgSystem.out.println(s.equalsIgnoreCase(aBcDEbFg););System.out.println(s.charAt(3);System.out.println(s.charAt(3);System.out.println(s.lengthSystem.out.println(s.length();();public class public class StringDemoStringDemo public static void public static void main(Stringmain(String argsargs)String s1=String s1=abcabc;String s2=s1.concat(def);String s2=s1.concat(def);String s3=s1.toUpperCase();String s3=s1.toUpperCase();System.out.printlnSystem.out.println(s2=+s2);(s2=+s2);System.out.printlnSystem.out.println(s3=+s3);(s3=+s3);System.out.printlnSystem.out.println(s1=+s1);(s1=+s1);public class StringTest2public class StringTest2 public static void public static void main(Stringmain(String argsargs)String s1=String s1=abcabc;String s2=s1.concat(def);String s2=s1.concat(def);s1+=s2;s1+=s2;System.out.printlnSystem.out.println(s2=+s2);(s2=+s2);System.out.printlnSystem.out.println(s1=+s1);(s1=+s1);10.1.4 String10.1.4 String、charchar、byte byte v字符串中的内容转换到字节数组:字符串中的内容转换到字节数组:byte byte getBytesgetBytes()()v字符串中的内容转换到字符数组:字符串中的内容转换到字符数组:char char toCharArraytoCharArray()()v举例:举例:String String strstr=”=”abcdefabcdef”;”;byte byte bytbyt=str.getBytesstr.getBytes();();char car=char car=str.toCharArraystr.toCharArray();();10.1.5 10.1.5 StringBufferStringBuffer的创建的创建 vStringBufferStringBuffer对象:代表一组可以改变的对象:代表一组可以改变的UnicodeUnicode字符序列。字符序列。v常用的构造方法常用的构造方法 StringBufferStringBuffer()():构造一个其中不带字符的字符:构造一个其中不带字符的字符串缓冲区,其初始容量为串缓冲区,其初始容量为1616个字符。个字符。StringBuffer(intStringBuffer(int i)i):构造一个不带字符,但:构造一个不带字符,但具有具有i i指定初始容量的字符串缓冲区。指定初始容量的字符串缓冲区。StringBuffer(StringStringBuffer(String strstr):构造一个字符串缓:构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。冲区,并将其内容初始化为指定的字符串内容。10.1.6 10.1.6 StringBufferStringBuffer中常用的方法中常用的方法vappend()append():对:对StringBufferStringBuffer对象进行扩展。对象进行扩展。vinsert()insert():在:在StringBufferStringBuffer对象特定位置进对象特定位置进行插入操作。行插入操作。vreverse()reverse():对:对StringBufferStringBuffer对象进行内容反对象进行内容反转。转。public class public class TestStringBufferTestStringBuffer public static void public static void main(Stringmain(String argsargs)StringBufferStringBuffer sb1=new sb1=new StringBuffer(HelloStringBuffer(Hello););StringBufferStringBuffer sb2=new sb2=new StringBuffer(WorldStringBuffer(World););sb1.append(sb2);sb1.append(sb2);System.out.println(sb1);System.out.println(sb1);StringBufferStringBuffer sb3=new sb3=new StringBuffer(IStringBuffer(I Java!);Java!);sb3.insert(2,like);sb3.insert(2,like);System.out.println(sb3);System.out.println(sb3);StringBufferStringBuffer sb4=new sb4=new StringBuffer(abcdefStringBuffer(abcdef););System.out.println(sb4);System.out.println(sb4);sb4.reverse();sb4.reverse();System.out.println(sb4);System.out.println(sb4);10.2 10.2 命令行参数命令行参数argsargs v使用方法:使用方法:java java 类名类名 参数参数1 1 参数参数2 2 v说明说明mainmain方法的形参方法的形参argsargs就是命令行参数,他表示用就是命令行参数,他表示用户传入的参数,参数个数可以是一个或多个。户传入的参数,参数个数可以是一个或多个。argsargs参数是数组,当有输入时,使用参数是数组,当有输入时,使用argsiargsi 的的方式接收参数,方式接收参数,i i从从0 0开始。开始。argsargs的名字可以改变。的名字可以改变。public class public class ArgsTestArgsTest public static void public static void main(Stringmain(String argsargs)String param1=args0;String param1=args0;String param2=args1;String param2=args1;System.out.print(HelloSystem.out.print(Hello+param1+and +param1+and+param2);+param2);10.3 Math10.3 Math类类 vMathMath类是由类是由finalfinal修饰,不可以被继承。修饰,不可以被继承。v调用方法:类名调用方法:类名.方法方法 10.3.1 10.3.1 取整方法取整方法round()round()、floor()floor()、ceil()ceil()vpublic static long public static long round(doubleround(double a)a)或或static static intint round(floatround(float a)a):四舍五入,返:四舍五入,返回最接近回最接近a a的整数。的整数。vpublic static double public static double floor(doublefloor(double a)a):向下取整,获得最接近向下取整,获得最接近a a的整数。的整数。vpublic static double public static double ceil(doubleceil(double a)a):向:向上取整,获得最接近上取整,获得最接近a a的整数。的整数。public class public class TestMathTestMath public static void public static void main(Stringmain(String argsargs)System.out.printSystem.out.print(ceil+Math.ceil(4.1);(ceil+Math.ceil(4.1);System.out.printSystem.out.print(,floor+Math.floor(4.1);(,floor+Math.floor(4.1);System.out.printlnSystem.out.println(,round+Math.round(4.1);(,round+Math.round(4.1);10.3.2 random()10.3.2 random()v方法定义:方法定义:public static double random()public static double random()v功能:获得一个从功能:获得一个从0.00.0到到1.01.0之间的随机数。之间的随机数。public class public class RandomTestRandomTest public static void public static void main(Stringmain(String argsargs)for(intfor(int i=0;i5;i+)i=0;i5;i+)System.out.printlnSystem.out.println(Math.randomMath.random();();10.3.3 10.3.3 powpow()()v方法定义:方法定义:public static double public static double pow(doublepow(double a,a,double b)double b)v功能:指数运算功能:指数运算a ab b10.3.4 10.3.4 sqrtsqrt()()v方法定义:方法定义:public static double public static double aqrt(doubleaqrt(double a)a)v功能:求平方根运算。功能:求平方根运算。