版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《JAVA程序设计》课程1、字符串(String、StringBuilder)类主要内容2、基本类型封装类3、数学(Math)类Java程序设计4、日期(Date、Calendar)类《JAVA程序设计》课程
学习目标:1.掌握字符串的常用操作2.掌握数学类中提供的常用数学运算方法3.掌握基本类型的装箱、拆箱和类型转换4.掌握日期类的常用操作《JAVA程序》课程
4.1字符串类4.1.1项目描述设计一个文件路径解析类(FilePath),能够识别路径中的文件名、扩展名、驱动器名、当前目录名,当前目录路径,上级目录路径。4.1.2项目知识准备(1)String类概述●String类继承于Object类,实现了Serializable、CharSequence、Comparable<String>接口,表示String为可序列化、可比较的字符序列。●String类被final关键字修饰,是不可被继承的。●Strng类的内部数据结构是char数组,对外提供了一系列操作方法,如查找、比较、连接等。(2)String类的特点●是不可变字符序列。
不可变指的是:一旦定义了一个String类的变量后,就不能在原有值的基础上进行添加、插入、删除等操作。●利用String类中的方法对字符串进行操作,都会产生一个新的String类副本,副本与原字符串是相互独立的,对副本或原字符串的修改不会影响到另外一个。(3)String类的常用方法《JAVA程序设计》课程
4.1字符串类1)求字符串长度字符串长度指字符串中包含字符个数(不是字节数),例如:
int
len=s.length();2)字符串连接: 字符串和其它数据类型可以直接用“+”号连接,例如:
s="计算结果是"+sum;
在算术运算的“+”和连接符号“+”同时存在时,注意运算顺序:
s="总和是"+(3+2);//运行结果为“总和是5” s="总和是"+3+2;//运行结果为“总和是32”3)截取单个字符charAt方法返回index位置对应的单个字符,index的取值是0到length()-1
方法定义:publiccharcharAt(intindex)
《JAVA程序设计》课程
4.1字符串类
也可以这样理解endIndex参数:endIndex=beginIndex+length,即开始位置加截取长度就是endIndex参数的正确取值。如:
从下标为3的字符开始,截取长度为5个字符,可以写为: s1=s.substring(3,3+5);4)截取子串
方法定义:publicStringsubstring(intbeginIndex,intendIndex)
该方法返回一个新字符串,此字符串的一个子字符串。该子字符串包含从指定的beginIndex处开始,一直到索引endIndex-1处的字符。因此,该子字符串的长度为endIndex-beginIndex。5)字符串比较 equals方法用于字符串内容的比较,方法定义为: publicbooleanequals(ObjectanObject)注意:由于是字符串的比较,这里的Object类型参数一般是字符串《JAVA程序设计》课程
4.1字符串类equalsIgnoreCase方法在比较时不考虑大小写,方法定义是:publicbooleanequalsIgnoreCase(StringanotherString)6)查找子串
查找子串分为从左向右查找和从右向左查找,分别用indexOf和lastIndexOf方法实现,这两个方法都进行了重载,下面是JDKAPI文档中的方法定义和说明:intindexOf(intch)返回指定字符在此字符串中第一次出现处的索引。
intindexOf(intch,intfromIndex)从指定的索引开始搜索,返回在此字符串中第一次出现指定字符处的索引。
intindexOf(Stringstr)返回第一次出现的指定子字符串在此字符串中的索引。
intindexOf(Stringstr,intfromIndex)从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引。
intlastIndexOf(intch)返回最后一次出现的指定字符在此字符串中的索引。
intlastIndexOf(intch,intfromIndex)《JAVA程序设计》课程
4.1字符串类返回在此字符串中最右边出现的指定子字符串的索引。
intlastIndexOf(Stringstr,intfromIndex)从指定的索引处开始向后搜索,返回在此字符串中最后一次出现的指定子字符串的索引。7)去两边空格
用户在输入信息时可能会无意输入无用的空格,用trim方法可以将左右两边空格去掉,该方法定义如下: publicStringtrim()8)替换子串在JDK1.4之前,只提供了下面的方法定义:publicStringreplace(charoldChar,charnewChar)从参数可以看出,该方法只能对单个字符进行查找替换JDK1.4之后,重载了replace方法,方法定义如下:从指定的索引处开始进行后向搜索,返回最后一次出现的指定字符在此字符串中的索引。
intlastIndexOf(Stringstr)publicStringreplace(CharSequencetarget,CharSequencereplacement)
由于String类实现了CharSequence接口,所以该参数可以传递字符串。《JAVA程序设计》课程
4.1字符串类
第一个参数为一个规则字符串,比如:s=s.replaceAll("AA.*BB","abc")表示把AA开头,BB结尾的字符串替换为abc,与之类似的方法还有replaceFirst。
从JDK1.4开始还增加了正则表达式类,字符串类也借此实现了正则查找替换功能,该功能用replaceAll方法体现,方法定义如下: publicStringreplaceAll(Stringregex,Stringreplacement)9)大小写转换
大小写转换使用toLowerCase和toUpperCase方法,方法定义如下:publicStringtoUpperCase()publicStringtoLowerCase()10)字符串分割为数组 Split方法能根据特定的分隔符,将一个字符串分割为字符串数组,方法定义如下:publicString[]split(Stringregex)其中regex参数描述了分隔符的形式,可以为正则表达式。例如,要将一个字符串以逗号为标志进行分割,程序为:《JAVA程序设计》课程
4.1字符串类Stringstr="aaa,bbb,ccc";String[]arr=str.split(",");//字符串str被分割为3个元素存入arr数组中案例4-1:字符串内容解析publicclassTest{ publicstaticvoidmain(String[]args){ Stringstr="server=;user=sa;password=123456";//连接服务器的参数
Stringserver,user,password; String[]arr;
arr=str.split(";");//用“;”分割字符串
server=arr[0];//内容为“server=” server=server.substring(server.indexOf("=")+1,server.length());//取出服务器地址user=arr[1];//内容为“user=sa” user=user.substring(user.indexOf("=")+1,user.length());//取出用户名《JAVA程序设计》课程
4.1字符串类password=arr[2];//内容为“password=123456” password=password.substring(password.indexOf("=")+1,password.length());//取出密码
System.out.println("服务器地址:"+server+",用户名:"+user+",密码:"+password); } }
(4)StringBuffer类StringBuffer类和String类似,也用来存储和处理字符串,但是StringBuffer的内部实现方式和String不同,StringBuffer对象在进行字符串处理时,不生成新的对象,在内存占用上比String对象少。实际使用时,如果经常对一个字符串内容进行修改(如插入、删除等),使用StringBuffer效率更高。StringBuffer是线程安全的,可以在多线程程序中使用。关于线程的概念后面有专门章节进行介绍。下面介绍StringBuffer类的对象创建和操作方法:1)StringBuffer对象的创建StringBuffer对象使用构造方法来创建,例如:《JAVA程序设计》课程
4.1字符串类StringBuffers=newStringBuffer();
这样创建StringBuffer对象不包含任何内容,若需要创建带有内容的StringBuffer对象,可以给构造方法传递一个参数:StringBuffers=newStringBuffer("hello");
这样创建的StringBuffer对象的内容就是“hello”。2)StringBuffer和String的相互转换
构造StringBuffer对象时,给构造方法传递字符串作为参数,可以将String对象转换为StringBuffer对象,调用StringBuffer的toString方法,可以将StringBuffer对象转换为String对象。Strings1="abc";StringBuffersb=newStringBuffer(s1);//String转换为StringBufferStrings2=sb.toString();//StringBuffer转换为String《JAVA程序设计》课程
4.1字符串类3)StringBuffer的常用方法●append方法Append方法可以在现有字符串的末尾添加内容,这是一个多次重载的方法,方法定义如下:publicStringBufferappend(charc)//在末尾添加一个字符publicStringBufferappend(char[]str)//在末尾添加字符数组中的所有字符publicStringBufferappend(char[]str,intoffset,intlen)//在末尾添加字符数组中的一部分,该部分在数组中的起始位置是offset,长度是lenpublicStringBufferappend(CharSequences)//在末尾添加字符串StringBufferappend(CharSequences,intstart,intend)//在末尾添加字符串的一部分,该部分在数组中的起始位置是offset,结束位置是end除此之外,还可以把boolean、int、long、float、double类型的变量添加到字符串末尾,详见JDK帮助文档。●deleteCharAt方法publicStringBufferdeleteCharAt(intindex)《JAVA程序设计》课程
4.1字符串类该方法删除指定位置的字符,然后将剩余内容形成新的字符串。●delete方法publicStringBufferdelete(intstart,intend)该方法删除指定区间以内的所有字符,包含start,不包含end。●insert方法insert方法在StringBuffer对象中插入内容,然后形成新的字符串。这是一个多次重载的方法,方法定义如下:publicStringBuffer insert(intoffset,charc)publicStringBuffer insert(intoffset,char[]str)publicStringBuffer insert(intindex,char[]str,intoffset,intlen)publicStringBuffer insert(intdstOffset,CharSequences)publicStringBuffer insert(intdstOffset,CharSequences,intstart,intend)以上方法的参数和append类似,只是多了一个offset或dstOffset参数,代表插入内容的位置。同样,还可以把boolean、int、long、float、double类型的变量插入到字符串的指定位置,详见JDK帮助文档。《JAVA程序设计》课程
4.1字符串类●reverse方法publicStringBufferreverse()该方法将StringBuffer对象中的内容反转,形成新的字符串。4.1.3项目实施(1)功能分析
文件路径解析类(FilePath)要实现的功能包括: ●识别出驱动器名、文件名、扩展名●获得当前目录的名称、路径,上级目录的路径因此,该类对各级目录按“\”进行分割,并用数组来存储,可以从中提取出驱动器名、文件名和各级目录名,便于进一步分析和重新组装(2)编码通过分析我们可以编写以下代码实现功能:《JAVA程序设计》课程
4.1字符串类packageject1;classFilePath{ privateStringfullPath;//文件的完整路径 privateString[]arr;//存放各级目录的数组 publicStringgetFullPath(){ returnfullPath; } publicFilePath(Stringpath){ this.fullPath=path; arr=path.split("\\\\");//用“\”将路径进行分割 }publicStringgetFileName()//获取文件名 {《JAVA程序设计》课程
4.1字符串类returnarr[arr.length-1];//分割后的最后一项 } publicStringgetFileExt()//获取文件扩展名 { StringfileName=arr[arr.length-1]; returnfileName.substring(fileName.lastIndexOf("."),fileName.length());//分割后的最后一项 } publicStringgetPath()//获取所在目录路径 {StringBuffersb=newStringBuffer(); for(inti=0;i<arr.length-1;i++)《JAVA程序设计》课程
4.1字符串类if(arr.length<=2)returnnull; StringBuffersb=newStringBuffer(); for(inti=0;i<arr.length-2;i++) sb.append(arr[i]+"\\"); returnsb.toString(); }sb.append(arr[i]+"\\"); returnsb.toString(); } publicStringgetParentPath()//获取上级目录路径 {publicStringgetDriver()//获取驱动器名 {《JAVA程序设计》课程
4.1字符串类returnarr[0]; } publicStringgetFolderName()//获取当前文件夹名称 { if(arr.length<=2)returnnull; returnarr[arr.length-2]; }}publicclassTest{ publicstaticvoidmain(String[]args){ FilePathfilePath=newFilePath("C:\\myjava\\HelloWorld.java");《JAVA程序设计》课程
4.1字符串类System.out.println("完整路径:"+filePath.getFullPath()); System.out.println("文件名:"+filePath.getFileName()); System.out.println("扩展名:"+filePath.getFileExt()); System.out.println("驱动器:"+filePath.getDriver()); System.out.println("当前目录名:"+filePath.getFolderName()); System.out.println("当前目录的路径:"+filePath.getPath()); System.out.println("上级目录的路径:"+filePath.getParentPath()); }}(3)调试运行,显示结果该程序的运行结果如图4.1所示:《JAVA程序设计》课程
4.1字符串类图4.1文件路径解析《JAVA程序设计》课程
4.1字符串类4.1.4能力拓展(1)选择题①判断两个字符串相等的方法是()A.=B.==C.equals方法D.compare方法②关于截取子串函数substring(beginIndex,endIndex),下面说法正确的是(
)A.截取子串的第一个字符位置是beginIdex,最后一个字符位置是endIndexB.第一个字符位置是1C.截取子串的长度为endIndex-beginIndexD.截取子串的长度为endIndex-beginIndex+1③在字符串中查找某个关键字最后一次出现的位置,用方法(
)A.findB.searchC.indexOfD.lastIndexOf④定义字符串:String
str=“abcdefg”;则str.indexOf('d')的结果是(
)
A.'d'
B.true
C.3
D.4《JAVA程序设计》课程
4.1字符串类⑤下面程序段输出的结果是(
D
)String
s=”ABCD”;s.concat("E");
s.replace("C","F");System.out.println(s);
A.ABCDEF
B.ABFDE
C.ABCDE
D.ABCD(2)填空题①下面语句序列输出结果是_____________。Strings=newString(“javaprogram!”);System.out.println(s.substring(5,8));②如有以下赋值语句:s=newStringBuffer().append("ab").append(6).append("c");则s的类型是
,它的值是
。③下面的程序统计以“st”开头的字符串有多少个,完成空格处的程序。《JAVA程序设计》课程
4.1字符串类public
class
test{
public
static
void
main(String
args[])
{
String
str[]={“string”,”starting”,”strong”,”street”,”soft”};int
cont=0;
for(inti=0;i<
;i++)
if(str[i].)
;
System.out.println(cont);
}
}(3)编程题①统计一个字符串中字母s出现的次数。②将字符串中每个单词的首字母变成大写。《JAVA程序设计》课程
4.2Math类4.2.1项目描述随机生成一系列位置、大小不同的五角星,并显示在屏幕上。4.2.2项目知识准备(1)Math类概述 Math类是java.lang包下的一个final类,提供了进行指数、对数、平方根、三角函数等基本数学运算的静态方法,以及一些数学常量。Math类中只有一个私有构造方法,因此无法获得Math类的实例,只能通过类名调用其中包含的公有静态常量和方法。(2)Math类中的常量1)Math.PI:圆周率,值为3.1415926535897932)Math.E:自然对数的底数,值为2.718281828459045《JAVA程序设计》课程
4.2Math类Math.abs:求绝对值(参数可以是int,long,float,double)Math.sin:正弦函数Math.asin:反正弦函数Math.cos:余弦函数Math.acos:反余弦函数Math.tan:正切函数Math.atan:反正切函数Math.toDegrees:弧度转化为角度Math.toRadians:角度转化为弧度Math.ceil:得到不小于某数的最大整数Math.floor:得到不大于某数的最大整数Math.sqrt:开平方Math.pow:求某数的任意次方Math.exp:求e的任意次方Math.log10:以10为底的对数Math.log:自然对数Math.rint:求最接近某数的整数(可能比某数大,也可能比它小),返回double型Math.round:同上,返回int或long型Math.random:返回[0,1)之间的一个随机数(3)Math类中的方法《JAVA程序设计》课程
4.2Math类(4)Math类方法测试下面的程序对Math类的一些常量和方法进行测试,进一步把握使用中的细节问题:案例4-2:Math类常量和方法测试publicclassTest{publicstaticvoidmain(String[]args){System.out.println("获得π值:"+Math.PI);System.out.println("获得e值:"+Math.E);
System.out.println("绝对值:"+Math.abs(-10.5));System.out.println("不小于参数值的最小整数:"+
Math.ceil(10.3)+","+Math.ceil(-10.3));System.out.println("不大于参数值的最大整数::"+
Math.floor(8.9)+","+Math.floor(-8.9));《JAVA程序设计》课程
4.2Math类
System.out.println("最接近参数值的整数(1):"+Math.rint(8.9)+","+Math.rint(-8.9));//返回double System.out.println("最接近参数值的整数(2):"+
Math.round(8.9d)+","+Math.round(-8.9d));//返回long System.out.println("最接近参数值的整数(3):"+Math.round(8.9f)+","+Math.round(-8.9f));//返回int System.out.println("获得[0,1)之间的一个随机数:"+Math.random()); System.out.println("计算平方根:"+ Math.sqrt(2)); System.out.println("计算x^y:"+ Math.pow(3,4)); System.out.println("计算正弦:"+Math.sin(Math.toRadians(90)));//参数为弧度System.out.println("计算余弦:"+Math.cos(Math.toRadians(45)));//参数为弧度《JAVA程序设计》课程
4.2Math类System.out.println("计算正切:"+Math.tan(Math.toRadians(45)));//参数为弧度 System.out.println("计算10为底的对数:"+Math.log10(1000)); System.out.println("计算自然对数:"+Math.log(10)); }}4.2.3项目实施(1)功能分析定义x、y两个二维数组,行标表示五角星的序号,列标表示顶点序号,用来存放每个五角星的顶点x、y坐标。五角星的五个顶点均匀分布在圆周上,每个顶点相差72度,根据圆的参数方程:循环5次,即可求出每个顶点的坐标。《JAVA程序设计》课程
4.2Math类最后用画直线方法,用直线将每个五角星的五个点采用间隔一个的方式连接起来,构成五角星。(2)编码通过分析我们可以编写以下代码实现功能:packageject2;importjava.applet.*;//Java小程序importjava.awt.*;//窗口和绘图publicclassStarextendsApplet{publicvoidpaint(Graphicsg){intnum=6;//五角星数量 intx1=50,y1=50,x2=400,y2=300;//五角星出现区域 intr1=30,r2=60;//五角星外接圆的半径范围《JAVA程序设计》课程
4.2Math类doublex[][]=newdouble[num][5];//存放每个五角星顶点的x坐标 doubley[][]=newdouble[num][5];//存放每个五角星顶点的y坐标 for(inti=0;i<num;i++)//计算第i个五角星顶点坐标 { doublex0=x1+(Math.random()*(x2-x1));//随机产生中心的x坐标 doubley0=y1+(Math.random()*(y2-y1));//随机产生中心的y坐标 doubler=r1+(Math.random()*(r2-r1));//随机产生外接圆半径值 for(intj=0;j<5;j++)//计算五个顶点的x、y坐标{
x[i][j]=x0+r*Math.cos(Math.toRadians(72*j));//x=x0+r*cos(a)
y[i][j]=y0+r*Math.sin(Math.toRadians(72*j));//x=x0+r*sin(a) } }《JAVA程序设计》课程
4.2Math类intfromX,fromY,toX,toY; for(inti=0;i<num;i++) for(intj=0;j<5;j++)//五角星的5根线条 {
fromX=(int)x[i][j];fromY=(int)y[i][j];
toX=(int)x[i][(j+2)%5];toY=(int)y[i][(j+2)%5];//中间间隔一个点 g.drawLine(fromX,fromY,toX,toY);//用线条将两个点连接起来 }}}(3)调试运行,显示结果该程序的运行结果如图4.2所示:《JAVA程序设计》课程
4.2Math类图4.2在一定范围内生成位置、大小随机的多个五角星《JAVA程序设计》课程
4.2Math类4.2.4能力拓展(1)选择题①要产生[20,999]之间的随机整数使用哪个表达式?()A.(int)(20+Math.random()*979)B.20+(int)(Math.random()*980)C.(int)(Math.random()*999)D.20+(int)Math.random()*980②下列程序运行的结果为()publicstaticvoidmain(Stringargs[]){inti;floatf=2.3f;doubled=2.7;i=(int)Math.ceil(f)*(int)Math.round(d);System.out.println(i);}
A.4B.5C.6D.9《JAVA程序设计》课程
4.2Math类③如果method(-3.3)==-3成立,则mothod为Math类中的哪个方法?()A.roundB.floorC.minD.ceil ④下列关于Math.random()方法的描述中,正确的是?() A.返回一个不确定的整数B、返回0或是1C.返回一个随机的double类型数,该数大于等于0.0小于1.0D.返回一个随机的float类型数,该数大于等于0.0小于1.0⑤下列方法不属于Math类的是()。
A.rintB.absC.drawLineD.sin(2)填空题①Math类用
修饰,因此不能有子类。②用Math.Random产生[m,n]范围的随机整数,表达式是
。③Math.round(-9.5)等于
。④已知两点的坐标分别为(x1,y1)和(x2,y2),则两点间的距离是
。《JAVA程序设计》课程
4.2Math类(3)编程题①从0~9中随机取出5个数字,要求取出的数字不重复。②输入三角形三边长度,用海伦公式计算三角形面积。《JAVA程序设计》课程
4.3数据类型转换4.3.1项目描述从键盘输入员工的信息,存储到员工对象中。4.3.2项目知识准备(1)基本类型封装类Java中的基本数据包括boolean、byte、char、short、int、long、float、double,这些类型的封装类分别为Boolean、Byte、Character、Short、Integer、Long、Float、Double。提供这些封装类型的原因是:1)基本类型只能按值传递,而封装为对象后,可以按引用传递;2)在一些应用框架中,必须用对象作参数,而不能用基本类型;3)基本类型封装为对象后,可以拥有一些方法来处理数据,进行数据类型转换,数据格式化等操作。(2)基本类型和封装类直接的相互转换基本类型变量转换为封装类对象:将基本类型变量的值传入传入构造函数,生成封装类的对象。封装类对象转换为基本类型变量:调用利用封装类提供的xxxValue()方法,获得基本类型变量。代码如下:《JAVA程序设计》课程
4.3数据类型转换案例4-3:基本类型变量与封装类对象的相互转换publicstaticvoidmain(Stringargs[]){ inti=100;//将int变量转换为Integer对象IntegeriObj=newInteger(i);//将Integer对象转换为int变量inti2=iOValue();System.out.println(iObj);System.out.println(i2);}(3)字符串转换为基本类型封装类对象字符串转换为基本类型的封装类对象,用封装类的静态方法parseXxx来实现,如果转换失败,会抛出NumberFormatException。《JAVA程序设计》课程
4.3数据类型转换案例4-4:字符串转换为基本类型封装类对象publicstaticvoidmain(Stringargs[]){Strings1="100";IntegeriObj=Integer.parseInt(s1);//字符串转换为Integer对象inti=iOValue();//Integer对象转换为基本类型变量Strings2="1.25";FloatfObj=Float.parseFloat(s2);//字符串转换为Float对象floatf=fObj.floatValue();//Float对象转换为基本类型变量System.out.println(i);System.out.println(f);}(4)基本类型的格式化基本类型的格式化,是指将基本类型变量转换为某种格式的字符串,使输出结果美观、标准。《JAVA程序设计》课程
4.3数据类型转换1)使用DecimalFormat对数值进行格式化DecimalFormat类为我们提供了格式化整数和浮点数的方法。使用时,先创建DecimalFormat对象,再调用applyPattern方法设置格式化模板,最后调用format方法获得格式化后的字符串。案例4-5:用DecimalFormat格式化数值importjava.text.*;//DecimalFormat属于java.text包publicclassTest{ publicstaticvoidmain(Stringargs[]) {
DecimalFormatdf=newDecimalFormat();df.applyPattern("0000.00");//每个0表示一位数字,该位缺失补0System.out.println(df.format(123.456));//输出“0123.46”System.out.println(df.format(12345.6));//输出“12345.60”df.applyPattern("####.##");//每个#表示一位数字,该位位缺失就不显示《JAVA程序设计》课程
4.3数据类型转换System.out.println(df.format(123.456));//输出“123.46” System.out.println(df.format(12345.6));//输出“12345.6” df.applyPattern("0,000.00");//千分位分隔符 System.out.println(df.format(12345.6));//输出“12,345.60” df.applyPattern("0.00E0");//科学计数法 System.out.println(df.format(12345.6));//输出“1.23E4” df.applyPattern("0.00%");//百分比 System.out.println(df.format(1.2345));//输出“123.45%” }}2)使用String.Format对数值进行格式化在JDK1.5中,String类增加了静态方法format(Stringformat,Objects...args),该方法可以将各类数据按照指定的格式以字符串形式输出。该方法与C语言中的printf函数用法相似,其中format参数指定了输出的格式,而args则是一系列等待被格式化的对象。《JAVA程序设计》课程
4.3数据类型转换①对整数进行格式化的格式字符串定义是:%[index$][标识][最小宽度]转换方式格式字符串由4部分组成,其中:●%[index$]:将第index个参数进行格式化,index从1开始●[最小宽度]:最终该整数转化的字符串最少包含多少位数●[标识]:'-'在最小宽度内左对齐,不可以与“用0填充”同时使用'#'只适用于8进制和16进制,8进制时在结果前面增加一个0,16进制时在结果前面增加0x'+'结果总是包括一个符号(一般情况下只适用于10进制,若对象为BigInteger才可以用于8进制和16进制)''正值前加空格,负值前加负号(一般情况下只适用于10进制,若对象为BigInteger才可以用于8进制和16进制)'0'结果将用零来填充','只适用于10进制,每3位数字之间用“,”分隔'('若参数是负数,则结果中不添加负号而是用圆括号把数字括起来(限制条件同‘+’)《JAVA程序设计》课程
4.3数据类型转换●转换方式:d-十进制o-八进制x或X-十六进制②对浮点数进行格式化的格式字符串定义是:%[index$][标识][最少宽度][.精度]转换方式浮点数的格式化多了一个“精度”选项,可以控制小数点后面的位数。此外,浮点数的转换方式包括:'e','E'-结果被格式化为用科学记数法表示的十进制数'f'-结果被格式化为十进制普通表示方式'g','G'-根据具体情况,自动选择用普通表示方式还是科学计数法方式'a','A'-结果被格式化为带有效位数和指数的十六进制浮点数下面是用String.Format格式化整数和浮点数的例子:案例4-6:用String.Format格式化数值《JAVA程序设计》课程
4.3数据类型转换publicclassTest{ publicstaticvoidmain(Stringargs[]) { System.out.println(String.format("%1$,09d",-1234)); System.out.println(String.format("%1$9d",-1234)); System.out.println(String.format("%1$-9d",-1234)); System.out.println(String.format("%1$(9d",-1234)); System.out.println(String.format("%1$#9x",1234)); System.out.println(String.format("%1$.2f",12.345)); System.out.println(String.format("%1$9.2f",12.345)); }}程序运行结果如下:《JAVA程序设计》课程
4.3数据类型转换图4.3用String.Format格式化数值《JAVA程序设计》课程
4.3数据类型转换(5)日期时间类1)Date类在JDK1.0时,处理日期是用Date类,从JDK1.1起,Date类大部分功能已经废止了,目前Date类的实例就表示一个时间点,在需要比较两个时间点的先后、显示某个时间点时,可以用Date类,使用时注意引入java.util包。下面通过一个例子来说明Date类的用法:案例4-7:计算循环1亿次所用的时间importjava.util.*;publicclassTest{ publicstaticvoidmain(String[]args) { Dated1=newDate();//第一个时间点 for(intx=0;x<10000;x++)《JAVA程序设计》课程
4.3数据类型转换for(inty=0;y<10000;y++); Dated2=newDate();//第二个时间点 System.out.println(d2.getTime()-d1.getTime());//两个时间点相差的毫秒数 }}Date对象实质上存储距1970-1-100:00:00GMT的毫秒数,可以用SimpleDateFormat格式化为一个字符串进行显示:案例4-8:Date对象的格式化importjava.text.SimpleDateFormat;importjava.util.Date;publicclassTest{publicstaticvoidmain(String[]args){ //格式化为“yyyy-MM-ddhh:mm:ss”样式 SimpleDateFormatdf=newSimpleDateFormat("yyyy-MM-ddhh:mm:ss");《JAVA程序设计》课程
4.3数据类型转换Dated=newDate(); System.out.println(df.format(d)); }}
使用SimpleDateFormat,也可以把规定格式的字符串转换为日期,例如:案例4-9:字符串转换为日期
importjava.text.SimpleDateFormat;importjava.util.Date;publicclassTest{ publicstaticvoidmain(String[]args)throwsException { SimpleDateFormatdf=newSimpleDateFormat();df.applyPattern("yyyy-MM-ddhh:mm:ss");//规定解析格式 Strings="2015-10-120:10:05";《JAVA程序设计》课程
4.3数据类型转换Dated=df.parse(s);//字符串解析为Date对象(解析失败会抛出异常) System.out.println(df.format(d));//输出转换结果 }}2)Calendar类、GregorianCalendar类Calendar类是抽象类,GregorianCalendar类是Calendar类在Java中的唯一实现。所以用下面三种写法,得到的都是GregorianCalendar类的一个实例:GregorianCalendarcal=newGregorianCalendar()Calendarcal=newGregorianCalendar();Calendarcal=Calendar.getInstance();GregorianCalendar对象提供了比较丰富的方法,可以对年、月、日、时、分、秒进行修改和加减。Calendar对象和Date对象可以相互转换,使用Calendar对象的getTime()方法将转换Calendar对象为Date对象,反之使用setTime()方法将Date对象转换为Calendar对象。《JAVA程序设计》课程
4.3数据类型转换下面是一个显示当月月历的例子:案例4-10:显示当月的月历importjava.util.*;publicclassTest{ publicstaticvoidmain(String[]args){ Calendarcal=newGregorianCalendar();//获取当前日期 intm,d,day; intweekDay; inti;String[]w={"日","一","二","三","四","五","六"}; //打印表头 for(i=0;i<w.length;i++) System.out.print(w[i]+"");《JAVA程序设计》课程
4.3数据类型转换System.out.println();
m=cal.get(Calendar.MONTH);//当前月 d=cal.get(Calendar.DAY_OF_MONTH);//该月第几天 cal.set(Calendar.DATE,1);//将日期设置为当月1号 weekDay=cal.get(Calendar.DAY_OF_WEEK);//获知1号是星期几
//根据1号是星期几,前面留若干空白 for(i=1;i<weekDay;i++) System.out.print("");
while(cal.get(Calendar.MONTH)==m)//当月份变为下一月时结束 {day=cal.get(Calendar.DATE);//一位数前面补空格
System.out.print(String.format("%1$2d",day));
if(day==d)System.out.print("*");//当天加*标志《JAVA程序设计》课程
4.3数据类型转换elseSystem.out.print("");
if(cal.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY) System.out.println(); cal.add(Calendar.DATE,1);//每循环一次加一天 } System.out.println();//换行 }}程序运行结果如下:图4.4显示当月的月历《JAVA程序设计》课程
4.3数据类型转换4.3.3项目实施(1)功能分析
员工的信息包括编号、姓名、出生日期、基本工资,从键盘输入时,各项之间用逗号隔开,输入完一个员工的信息后,提示是否继续输入下一个员工数据,输入“y”继续,输入“n”结束。
输入的单个员工信息先分割成字符串数组,再根据员工各项数据的类型,作相应转换,最后存入员工对象数组中。(2)编码通过分析我们可以编写以下代码实现功能://Employee.javaimportjava.util.*;publicclassEmployee//员工{privateStringname;//姓名《JAVA程序设计》课程
4.3数据类型转换privatefloatsalary;//基本工资privateDatebirthday;//生日publicStringgetName(){ returnname;}publicvoidsetName(Stringname){=name;}publicfloatgetSalary(){returnsalary;}publicvoidsetSalary(floatsalary){this.salary=salar
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 聊城市初二考试试题及答案
- 光伏支架实操培训课件
- 高二会考历史试卷及答案
- 福建中考真题及答案
- 企业安全环保意识培训课件
- 8AU1-U4一轮复习-2023年江苏中考英语一轮复习(牛津译林版)
- 小学五年级语文上册语文园地五说明文数据准确性课件
- 【初中 物理】牛顿第一定律课件 -2025-2026学年人教版物理八年级下学期
- 2026年福州工业园区开发集团有限公司建设分公司项目建设合同制人员招聘备考题库附答案详解
- 2026年自贡通航机场发展有限公司公开招聘部分工作人员的备考题库有完整答案详解
- 人体工效评估程序
- EPC工程总承包项目设计及施工的配合制度
- DB21∕T 3358-2020 电梯再生制动系统要求及试验方法
- 西南大学PPT 04 实用版答辩模板
- 国家开放大学电大《政治学原理》形考任务1及4网考题库答案
- 管理百年智慧树知到答案章节测试2023年
- 国家开放大学《刑法学(1)》形成性考核作业1-4参考答案
- 工艺美术专业课程配套练习二
- 2022“博学杯”全国幼儿识字与阅读大赛选拔试卷
- 临床试验监查计划
- 安全吹哨人管理制度
评论
0/150
提交评论