




已阅读5页,还剩56页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JAVASE,湖南人文科技学院计算机系彭东海pdhai,第6章java.lang包中的常用类,第六章java.lang包中的常用类,6.1java.lang包简介6.2包装类6.3String类6.4StringBuffer类6.5StringTokenizer类的应用6.6字符串与其他数据类型的转换,6.1java.lang包简介,java.lang包JAVA语言基本类和核心类,如String,Math,System等类每个JAVA程序都会自动导入该包,6.2简单类型的包装类,JAVA提供包装类,以便把原始数据类型当作对象进行操作。Number抽象类Number是Byte、Double、Float、Integer、Long和Short类的超类。CharacterCharacter类在对象中包装一个基本类型char的值BooleanBoolean类将基本类型为boolean的值包装在一个对象中。,6.2.1Number类,Number的子类必须提供将表示的数值转换为byte、double、float、int、long和short的方法。定义了从包装器返回基本类型的方法doubledoubleValue(),floatfloatValue()bytebyteValue(),intintValue(),longlongValue(),shortshortValue(),6.2.2Double和Float,双精度(Double)和浮点(Float)分别是对类型double和类型float的浮点值的包装器。构造方法Float(doublevalue),Float(floatvalue),Float(Strings)Double(doublevalue)Double(Strings),Double和Float中定义的常量,Float和Double中定义的主要方法,intcompareTo(),比较两个对象staticfloatparseFloat(Strings)把字符串转换成floatstaticFloatvalueOf(Strings)把字符串转换成FloatstaticfloatparseDouble(Strings)把字符串转换成doublestaticDoublevalueOf(Strings)把字符串转换成Double,Double,Float例子,floatf=3.1415f;doubled=3.14159267;FloatF=newFloat(f);/包装成对象DoubleD=newDouble(d);System.out.println(F.toString();/转化为字符串System.out.println(D.toString();f=F.floatValue();/提取简单类型值d=D.doubleValue();System.out.println(f);System.out.println(d);System.out.println(D.equals(F);/比较,6.2.3Byte,Short,Integer,Long,Byte,Short,Integer,和Long类分别是字节型(byte),短整型(short),整型(int)和长整型(long)整数类型的包装器构造函数Byte(bytevalue),Byte(Stringstr),Short(shortvalue),Short(Stringstr),Integer(intvalue),Integer(Stringstr),Long(longvalue),Long(Stringstr),定义的主要方法,parseByte(),parseInt(),parseShort(),parseLong(),把字符串转化成数字类型staticIntegervalueOf(Strings)把字符串转化成数字类型包装器把数字转化成字符串staticStringtoBinaryString(intvalue)staticStringtoHexString(intvalue)staticStringtoOctalString(intvalue)staticStringtoString(intvalue)staticStringtoString(intvalue,intradix),6.2.4数字和字符串的转换,字符串向数字的转换parseByte(),parseShort(),parseInt()和parseLong()数字向字符串的转换staticStringtoBinaryString(intvalue)staticStringtoHexString(intvalue)staticStringtoOctalString(intvalue)staticStringtoString(intvalue)staticStringtoString(intvalue,intradix),数字字符串转换示例1,Strings1=12;Strings2=34;Strings=null;inti1=0,i2=0,sum=0;i1=Integer.parseInt(s1);/把字符串转换成整数i2=newInteger(s2).intValue();sum=i1+i2;s=Integer.toString(sum);/把整数转换成字符串System.out.println(s);,数字字符串转换示例2,inti=-34567;Strings=null;/转换成二进制字符串System.out.println(2进制字串:+Integer.toBinaryString(i);/转换成8进制字符串System.out.println(8进制字符串:+Integer.toOctalString(i);/转换成16进制字符串System.out.println(16进制字符串:+Integer.toHexString(i);/转换成带符号表示的8进制字符串s=Integer.toString(i,8);System.out.println(带符号8进制字符串:+s);/从8进制字符串转化成Integer对象IntegerI=Integer.valueOf(s,8);System.out.println(Integer对象中的值:+I.intValue();,6.2.5Character,Character是围绕字符型(char)的一个简单的包装器。Character的构造函数如下:Character(charch)Character类定义了很多常数和静态方法。isDigit(charch),isLetter(charch)isLowerCase(charch),toUpperCase(charch),6.2.6Boolean,Boolean是一个围绕布尔(boolean)值的非常细小的包装器,主要用在通过引用传递布尔(boolean)变量的场合。构造函数Boolean(booleanboolValue)Boolean(StringboolString),Strings=true;booleanb=true;if(b=newBoolean(s).booleanValue()System.out.println(两个布尔变量相等);System.out.println(Boolean.valueOf(s).hashCode();,6.3String类,6.3.1字符串的构造6.3.2String类的常用方法,6.3.1字符串的构造,6.3.1字符串的构造,字符串的声明和其它类一样,如下格式Strings;创建字符串可以使用String类的构造方法。例如:s=newString(“Wearestudents”);s=“Wearestudents”;声明和实例化对象也可一步完成:Strings=newString(Wearestudents);Strings=Wearestudents;,6.3.1字符串的构造,例如:1)在String类提供的构造方法中,可以由字符数组、字节数组以及字符串缓冲区来构成字符串,如下面的代码所示。charcDem0l=2,3,4,5;charcDem02=1,2,3,4,5;StringstrDem01=newString(cDem0l);StringstrDem02=newString(cDem02,1,4);System.out.println(strDem01+strDem02);利用上面的两个构造方法生成的字符串实例的内容均为“2345”。2)下面例子说明如何利用字节数组生成字符串:bytecDem0l=66,67,68;bytecDem02=65,66,67,68;StringstrDem01=newString(cDem0l);StringstrDem02=newString(cDem02,1,3);利用上面的两个构造方法生成的字符串实例的内容均为BCD。,6.3.2String类的常用方法,String类提供了length()、charAt()、indexOf()、lastIndexOf()、getChars()、getBytes()、toCharArray()等方法。在这些方法中,按用途来分,可以分为字符串长度计算、字符串比较、字符串检索、字符串的截取、替换等方法,下面我们将详细介绍这些方法。,6.3.2String类的常用方法,1、字符串长度计算使用String类中的length()方法可以获取一个字符串的长度。length()方法的定义如下:publicintlength()该方法返回字符串中的16-bit的Unicode字符的数量。例如:Strings=wearestudents,tom=我们是学生;intn1,n2,n3;n1=s.length();/n1的值是15n2=tom.length();/n2的值5n3=我的爱好.length();/n3值是4,6.3.2String类的常用方法,2、字符串比较字符串比较的方法有equals()、equalsIgnoreCase()、startsWith(),endsWith()、regionMatches()、compareTo(),compareToIgnoreCase()等方法(1)equals和equalsIgnoreCase方法在String类中equals()定义如下:publicbooleanequals(Strings)该方法用来比较当前字符串对象的实体是否与参数指定的字符串s的实体是否相同。例如Stringtom=newString(wearestudents);Stringboy=newString(Wearestudents);Stringjerry=newString(wearestudents);tom.equals(boy)的值是false,tom.equals(jerry)的值是true.,6.3.2String类的常用方法,在String类中equalsIgnoreCase()定义如下:publicbooleanequalsIgnoreCase(Strings)字符串对象调用比较当前字符串对象是否与参数指定的字符串s相同,比较时忽略大小写。例如:Stringtom=newString(“ABC”),Jerry=newString(“abc”);tom.equalsIgnoreCase(Jerry)的值是true。(2)startsWith、endsWith方法字符串对象调用publicbooleansrartsWith(Strings)方法,判断当前字符串对象的前缀是否是参数指定的字符串s,如Stringtom=220302620629021,jerry=21079670924022;tom.startsWith(220)的值是true;jerry.startsWith(220)的值是false。,6.3.2String类的常用方法,可以使用publicbooleanendsWith(Strings)方法,判断一个字符串的后缀是否是字符串s,如Stringtom=220302620629021,jerry=21079670924022;tom.endsWith(021)的值是truejerry.endsWith(021)的值是false.,6.3.2String类的常用方法,【例6-1】通过学号判断某学生是否是2004级的男生。假设某学生学号为“200400581”,前4位为学号,最后1位为性别标志位,0表示女生,1表示男生。程序如下:publicclassStringStartpublicstaticvoidmain(Stringargs)Stringjohn=200400581,start=2004;if(john.startsWith(start)程序的运行结果如下:该生是2004级男学生。,6.3.2String类的常用方法,(3)regionMatches方法该方法的申明格式为:publicbooleanregionMatches(intfirstStart,Stringother,intortherStart,intlength)从当前字符串参数firstStart指定的位置开始处,取长度为length的一个子串,并将这个子串和参数other指定的一个子串进行比较。其中other指定的子串是从参数othertStart指定的位置开始,从other中取长度为length的一个子串。如果两个子串相同该方法就返回true,否则返回false。注意,字符串的位置编号从0开始。,6.3.2String类的常用方法,(4)compareTo,compareToIgnoreCase方法String类中中compareTo和compareToIgnoreCase方法申明的格式为:publicintcompareTo(Strings)publicintcompareToIgnoreCase(Strings)compareTo方法,按字典顺序与参数s指定的字符串比较大小。如果当前字符串与s相同,该方法返回值0,如果当前字符串对象大于s,该方法返回正值,如果小于s,该方法返回负值。例如Stringstr=abcde;pareTo(boy);/等于-1,用a的ASC码值减去b的pareTo(aba);/等于2,用c和a的ASC码值相减pareTo(abcde);/等于0按辞典序比较两个字符串还可以使用compareToIgnoreCase(Strings)方法,该方法忽略大小写,6.3.2String类的常用方法,【例6-2】将下面的字符串数组按字典序重新排列publicclassSortStrspublicstaticvoidmain(Stringargs)Stringa=Java,Basic,C+,Fortran,SmallTalk;for(inti=0;ia.length-1;i+)for(intj=i+1;ja.length;j+)if(pareTo(ai)0)Stringtemp=ai;ai=aj;aj=temp;for(inti=0;i=0;i-)dest.append(source.charAt(i);returndest.toString();程序运行结果如下:avaJevolI,6.5字符串与其他数据类型的转换,6.5.1其他数据转换为字符串6.5.2字符串转化成其他数据,6.5.1其他数据转换为字符串,常用的有2种方法:1、(直接转换)String类中提供了静态方法valueOf(),用来把不同类型的简单数据转化为字符串。申明格式如下:publicstaticStringvalueOf(booleanb)publicstaticStringvalueOf(charc)publicstaticStringvalueOf(chardata)publicstaticStringvalueOf(chardata,intoffset,intcount)publicstaticStringvalueOf(doubled)publicstaticStringvalueOf(floatf)publicstaticStringvalueOf(longl)publicstaticStringvalueOf(Objectobj),6.5.1其他数据转换为字符串,intnInt=10;floatfFloat=3.14f;doubledDouble=3.1415926;StringstrString1=String.valueOf(nInt);System.out.println(strString1);StringstrString2=String.valueOf(fFloat);System.out.println(strString2);StringstrString3=String.valueOf(dDouble);System.out.println(strString3);2、(间接转换)把基本类型数据先转换成对应的包装类对象,再用toString()转换成字符串。,6.5.1其他数据转换为字符串,【例6-7】将简单数据转换成字符串publicclassCovertStringpublicstaticvoidmain(Stringargs)intnInt=10;floatfFloat=3.14f;doubledDouble=3.1415926;/转换为整型Integerobj1=newInteger(nInt);/转换为浮点数类型Floatobj2=newFloat(fFloat);/转换为双精度类型Doubleobj3=newDouble(dDouble);/分别调用toString方法转换为字符串StringstrString1=obj1.toString();System.out.println(strString1);StringstrString2=obj2.toString();System.out.println(strString2);StringstrString3=obj3.toString();System.out.println(strString3);,6.5.2字符串转化成其他数据,1、(间接转换)类Integer、Double、Float和Long中也提供了方法valueOf()把一个字符串转化为对应的数字对象类型。其申明格式如下:publicstaticDoublevalueOf(Strings)throwsNumberFormatExceptionpublicstaticIntegervalueOf(Strings)throwsNumberFormatExceptionpublicstaticFloatvalueOf(Strings)throwsNumberFormatExceptionpublicstaticLongvalueOf(Strings)throwsNumberFormatExceptionpublicstaticDoublevalueOf(Strings)throwsNumberFormatException特别注意的是,若该String不能作为相应数据类型对象的转换,则抛出异常。用户可以调用Integer、Double、Long、Float类中的ValueOf方法将字符串转换为相应的包装数据类型,进而转换为简单数据类型。,6.5.2字符串转化成其他数据,Double、Float、Integer、Long等类都提供了doubleValue(),floatValue(),intValue(),longValue()等方法将对象转换成其他简单数据类型的方法。例如:StringstrPI=”3.1415926”;Doubledpi=Double.valueOf(strPI);doubleddPI=dpi.doubleValue();floatffPI=dpi.floatValue();2、(直接转换)Boolean、Byte、Double、Float、Integer、Long等类也分别提供了静态方法parseDouble(String)、parseFloat(String)、parseInt(String)、parseLong(String)等方法将对象转换成其他简单数据类型的方法。其方法声明格式如下:staticbooleanparseBoolean(Strings)staticintparseInt(Strings,intradix)staticbyteparseByte(Strings)staticdoubleparseDouble(Strings)staticfloatparseFloat(Strings),6.5.2字符串转化成其他数据,【例6-8】将字符串转换为相应的简单数据类型。publicclassCovertSimplepublicstaticvoidmain(Stringargs)charcArray;intnInt;floatfFloat;doubledDouble;StringstrString=newString(IloveJava);StringstrInteger=newString(314);StringstrFloat=newString(3.14);StringstrDouble=newString(3.1416);cArray=strString.toCharArray();System.out.println(cArray);nInt=Integer.parseInt(strInteger);System.out.println(nInt);fFloat=Float.parseFloat(strFloat);System.out.println(fFloat);dDouble=Double.parseDouble(strDouble);System.out.println(dDouble);,上面程序的输出为:IloveJava3143.143.1416,6.6Math类,定义了一些静态的数学函数,Math类中定义了2个常量:staticdoublePI/圆周率staticdoubleE/自然常数,6.6Math类,/MathDemo.javadoubleradians=2*Math.PI;doubled1=3.1415655678;System.out.println(“ceil函数:”+Math.ceil(d1);/返回值大于等于该参数,并等于某个整数,输出4.0System.out.println(Round函数:+Math.round(d1);/返回最接近参数的long值,输出3System.out.println(floor函数:+Math.floor(d1);/返回值小于等于该参数,并等于某个整数,输出3.0System.out.println(exp函数:+Math.exp(d1);System.out.println(pow函数:+Math.pow(Math.E,d1);System.out.println(sin函数:+Math.sin(Math.PI/6);System.out.println(asin函数:+Math.asin(0.5);/返回一个值的反正弦System.out.println(log函数:+Math.log(Math.E);System.out.println(角度转弧度:+Math.toDegrees(radians);/将用弧度表示的角转换为近似相等的用角度表示的角System.out.println(random函数:+Math.random();,6.7java.lang.Object类,类Object是类层次结构的根类。每个类都使用Object作为超类。所有对象(包括数组
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论