您好,欢迎访问三七文档
第十章实用类第1页/共37页第一单元讲师:理解String与StringBuffer、StringBuilder的区别会使用Date类、Calendar类操作日期时间会使用Math类、Random类熟练使用String类处理字符串本章目标点重点难点重点重第2页/共35页串讲:Math类java.lang.Math类提供了常用的数学运算方法和两个静态常量E(自然对数的底数)和PI(圆周率)Math.abs(-3.5);//返回3.5Math.max(2.5,90.5);//返回90.5intrandom=(int)(Math.random()*10);//生成一个0-9之间的随机数第3页/共35页上机练习需求说明编码实现双色球功能分析双色球规则红球33选6,蓝球16选1,不允许重复使用Math类的random()方法在1到33内随机产生6个红球号码,每产生一个判断是否已经在数组中存在,不存在则保存于数组,否则重选从1到16间随机产生一个蓝球号码完成时间:15分钟共性问题集中讲解练习第4页/共35页代码提示•//判断数组里面是否有重复的数据•publicstaticbooleanisExist(intnum,int[]nums){•for(inti=0;inums.length;i++){•if(num==nums[i]){•returntrue;•}•}•returnfalse;•}串讲:Random类生成随机数的其他方式?java.util.Random类Randomrand=newRandom();//创建一个Random对象for(inti=0;i20;i++){//随机生成20个随机整数,并显示intnum=rand.nextInt(10);返回下一个伪随机数,整型的System.out.println(第+(i+1)+个随机数是:+num);}用同一个种子值来初始化两个Random对象,然后用每个对象调用相同的方法,得到的随机数也是相同的。Randomrandom1=newRandom(10);Randomrandom2=newRandom(10);System.out.println(random1.nextInt());System.out.println(random2.nextInt());第6页/共35页第6页/共35页串讲:String类使用String对象存储字符串String类常用操作计算字符串的长度比较字符串连接字符串提取字符串Strings=HelloWorld;Strings=newString();Strings=newString(HelloWorld);第7页/共35页第7页/共35页上机练习需求实现用户注册,要求用户名长度不小于3,密码长度不小于6,注册时两次输入密码必须相同分析String类提供了length()方法获取字符串长度String类提供了equals()方法,比较存储在两个字符串对象的内容是否一致完成时间:10分钟共性问题集中讲解练习第8页/共35页第8页/共35页串讲:字符串比较equals()方法比较原理“==”和equals()的区别字符串1字符串2equals():检查组成字符串内容的字符是否完全一致str1str2BDQN0x2a486c0x2a486cBDQNstr1==str2?true0x2aac83str1==str2?false==判断两个字符串在内存中的首地址,即判断是否是同一个字符串对象第9页/共35页第9页/共35页使用equalsIgnoreCase()方法使用toLowerCase()方法使用toUpperCase()方法串讲:字符串比较实现注册,两次输入的密码比较时不考虑大小写问题演示示例:字符串比较第10页/共35页第10页/共35页串讲:字符串连接方法1:使用“+”方法2:使用String类的concat()方法你好,张三!输出结果intscore=80;Stringinfo=成绩+score;Strings=newString(你好,);Stringname=newString(张三!);Stringsentence=s.concat(name);System.out.println(sentence);A.concat(B):B字符串将被连接到A字符串后面第11页/共35页第11页/共35页合法的文件名应该以.java结尾index!=-1&&index!=0&&fileName.substring(index+1,fileName.length()).equals(java)合法的邮箱名中至少要包含“@”和“.”,并检查“@”是否在“.”之前email.indexOf('@')!=-1&&email.indexOf('.')email.indexOf('@')串讲:字符串常用提取方法判断.java文件名是否正确,判断邮箱格式是否正确第12页/共35页串讲:字符串常用提取方法青春无悔0123位置方法名说明publicintindexOf(intch)搜索第一个出现的字符ch(或字符串value)publicintindexOf(Stringvalue)publicintlastIndexOf(intch)搜索最后一个出现的字符ch(或字符串value)publicintlastIndexOf(Stringvalue)第13页/共35页串讲:字符串常用提取方法beginindex:字符串的位置从0开始算;endindex:字符串的位置从1开始算方法名说明publicStringsubstring(intindex)提取从位置索引开始的字符串部分publicStringsubstring(intbeginindex,intendindex)提取beginindex和endindex之间的字符串部分publicStringtrim()返回一个前后不含任何空格的调用字符串的副本演示示例:检查文件和邮箱格式第14页/共35页第14页/共35页上机练习需求说明:输入一个字符串(不含空格),输入一个字符,判断该字符在该字符串中出现的次数完成时间:10分钟共性问题集中讲解练习第15页/共35页publicintcounter(Stringinputs,Stringword){intcounter=0;//计数器,初始化0String[]temps=newString[inputs.length()];//字符串转换成数组for(inti=0;itemps.length;i++){temps[i]=inputs.substring(i,i+1);}//比较字母,计数for(intj=0;jtemps.length;j++){if(temps[j].equals(word)){counter++;}}returncounter;}代码提示String类提供了split()方法,将一个字符串分割为子字符串,结果作为字符串数组返回串讲:字符串拆分有一段歌词,每句都以空格“”结尾,请将歌词每句按行输出演示示例:字符串拆分第17页/共35页第17页/共35页小结如果要打印输出“小鱼儿”,应填入的代码是什么?Stringword=Hello,;word=word.trim();Strings=word.concat(小鱼儿!);intindex1=s.indexOf(',');intindex2=s.indexOf('!');System.out.println(s.substring(__________,__________));trim()方法用于去除字符串两端的空格index1+1index2提问第18页/共35页第18页/共35页串讲:StringBuffer类StringBuffer:String增强版StringBuffer声明StringBuffer的使用StringBuffersb=newStringBuffer();StringBuffersb=newStringBuffer(bdqn);创建空StringBuffer对象sb.toString();//转化为String类型sb.append(**);//追加字符串创建一个对象存储字符串“bdqn”StringBuffer可以将任何类型的值追加到字符串之后第19页/共35页第19页/共35页利用StringBuffer类的length()和insert()方法实现需求串讲:StringBuffer类将一个数字字符串转换成逗号分隔的数字串,即从右边开始每三个数字用逗号分隔演示示例:StringBuffer类的使用第20页/共35页上机练习需求说明显示批发商品信息;输入批发商品编号和数量,以指定格式显示价格和总金额分析利用StringBuffer类insert()方法实现需求完成时间:15分钟参考答案共性问题集中讲解练习第21页/共35页讲解:String与StringBufferString不可变对象经常改变内容的字符串最好不要用String类型来存储Stringstr1=hello;str1=str1+,Mike;helloHello,Mikestr1注意String对象的值改变时,会重新分配内存空间来存放改变后的值第22页/共35页第22页/共35页讲解:String与StringBufferStringBuffer可变字符串字符串连接操作中,效率高于StringStringBuffersb1=newStringBuffer(“hello);sb1=sb1.append(,Mike);str1Hello,Hello,MikeJDK5.0版本以后提供了StringBuilder类,它和StringBuffer类等价,不支持线程同步第23页/共35页第23页/共35页Date类:表示日期和时间提供操作日期和时间各组成部分的方法SimpleDateFormat类用于定制日期时间的格式串讲:操作日期时间如何获取当前日期?Datedate=newDate();//创建日期对象SimpleDateFormatformater=newSimpleDateFormat(yyyy-MM-ddHH:mm:ss);//定制日期格式Stringnow=formater.format(date);System.out.println(now);演示示例:获取系统时间第24页/共35页第24页/共35页Calendar类:抽象类用于设置和获取日期/时间数据的特定部分串讲:操作日期时间Calendar类提供一些方法和静态字段来操作日历方法或属性说明intget(intfield)返回给定日历字段的值MONTH指示月DAY_OF_MONTH指示一个月中的某天DAY_OF_WEEK指示一个星期中的某天第25页/共35页第25页/共35页上机练习需求说明:计算2012年5月6日是一年中的第几星期分析使用Calendar类的get()方法WEEK_OF_YEAR字段完成时间:10分钟参考答案共性问题集中讲解练习第26页/共35页第26页/共35页代码提示•publicstaticvoidmain(String[]args){•Calendarcal=Calendar.getInstance();•cal.set(Calendar.YEAR,2012);•cal.set(Calendar.MONTH,5);•cal.set(Calendar.DAY_OF_MONTH,6);•intweek=cal.get(Calendar.WEEK_OF_YEAR);•System.out.println(2012年5月6日是一年中的第+week+星期。);•}总结如何定义一个String类的实例?使用什么方法可以实现以下功能:获得字符串的长度在原始字符串后追加另一个字符串如何比较两个字符串的内容是否相等使用StringBuffer的优点是什么?Math类获取随机数的方法是什么?Date类和Calendar类的区别是什么
本文标题:java实用类
链接地址:https://www.777doc.com/doc-3704475 .html