T9_常用工具类.ppt
Hands-On实训教程系列JAVA常用工具类包装类StringSringBufferMathDateSimpleDateFormat Hands-On实训教程系列实训教程系列主要内容主要内容掌握包装类掌握String和StringBuffer类掌握Math和Random类掌握Date和Calendar类掌握SimpleDateFormat类 Hands-On实训教程系列实训教程系列.intnum1=5;Integernum=newInteger(num1);intnum2=num.intValue();.包装类包装类 4-1int digit=10;原始数据类型原始数据类型使用原始数据类型声明的变量不是对象不是对象原始数据类型包装类Java.lang提供 Hands-On实训教程系列实训教程系列包装类包装类 4-2原始数据类型包装类byte(字节)Bytechar(字符)Characterint(整型)Integerlong(长整型)Longfloat(浮点型)Floatdouble(双精度)Doubleboolean(布尔)Booleanshort(短整型)Short Hands-On实训教程系列实训教程系列包装类包装类 4-3Integer类的构造方法方法原型说明public Integer(int value)使用整数值创建对象public Integer(String value)使用数字字符串创建对象 Hands-On实训教程系列实训教程系列包装类包装类 4-4方法说明intValue()以int类型返回该Integer的值valueOf(Strings)静态方法返回保持指定的String的值的Integer对象parseInt(Strings)静态方法将字符串参数作为有符号的十进制整数进行分析toString()返回一个表示该Integer值的String对象toString(inti)静态方法返回指定整数的String对象Integer包装类的方法 Hands-On实训教程系列实训教程系列字符串字面量字符串字面量字符串字面量是使用双引号指定的字符串,例如Stringstr=”Thisisastring”;Thisisastring就是一个字符串字面量。实际上就是一个字符串常量。字符串字面量与原始类型的变量不同,可以使用String类中提供的方法操作字符串。intlen=str.length();/获取字符串的长度StringlowerStr=str.toLowerCase();/全部改成小写字母 Hands-On实训教程系列实训教程系列使用构造方法创建使用构造方法创建String对象对象构造方法说明String()它将创建一个空字符串String(Stringvalue)它将新建一个字符串作为指定字符串的副本String(charvalue)它将根据字符数组构造一个新字符串String(bytevalue)它将通过转换指定的字节数组新建一个字符串 Hands-On实训教程系列实训教程系列字面量和构建对象的区别字面量和构建对象的区别字面量Stringstr1=“苹果”;Stringstr2=“苹果”;构建对象Stringstr1=newString(“苹果”);Stringstr2=newString(“苹果”);苹果12ff70str1str212ff7012ff70addr1addr2str1str2苹果苹果 Hands-On实训教程系列实训教程系列字符串长度字符串长度 2-1字符串长度由length()方法确定语法语法publicintlength();返回字符串中的字符数 Hands-On实训教程系列实训教程系列字符串长度字符串长度 2-2字符串字符串 1长度Determinedbylength()methodSyntax Publicintlength()ReturnsnumberofcharactersinthestringStringname=JohnSmith;System.out.println(name.length();Hands-On实训教程系列实训教程系列字符串比较字符串比较4-1字符串1字符串2字符串字符串 1字符串字符串 2由equals()方法确定检查组成字符串内容的字符同一个对象用=运算符检查检查字符串是否指向同一个或不同的对象 Hands-On实训教程系列实训教程系列字符串比较运算符的用法使用String类的方法,如equals()和=运算符equals()比较的是内容=比较的是地址字符串比较字符串比较4-2publicclassEquality/*构造方法*/protectedEquality()/*它演示两个字符串的比较*paramargs传递至main方法的参数*/publicstaticvoidmain(Stringargs)Stringstring1=newString(“苹果是一种水果);Stringstring2=newString(“玫瑰花是一种花);Stringstring3=newString(“苹果是一种水果);System.out.println(“字符串1:+string1);System.out.println(“字符串2:+string2);System.out.println(“字符串3:+string3);if(string1=string2)System.out.println(“字符串1和字符串2相等);elseSystem.out.println(“字符串1和字符串2不等);if(string1.equals(string3)System.out.println(“字符串1和字符串3相等);elseSystem.out.println(字符串1和字符串2不等);System.out.println(“设置字符串1等于字符串2);string2=string1;if(string1.equals(string2)System.out.println(“两个字符串相等);elseSystem.out.println(“两个字符串不等);Hands-On实训教程系列实训教程系列字符串比较字符串比较4-3方法说明booleanequalsIgnoreCase(Stringvalue)此方法比较两个字符串,忽略大小写形式intcompareTo(Stringvalue)按字母顺序比较两个字符串如果两个字符串相等,则返回0如果字符串在该值之前,则返回值小于0如果字符串在该值之后,则返回值大于0booleanstartsWith(Stringvalue)检查一个字符串是否以另一个字符串开始booleanendsWith(Stringvalue)检查一个字符串是否以另一个字符串结束 Hands-On实训教程系列实训教程系列字符串比较字符串比较4-4比较不同的字符串使用String类的方法,如equalsIgnoreCase()、compareTo()、startsWith()和endsWith()publicclassStringdemo/*构造方法*/protectedStringdemo()/*这是main方法*它演示String类的比较方法*paramargs传递至main方法的参数*/publicstaticvoidmain(Stringargs)Stringstring1,string2,string3;string1=newString(Answer);string2=newString(ANSWER);string3=newString(Question);System.out.println(“字符串A是+string1);System.out.println(“字符串B是+string2);System.out.println(“字符串C是+string3);if(string1=string2)System.out.println(“字符串A和字符串B指同一个对象);elseSystem.out.println(“字符串A和字符串B指不同的对象);if(string1.equals(string2)System.out.println(“字符串A和字符串B的内容相同);elseSystem.out.println(“字符串A和字符串B的内容不同);if(string1.equalsIgnoreCase(string2)System.out.println(“忽略大小写,字符串A和B的内容相同);elseif(string1.equalsIgnoreCase(string3)System.out.println(“字符串A和B的内容相同);if(pareTo(Answer)=0)System.out.println(“按字母,字符串A与Answer的内容相同);if(string1.startsWith(A)System.out.println(“以A开始);Hands-On实训教程系列实训教程系列搜索字符串搜索字符串2-1字符串字符串 1情形情形 1:indexOf(character)方法方法找到第一个匹配索引0123情形情形 2:如果没有找到匹配,则返回-1返回找到的第一个匹配的位置索引 Hands-On实训教程系列实训教程系列搜索字符串搜索字符串2-2搜索字符串内有无指定的字符或字符串使用String类的方法,如indexOf()返回字符串中某个特定子字符串首次出现的索引,若没检索到,返回-1如:String tom=“I am a good cat”;tom.indexOf(“a”)/2 tom.indexOf(“good”,2)/7 tom.indexOf(“a”,7)/13 tom.indexOf(“w”,2)/-1 tom.lastIndexOf(“a”)/13publicclassSearchString/*构造方法*/protectedSearchString()/*这是main方法*它演示在字符串内搜索*paramargs传递至main方法的参数*/publicstaticvoidmain(Stringargs)Stringemail=JohnS;System.out.println(“EmailID是:+email);System.out.println(“的索引是:+email.indexOf();System.out.println(“.的索引是:+email.indexOf(.);if(email.indexOf(.)email.indexOf()System.out.println(“该电子邮件地址有效);elseSystem.out.println(“该电子邮件地址无效);Hands-On实训教程系列实训教程系列提取字符串提取字符串2-1方法方法说说明明publiccharcharAt(intindex)此方法用于从指定位置提取单个字符,该位置由索引指定,索引中的值必须为非负publicStringsubstring(intindex)此方法用于提取从指定索引开始到字符串结束的字符串部分publicStringsubstring(intbeginindex,intendindex)此方法用于提取beginindex和endindex位置之间的字符串部分publicStringconcat(Stringstr)此方法用于连接两个字符串,并新建一个包含调用字符串的字符串对象publicStringreplace(charold,charnew)此方法用于将调用字符串中出现某个字符的所有位置都替换为另一个字符publicStringtrim()此方法用于返回一个前后不含任何空格的调用字符串的副本publicbooleanmatches(Stringregex)告知此字符串是否匹配给定的正则表达式 Hands-On实训教程系列实训教程系列提取字符串提取字符串2-2演示:示例6 如何使用字符串提取或字符提取使用String类的方法,如substring()、concat()、replace()和trim()publicclassStringMethods/*构造方法*/protectedStringMethods()/*这是main方法*paramargs传递至main方法的参数*/publicstaticvoidmain(Stringargs)Strings=Javaisa+platformindependentlanguage;Strings1=Helloworld;Strings2=Hello;Strings3=HELLO;System.out.println(s);System.out.println(indexoft=+s.indexOf(t);System.out.println(lastindexoft=+s.lastIndexOf(t);System.out.println(indexof(t,10)=+s.indexOf(t,10);System.out.println(s1.substring(3,8);System.out.println(s2.concat(World);System.out.println(s2.replace(l,w);System.out.println(s1.trim();Hands-On实训教程系列实训教程系列String类的不变性类的不变性String类对象一旦创建,就无法修改其原内存中的值,这称为String对象的不变性例:Stringstr1=“苹果”;Stringstr2=“苹果”;System.out.println(str1=str2);str1=“”+str1;System.out.println(str1+”“+str1.length();System.out.println(str2+”+str2.length();System.out.println(str1=str2);当给原字符串重新赋值时,会重新开辟一块存储空间,而原字符串保持不变 Hands-On实训教程系列实训教程系列StringBuffer类类StringBuffer类,字符串缓冲类,该类创建的对象,其内容具有可更改性例:StringBufferbuf=newStringBuffer();默认创建可保存16个字符的存储空间在该空间可随意改变字符的值helloeveryone Hands-On实训教程系列实训教程系列StringBuffer构造方法构造方法构造方法说明publicStringBuffer()保留16个字符的空间publicStringBuffer(intlength)设置缓存器大小publicStringBuffer(Stringvalue)接收字符串参数,用来设置初始内容,并在不重新分配的情况下保留16个字符的空间 Hands-On实训教程系列实训教程系列StringBuffer类常用方法类常用方法方法原型方法原型说说明明StringBufferappend(Stringstr)将指定的字符串追加到此字符序列StringBufferinsert(intoffset,Strings)将字符串从指定索引处插入intlength()确定StringBuffer对象的长度voidsetCharAt(intpos,charch)使用ch指定的新值设置pos指定的位置上的字符StringtoString()转换为字符串形式StringBufferreverse()将此字符序列用其反转形式取代StringBuffer delete(int start,intend)此方法将删除调用对象中从start位置开始直到end指定的索引位置的字符序列StringBufferdeleteCharAt(intpos)此方法将删除pos指定的索引处的字符StringBuffer replace(int start,intend,Strings)此方法使用一组字符替换另一组字符。将用替换字符串从start指定的位置开始替换,直到end指定的位置结束 Hands-On实训教程系列实训教程系列StringBuffer 类使用案例类使用案例使用StringBuffer类的方法,如append()、insert()、replace()、setCharAt()和toString()publicclassStringBufpublicstaticvoidmain(Stringargs)StringBuffer buf=new StringBuffer(Java);buf.append(it is very easy);int index=4;buf.insert(index,“I like java very much);buf.setCharAt(index,);int start=12;/从12开始 int end=16;/不包括16buf.replace(start,end,it);String s=buf.toString();/转换为字符串System.out.println(s);Hands-On实训教程系列实训教程系列Math 类类 3-1Math类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数Math类不能被继承,publicfinalclassMathextendsObjectMath类的方法都是静态方法调用Math类的方法不需要创建对象,直接使用类名调用例如:publicstaticdoublesqrt(doublea)doublesqrtValue=Math.sqrt(25);则sqrtValue的值为5 Hands-On实训教程系列实训教程系列Math 类类 3-2静态方法静态方法说明说明doublesin(doublenumvalue)计算角numvalue的正弦值doublecos(doublenumvalue)计算角numvalue的余弦值doublepow(doublea,doubleb)计算a的b次方doublesqrt(doublenumvalue)计算给定值的平方根intabs(intnumvalue)计算int类型值numvalue的绝对值,也接收long、float和double类型的参数intceil(doublenumvalue)返回大于等于numvalue的最小整数值intfloor(doublenumvalue)返回小于等于numvalue的最大整数值intmax(inta,intb)返回int型值a和b中的较大值,也接收long、float和double类型的参数intmin(inta,intb)返回a和b中的较小值,也可接收long、float和double类型的参数publicstaticintround(floata)返回最接近参数的int值 Hands-On实训教程系列实训教程系列Math 类类 3-3importjava.util.Scanner;publicclassTestMathpublicstaticvoidmain(Stringargs)Scannersc=newScanner(System.in)intnum1=sc.nextInt();intnum2=sc.nextInt();intmax=Math.max(num1,num2);/求最大值intmin=Math.min(num1,num2);/求最小值System.out.println(max:+max);System.out.println(min:+min);Hands-On实训教程系列实训教程系列Random 类类此类生成随机数两种构造方法/创建一个新的随机数生成器Randomrnd=newRandom();/使用单个long种子创建一个新的随机数生成器Randomrnd=newRandom(longseed);Random类的方法:nextInt()/返回一个整型值的随机数nextInt(intn)/返回从0到n之间的随机数,不包括nnextFloat()/返回一个0.0-1.0之间的float值nextDouble()/返回一个0.0-1.0之间的double值 Hands-On实训教程系列实训教程系列Random 类类publicclassTestRandompublicstaticvoidmain(Stringargs)Randomrnd=newRandom();/随机生成一个整数System.out.println(rnd.nextInt();/随机生成一个0-100之间的随机数System.out.println(rnd.nextInt(100);Hands-On实训教程系列实训教程系列Date 类类Date类表示日期和时间提供操纵日期和时间各组成部分的方法Date类的最佳应用之一是获取系统当前日期及时间 Hands-On实训教程系列实训教程系列Date 类构造方法类构造方法构造方法构造方法说明说明Date()使用当天的日期创建DateDate(longdt)使用自1970年1月1日以后的指定毫秒数创建Date由于设计Date类时没有考虑到国际化问题,JDK又提供了两个新的类来解决Date类中的问题Calendar类DateFormat类publicclassTestDatepublicstaticvoidmain(Stringargs)StringstrDate=;StringstrTime=;DateobjDate=newDate();/当前系统的日期和时间System.out.println(当前日期和时间是:+objDate);longtime=objDate.getTime();System.out.println(“自1970年1月1日起”+“以毫秒为单位的时间(GMT):+time);strDate=objDate.toString();/提取GMT时间strTime=strDate.substring(11);/按小时、分钟和秒提取时间strTime=时间:+strTime.substring(0,8);System.out.println(strTime);Hands-On实训教程系列实训教程系列Calendar 类类Calendar是一个抽象类,因此不能像Date类一样实例化,获得Calendar对象的方法Calendarcalendar=Calendar.getInstance();通过get方法获取日期和时间calendar.get(Calendar.YEAR);/获取年份通过set方法设置日期和时间calendar.set(2009,5,18);/设置自定义日期通过toString方法将Calendar对象转化成字符串System.out.println(calendar.toString();演示:示例2publicstaticvoidmain(Stringargs)CalendarobjCalendar=Calendar.getInstance();/显示Date和Time的组成部分System.out.println(nDate和Time的组成部分:);System.out.println(年:+objCalendar.get(Calendar.YEAR);System.out.println(月:+objCalendar.get(Calendar.MONTH);System.out.println(日:+objCalendar.get(Calendar.DATE);System.out.println(小时:+objCalendar.get(Calendar.HOUR);System.out.println(分钟:+objCalendar.get(Calendar.MINUTE);System.out.println(秒:+objCalendar.get(Calendar.SECOND);/向当前时间添加30分钟,/然后显示日期和时间objCalendar.add(Calendar.MINUTE,30);DateobjDate=objCalendar.getTime();System.out.println(n向当前时间添加30分钟后的日期和时间:n);System.out.println(objDate);/自定义日期 objCalendar.set(2009,5,18);objDate=objCalendar.getTime();String timestr=objDate.toString();System.out.println(timestr);Hands-On实训教程系列实训教程系列Calendar与与Date的转换的转换 Calendar提供了一个类方法getInstance,以获得此类型的一个通用的对象CalendarcalendarObj=Calendar.getInstance();Calendar对象,其日历字段已由当前日期和时间初始化,可直接通过calendar获取当前的日期和时间方法:publicintget(intfield)例:intyear=calendarObj.get(Calendar.YEAR);通过Calendar对象自定义日期和时间calendarObj.setTime(date);从一个Calendar对象中获取Date对象DatedateObj=calendar.getTime();Hands-On实训教程系列实训教程系列SimpleDateFormat类类SimpleDateFormat继承自DateFormat类SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期-文本)、解析(文本-日期)和规范化。Hands-On实训教程系列实训教程系列SimpleDateFormat类类SimpleDateFormat类的使用方法创建自定义的格式化对象SimpleDateFormatsdf=newSimpleDateFormat(“yyyy-MM-ddHH:mm:ss”)将获取的时间格式化成指定的表示方式(返回一个字符串)(Date-String)StringdateStr=sdf.format(newDate();将字符串转成Date类型(String-Date)StringmyDateStr=“2011-05-2316:37:20”DatemyDate=sdf.parse(myDateStr);Hands-On实训教程系列实训教程系列总结总结2-1默认情况下,会将java.lang包导入到每个Java程序中包装类可以以类的形式封装简单的原始类型StringBuffer类用作构建字符串的构建块字符串是不可变的,也就是说字符串是常量并且不能改变它们的值Math是一个final类,用于定义基本数字运算和三角函数的方法可以使用Random类的对象生成随机数 Hands-On实训教程系列实训教程系列总结总结2-2Date类的对象表示当前日期和时间Calendar类的对象可以以整型(如YEAR和MONTH等)的形式检索信息SimpleDateFormat类允许进行格式化(日期-文本)、解析(文本-日期)和规范化