




已阅读5页,还剩134页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java程序设计,第7章字符串和文本I/O,楚雄师范学院计算机科学系java程序设计课程,2/138,学习目标,1.掌握String类处理固定字符串的方法;(重)2.掌握Character类处理单个字符的方法;3.掌握StringBuilder/StringBuffer类处理可变字符串的方法;(重、难)4.了理String、StringBuilder和StringBuffer的区别;5.理解Java处理文本文件的方法,掌握使用File类获得文件的属性、删除和重命名文件的方法;(重),楚雄师范学院计算机科学系java程序设计课程,3/138,学习目标,6.掌握PrintWriter类向文件写数据的方法;(重)7.掌握使用Scanner类从文件读数据的方法;(重),楚雄师范学院计算机科学系java程序设计课程,4/138,内容摘要,7.1引言7.2字符串类String7.3字符类Character7.4StringBuilder/StringBuffer类7.5命令行参数,楚雄师范学院计算机科学系java程序设计课程,5/138,内容摘要,7.6文件类File7.7文本I/O,楚雄师范学院计算机科学系java程序设计课程,6/138,内容摘要,7.1引言7.2字符串类String7.3字符类Character7.4StringBuilder/StringBuffer类7.5命令行参数,楚雄师范学院计算机科学系java程序设计课程,7/138,7.1引言,所谓字符串就是一个字符序列。在许多高级语言中,字符串被处理为字符的数组。在Java中,字符串是对象。Java提供了String类、StringBuilder和StringBuffer类来存储和处理字符串。在大多数情况下,使用String类创建、存储和处理字符串是非常有效的,但是,用String创建的字符串不能被修改。,楚雄师范学院计算机科学系java程序设计课程,8/138,7.1引言,StringBuilder和StringBuffer类创建的字符串是可变的。本章还要介绍如何处理main方法的命令行参数,以及如何使用Scanner类和PrintWriter类进行简单的文本输入输出。,楚雄师范学院计算机科学系java程序设计课程,9/138,内容摘要,7.1引言7.2字符串类String7.3字符类Character7.4StringBuilder/StringBuffer类7.5命令行参数,楚雄师范学院计算机科学系java程序设计课程,10/138,7.2字符串类,String类有11个构造方法和40多个方法,这些方法用于检验字符序列(即字符串)中的单个字符、比较字符串、查找子串、提取子串、将全部字符串转换成大写或小写的新字符串。,楚雄师范学院计算机科学系java程序设计课程,11/138,7.2.1构造一个字符串,构造一个字符串的语法格式为:String=newString();例如:Stringmessage=newString(“welcometoJava”);对字符串,可以使用下列语句:Stringmessage=“welcometoJava”;,楚雄师范学院计算机科学系java程序设计课程,12/138,7.2.1构造一个字符串,也可以使用字符数组构造字符串:CharchrArray=G,o,o,d;Stringmessage=newString(chrArray);注意:String变量存储String对象的引用,而String对象存储串值。,楚雄师范学院计算机科学系java程序设计课程,13/138,7.2.2不可变字符串与限定字符串,String对象是不可变的,它的内容不能改变。例如:Strings=“Java”;s=“HTML”;首先,第一句创建了一个内容为“Java”的String对象,并将其引用赋值给s;然后,第二句创建了内容为“HTML”的String对象,并将其引用赋值给s。此后,“Java”对象仍然存在。如图7-1所示:,楚雄师范学院计算机科学系java程序设计课程,14/138,7.2.2不可变字符串与限定字符串,楚雄师范学院计算机科学系java程序设计课程,15/138,7.2.2不可变字符串与限定字符串,字符串是不可变的又被频繁地使用,为了提高Java虚拟机的效率和节约内存,当字符串直接量具有相同的字符序列时,使用唯一的实例来处理。这样的实例称被限定的。可以通过String对象的intern方法返回一个限定字符串。例如:,楚雄师范学院计算机科学系java程序设计课程,16/138,7.2.2不可变字符串与限定字符串,Strings=“Java”;Strings1=newString(“Java”);Strings2=ern;Strings3=“Java”;,楚雄师范学院计算机科学系java程序设计课程,17/138,7.2.3字符串的比较,由于字符串被处理为对象,所以,要比较两个字符是否相等就不能使用运算符“=”来进行。事实上,运算符“=”用于判断是否是引用同一个对象。例如:,楚雄师范学院计算机科学系java程序设计课程,18/138,7.2.2不可变字符串与限定字符串,Strings=“Java”;Strings1=newString(“Java”);Strings2=ern;Strings3=“Java”;System.out.println(“s1=s是”+(s1=s);System.out.println(“s3=s是”+(s3=s);显示:,楚雄师范学院计算机科学系java程序设计课程,19/138,7.2.2不可变字符串与限定字符串,s1=s是falses3=s是true,楚雄师范学院计算机科学系java程序设计课程,20/138,7.2.3字符串的比较,要判断两个字符串变量是否具有相同的内容,可以使用equals()方法来完成。例如:Strings=“Java”;Strings1=newString(“Java”);Strings2=ern;Strings3=“Java”;System.out.println(“s1.equals(s)是”+(s1.equals(s);System.out.println(“s3.equals(s)是”+(s3.equals(s);显示:,楚雄师范学院计算机科学系java程序设计课程,21/138,7.2.2不可变字符串与限定字符串,s1=s是trues3=s是true,楚雄师范学院计算机科学系java程序设计课程,22/138,7.2.3字符串的比较,比较两个字符是否相等,还可以使用compareTo方法来进行:SpareTo(s2)当s1等于s2时,它返回0;当s1小于(字典序)s2时,它返回判断过程中小于字符距离值的负数;当s1大于(字典序)s2时,它返回判断过程中大于字符距离值的正数;,楚雄师范学院计算机科学系java程序设计课程,23/138,7.2.3字符串的比较,例如:设s1为”abc”,s2为”abc”,则SpareTo(s2)返回值为0;设s1为”abc”,s2为”abg”,则SpareTo(s2)返回值为-4;设s1为”abg”,s2为”abc”,则SpareTo(s2)返回值为4。,楚雄师范学院计算机科学系java程序设计课程,24/138,7.2.3字符串的比较,String类还提供了一些方法来比较字符串:equalsIgnoreCase:比较两个字符串是否相等,忽略字母的大小写;regionMatches:比较两个字符串的某一部分是否相等;str.startsWith(prefix):检测str是否以指定前缀prefix开始;str.endsWith(suffix):检测str是否以指定后缀suffix结束。,楚雄师范学院计算机科学系java程序设计课程,25/138,7.2.4字符串长度以及提取单个字符,字符串长度可以通过调用length()方法来获得。例如,设字符串s的内容为”WelcometoJava”,则s.length()返回15。从字符串中指定位置提取一个字符可以通过调用charAt()方法来进行,其中字符串的位置从0开始计算,最后一个字符的位置为length()-1。,楚雄师范学院计算机科学系java程序设计课程,26/138,7.2.4字符串长度以及提取单个字符,例如,设字符串s的内容为”WelcometoJava”,则s.charAt(0)返回字符W;s.charAt(8)返回字符t;s.charAt(s.length()出错。,楚雄师范学院计算机科学系java程序设计课程,27/138,7.2.5字符串的连接,可以使用concat()方法连接两个字符串。例如,设字符串s1的内容为”Welcometo”,s2的内容为”Java”,则Strings3=s1.concat(s2);产生s3为”WelcometoJava”.也可以使用加号(+)来连接两个字符串:Strings3=s1+s2;,楚雄师范学院计算机科学系java程序设计课程,28/138,7.2.6提取子串,可以使用substring()方法来提取子串,其格式为:substring(beginIndex,endIndex);功能:当有endIndex值时,从字符串中返回其位置从beginIndex开始到endIndex止的子串;当没有endIndex值时,从字符串中返回其位置从beginIndex开始到结束止的子串。例如:,楚雄师范学院计算机科学系java程序设计课程,29/138,7.2.6提取子串,例如,设字符串s的内容为”WelcometoJava”,则s.substring(8,11)返回子字符串(对象)”toJ”;s.substring(11)返回子字符串(对象)”Java”。,楚雄师范学院计算机科学系java程序设计课程,30/138,7.2.7字符串的转换,字符串对象一旦建立,它的内容就不能改变。但是,可以使用toLowerCase、toUpperCase、trim和replace方法得到一个新的字符串,其中toLowerCase和toUpperCase方法将字符串中的所有字符都转换成大写或小写,由此获得新的字符串,trim方法通过去除两端空格来获得新字符串,replace(oldChar,newChar)把原字符串中oldChar用newChar替代而获得新的字符串。,楚雄师范学院计算机科学系java程序设计课程,31/138,7.2.7字符串的转换,例如:“Welcome”.toLowerCase()返回一个新字符串”welcome”;“Welcome”.toUpperCase()返回一个新字符串”WELCOME”;“Welcome”.trim()返回一个新的字符串”Welcome”;“Welcome”.replace(”e”,”A”)返回一个新的字符串“WAlcomA”。,楚雄师范学院计算机科学系java程序设计课程,32/138,7.2.8获取字符串中的一个字符或子串,利用indexOf和lastIndexOf方法可以在字符串中得到一个字符或子串。String中定义了4个重载的indexOf方法和4lastIndexOf方法。publicintindexOf(intch)(publicintlastIndexOf(intch)返回字符串中与指定字符ch相匹配的第一个(最后一个)字符的下标。如果指定字符不在串中,则返回-1。将一个字符(如indexOf(a),楚雄师范学院计算机科学系java程序设计课程,33/138,7.2.8获取字符串中的一个字符或子串,参数ch得到的是字符的统一码值(即a的统一码值是十进制数97)。例如:“WelcometoJava”.indexOf(W)返回0“WelcometoJava”.indexOf(o)返回4“WelcometoJava”.lastIndexOf(W)返回0“WelcometoJava”.lastIndexOf(o)返回9,楚雄师范学院计算机科学系java程序设计课程,34/138,7.2.8获取字符串中的一个字符或子串,publicintindexOf(intch,intfromindex)(publicintlastIndexOf(intch,intendIndex)返回在fromIndex之后(endIndex之前)与给定字符ch相匹配的第一个(最后一个字符的下标。如果这个给定的字符不在以fromIndex开始(endIndex结束)的子串中,则返回-1。“WelcometoJava”.indexOf(o,5)返回9“WelcometoJava”.lastIndexOf(o,5)返回4,楚雄师范学院计算机科学系java程序设计课程,35/138,7.2.8获取字符串中的一个字符或子串,publicintindexOf(Stringstr)(publicintlastIndexOf(Stringstr)返回与指定字符串str相匹配的子串的首(尾)字符的下标。例如:“WelcometoJava”.indexOf(come)返回3“WelcometoJava”.lastIndexOf(come)返回6,楚雄师范学院计算机科学系java程序设计课程,36/138,7.2.8获取字符串中的一个字符或子串,publicintindexOf(Stringstr,intfromIndex)(publicintlastIndexOf(Stringstr,intendIndex)返回字符串中以fromIndex开始(endIndex结束)与指定字符串str相匹配的子串的第一个(最后一个)字符的下标。如果参数str不在以fromIndex开始(endIndex结束)的子串中,返回-1。例如:“WelcometoJava”.indexOf(Java,5)返回11“WelcometoJava”.indexOf(java,5)返回-1,楚雄师范学院计算机科学系java程序设计课程,37/138,7.2.8获取字符串中的一个字符或子串,“WelcometoJava”.lastIndexOf(Java,5)返回-1“WelcometoJava”.lastIndexOf(java,5)返回-1。,楚雄师范学院计算机科学系java程序设计课程,38/138,7.2.9字符串与数组之间的转换,字符串不是数组,但是,字符串可以转换成数组;反之亦然。使用toCharArray方法可以将字符串转换成一个字符的数组。例如:Charchars=”Java”.toCharArray();因此,chars0为J,chars1为a,chars2为v,chars3为a。,楚雄师范学院计算机科学系java程序设计课程,39/138,7.2.9字符串与数组之间的转换,也可以使用getChars(intsb,intse,chardst,intdb)方法把下标sb到se-1的子串复制到字符数组dst中,并且它在dst中的下标是db开始的。例如:chardst=J,A,V,A,1,3,0,1;”CS3720”.getChars(2,6,dst,4);,楚雄师范学院计算机科学系java程序设计课程,40/138,7.2.9字符串与数组之间的转换,使dst从J,A,V,A,1,3,0,1变为:J,A,V,A,3,7,2,0,楚雄师范学院计算机科学系java程序设计课程,41/138,7.2.10将字符值和数值转换成字符串,前面,我们讲过:Double.parseDouble()Integer.parseInteger()可以分别把转换成double值和int值。本节valueOf方法可以把数值转换成字符串。例如:,楚雄师范学院计算机科学系java程序设计课程,42/138,7.2.10将字符值和数值转换成字符串,String.valueOf(5.44)把数值5.44转换成字符串”5.44”;String.valueOf(5)把数值5转换成字符串”5”。,楚雄师范学院计算机科学系java程序设计课程,43/138,内容摘要,7.1引言7.2字符串类String7.3字符类Character7.4StringBuilder/StringBuffer类7.5命令行参数,楚雄师范学院计算机科学系java程序设计课程,44/138,7.3字符类Character,Java为每一种基本数据类型提供一个包装类。这些类是:Charater、Boolean、Byte、Short、Integer、Long、Float和Double等它们分别对应基本类型char、boolean、byte、short、int、long、float和double等。所有这些类都在java.lang包中。,楚雄师范学院计算机科学系java程序设计课程,45/138,7.3字符类Character,Charater类有一人个构造方法和多个进行字符操作的方法,如确定字符的类别(大写字母、小写字母、数字等)、将大写字母转换成小写字母或将小字母转换成大写字母。1.可以用char值创建一个Character对象。例如:下述语句用字符a创建一个字符对象Characterch=newCharacter(a);,楚雄师范学院计算机科学系java程序设计课程,46/138,7.3字符类Character,2.charValue方法返回包含在Character对象中的字符值。例如:下述语句用字符a创建一个字符对象,然后从该对象返回其内容即字符a:Characterch=newCharacter(a);ch.charValue();/*返回a*/,楚雄师范学院计算机科学系java程序设计课程,47/138,7.3字符类Character,pareTo方法将该字符与另一字符进行比较,返回一个数值,它是这个字符与另一个字符的统一码值之差。例如:ch为newCharacter(b),则:pareTo(newCharacter(a)返回pareTo(newCharacter(b)返回0,楚雄师范学院计算机科学系java程序设计课程,48/138,7.3字符类Character,pareTo(newCharacter(c)返回-pareTo(newCharacter(d)返回-2。,楚雄师范学院计算机科学系java程序设计课程,49/138,7.3字符类Character,4.equals方法返回true,当且仅当两个字符相同时。例如:ch为newCharacter(b),则:ch.equals(newCharacter(a)返回falsech.equals(newCharacter(b)返回true。,楚雄师范学院计算机科学系java程序设计课程,50/138,内容摘要,7.1引言7.2字符串类String7.3字符类Character7.4StringBuilder/StringBuffer类7.5命令行参数,楚雄师范学院计算机科学系java程序设计课程,51/138,7.4StringBuilder/StringBuffer类,前面我们介绍了String类的使用,提到过它有一个不足之处:String对象一旦创建后,它的值就不能再修改。为了使字符串处理能适应于可以修改其值,Java提供了StringBuilder/StringBuffer类。它是Java对字符串的另一种处理办法。它比String类更加灵活,可以在字符串缓冲区中添加、插入或追加新的内容。,楚雄师范学院计算机科学系java程序设计课程,52/138,7.4StringBuilder/StringBuffer类,在JDK1.5中,StringBuilder类与StringBuffer类相似,除了StringBuffer中的update方法是同步的。如果当前是多任务访问,使用StringBuffer;而如果是单任务访问,StringBuilder会更有效。StringBuilder类与StringBuffer类的构造方法和方法基本相同,本节介绍StringBuffer,可以用StringBuilder代替StringBuffer,程序不经任何修改仍可编译执行。,楚雄师范学院计算机科学系java程序设计课程,53/138,7.4StringBuilder/StringBuffer类,StringBuffer类有3个构造方法和30多个用于管理缓冲区或修改缓冲区内字符串的方法。可以创建空缓冲区或字符串缓冲区。,楚雄师范学院计算机科学系java程序设计课程,54/138,7.4.1创建字符串缓冲区,字符串缓冲区是StringBuffer对象的内容,用于存储字符串。创建StringBuffer对象的方法格式:publicStringBuff()创建一个StringBuff对象,其内容是容量为16的空字符串缓冲区,楚雄师范学院计算机科学系java程序设计课程,55/138,7.4.1创建字符串缓冲区,publicvoidStringBuff(intcapacity)创建一个StringBuff对象,其内容是容量为capacity的空字符串缓冲区publicvoidStringBuff(Stringstr)创建一个StringBuff对象,其内容是str的字符串缓冲区,缓冲区容量一般为字符串str长度加16例如:StringBufferstrBuf1=newStringBuffer();,楚雄师范学院计算机科学系java程序设计课程,56/138,7.4.1创建字符串缓冲区,StringBufferstrBuf2=newStringBuffer(25);StringBufferstrBuf3=newStringBuffer(“Java”);,楚雄师范学院计算机科学系java程序设计课程,57/138,7.4.2访问字符串缓冲区,访问字符串缓冲区就是访问它的子串或字符。访问字符串缓冲区的方法格式:publiccharcharAt(intindex)返回指定下标的字符。例如:StringBufferstrBuf=newStringBuffer(“Java”);System.out.println(“下标为2的元素:”+charAt(2),楚雄师范学院计算机科学系java程序设计课程,58/138,7.4.2访问字符串缓冲区,publicStringsubstring(intstartIndex)返回从startIndex开始的子串。例如:StringBufferstrBuf=newStringBuffer(“Java”);System.out.println(“从下标为2开始的子串为:”+substring(2)publicStringsubstring(intstartIndex,intendIndex),楚雄师范学院计算机科学系java程序设计课程,59/138,7.4.2访问字符串缓冲区,返回从下标startIndex开始到下标endIndex止的子串(不包括下标endIndex处的字符)。例如:StringBufferstrBuf=newStringBuffer(“Java”);System.out.println(“从下标为2开始的子串为:”+substring(1,2),楚雄师范学院计算机科学系java程序设计课程,60/138,7.4.2访问字符串缓冲区,publicintcapacity()返回该字符串缓冲区的容量。例如:StringBufferstrBuf=newStringBuffer(“Java”);System.out.println(“当前字符串缓冲区的容量为:”+capacity()publicintlength(),楚雄师范学院计算机科学系java程序设计课程,61/138,7.4.2访问字符串缓冲区,返回该字符串缓冲区中的字符个数。例如:StringBufferstrBuf=newStringBuffer(“Java”);System.out.println(“当前字符串缓冲区中字符数为:”+length(),楚雄师范学院计算机科学系java程序设计课程,62/138,7.4.3修改缓冲区中的字符串,包括在字符串缓冲区中追加新内容,在字符串缓冲区中的指定位置插入新内容,以及删除或替换字符串缓冲区中的字符1、追加方法格式:publicStringBuilderappend(chardata)在该字符串缓冲区追加一个字符数组,楚雄师范学院计算机科学系java程序设计课程,63/138,7.4.3修改缓冲区中的字符串,publicStringBuilderappend(chardata,intoffset,intlen)在该字符串缓冲区追加data的子数组,其开始下标为offset,元素个数为lenpublicStringBuilderappend(v)把基本数据类型的值作为字符追加该字符串缓冲区中publicStringBuilderappend(Stringstr)在该字符串缓冲区中追加字符串,楚雄师范学院计算机科学系java程序设计课程,64/138,7.4.3修改缓冲区中的字符串,下列代码将字符串和字符追加到strBuf,构成新的字符串”WelcometoJava”:StringBufferstrBuf=newStringBuffer();strBuf.append(”Welcome”);strBuf.append();strBuf.append(“to”);strBuf.append();strBuf.append(“Java”);,楚雄师范学院计算机科学系java程序设计课程,65/138,7.4.3修改缓冲区中的字符串,2、插入Java也提供了几种重载方法,可以把boolean、char、char数组、double、float、int、long和String类型的值插入到字符串缓冲区中指定下标处,原内容后移。方法格式:publicvoidinsert(intoffset,chardata)把data插入到下标为offset处,原内容后移,楚雄师范学院计算机科学系java程序设计课程,66/138,7.4.3修改缓冲区中的字符串,publicvoidinsert(intoffset,b)把值b转换成字符串,插入到下标为offset处,原内容后移publicvoidinsert(intoffset,Stringstr)把字符串str插入到下标为offset处,原内容后移例如:,楚雄师范学院计算机科学系java程序设计课程,67/138,7.4.3修改缓冲区中的字符串,publicclasstest2publicstaticvoidmain(Stringargs)chardata=H,T,M,L,;StringBufferstrBuf=newStringBuffer(WelcomeToJava);strBuf.insert(11,data);System.out.println(当前字符串为:+strBuf.substring(0);strBuf.insert(15,2);System.out.println(当前字符串为:+strBuf.substring(0);,楚雄师范学院计算机科学系java程序设计课程,68/138,7.4.3修改缓冲区中的字符串,strBuf.insert(17,and);System.out.println(当前字符串为:+strBuf.substring(0);,楚雄师范学院计算机科学系java程序设计课程,69/138,7.4.3修改缓冲区中的字符串,3、删除方法格式:publicStringBuilderdelete(intstartIndex,intendIndex)删除从startIndex开始到endIndex止的子串,不包括下标为endIndex的字符例如:publicclasstest2publicstaticvoidmain(Stringargs)StringBufferstrBuf=newStringBuffer(WelcomeToJava);,楚雄师范学院计算机科学系java程序设计课程,70/138,7.4.3修改缓冲区中的字符串,strBuf.delete(7,9);,楚雄师范学院计算机科学系java程序设计课程,71/138,7.4.3修改缓冲区中的字符串,publicStringBuilderdeleteChartAt(intindex)删除从下标为index的字符例如:publicclasstest2publicstaticvoidmain(Stringargs)StringBufferstrBuf=newStringBuffer(WelcomeToJava);,楚雄师范学院计算机科学系java程序设计课程,72/138,7.4.3修改缓冲区中的字符串,strBuf.delete(9);,楚雄师范学院计算机科学系java程序设计课程,73/138,7.4.3修改缓冲区中的字符串,4、替换方法格式:publicreplace(intsI,inteI,Stringstr)用给定字符串str替换字符串缓冲中从sI开始到eI止的字符(不包括下标为eI的字符)。例如:,楚雄师范学院计算机科学系java程序设计课程,74/138,7.4.3修改缓冲区中的字符串,publicclasstest5publicstaticvoidmain(Stringargs)StringBufferstrBuf=newStringBuffer(WelcomeToJava);strBuf.replace(11,15,C+andc#);System.out.println(当前字符串为:+strBuf.substring(0);,楚雄师范学院计算机科学系java程序设计课程,75/138,7.4.3修改缓冲区中的字符串,楚雄师范学院计算机科学系java程序设计课程,76/138,7.4.3修改缓冲区中的字符串,5、倒置方法格式:publicStringBuilderreverse()倒置字符串缓冲区中字符的顺序。例如:,楚雄师范学院计算机科学系java程序设计课程,77/138,7.4.3修改缓冲区中的字符串,publicclasstest6publicstaticvoidmain(Stringargs)StringBufferstrBuf=newStringBuffer(WelcomeToJava);strBuf.reverse();System.out.println(当前字符串为:+strBuf.substring(0);,楚雄师范学院计算机科学系java程序设计课程,78/138,7.4.3修改缓冲区中的字符串,楚雄师范学院计算机科学系java程序设计课程,79/138,内容摘要,7.1引言7.2字符串类String7.3字符类Character7.4StringBuilder/StringBuffer类7.5命令行参数,楚雄师范学院计算机科学系java程序设计课程,80/138,7.5命令行参数,我们先看前面的例子:publicclasstest6publicstaticvoidmain(Stringargs)StringBufferstrBuf=newStringBuffer(WelcomeToJava);strBuf.reverse();System.out.println(当前字符串为:+strBuf.substring(0);,楚雄师范学院计算机科学系java程序设计课程,81/138,7.5命令行参数,发现:在main方法的定义中有参数声明:Stringargs问:这参数是干什么的呢?回答:存放命令行参数。,楚雄师范学院计算机科学系java程序设计课程,82/138,7.5命令行参数,我们来改一下前面的例子并运行:publicclasstest7publicstaticvoidmain(Stringargs)System.out.println(args0:+args0+,args1:+args1+,rgs2:+args2);,楚雄师范学院计算机科学系java程序设计课程,83/138,7.5命令行参数,楚雄师范学院计算机科学系java程序设计课程,84/138,7.5命令行参数,可见:main方法中参数args是用来存放命令行中的参数的。事实上:当调用具有n个参数的程序(即main方法)时,Java解释器创建一个如下所示数组:newStringn;存储命令行参数,并把该数组的引用传递给args。,楚雄师范学院计算机科学系java程序设计课程,85/138,7.5命令行参数,实例:编写程序进行整数的二元运算。javaCalculator2+3程序运行结果为2+3=5,楚雄师范学院计算机科学系java程序设计课程,86/138,7.5命令行参数,/Calculator.java:PassparametersfromthecommandlinepublicclassCalculator/Main方法publicstaticvoidmain(Stringargs)/运行结果intresult=0;,楚雄师范学院计算机科学系java程序设计课程,87/138,7.5命令行参数,if(args.length!=3)System.out.println(“用法:javaCalculatoroperand1operatoroperand2);System.exit(0);,楚雄师范学院计算机科学系java程序设计课程,88/138,7.5命令行参数,switch(args1.charAt(0)/确定操作符case+:result=Integer.parseInt(args0)+Integer.parseInt(args2);break;case-:result=Integer.parseInt(args0)-Integer.parseInt(args2);break;case*:result=Integer.parseInt(args0)*Integer.parseInt(args2);break;case/:result=Integer.parseInt(args0)/Integer.parseInt(args2);,楚雄师范学院计算机科学系java程序设计课程,89/138,7.5命令行参数,/显示结果System.out.println(args0+args1+args2+=+result);,楚雄师范学院计算机科学系java程序设计课程,90/138,问题引入:,在前面的课程中,我们已经知道,存储在变量、数组和对象中的数据是暂时的,程序结束后它们就会丢失。那么,为了能够永久保存数据,应采用什么办法呢?回答是“文件”。所谓文件就是数据的集合,是使用外部存储设备存储数据的一种形式。下面,我们介绍在Java中如何获取文件的各种属性(文件File),如何读写文本文件(文本I/O)等。,楚雄师范学院计算机科学系java程序设计课程,91/138,内容摘要,7.6文件类File7.7文本I/O,楚雄师范学院计算机科学系java程序设计课程,92/138,7.6文件类File,类库中提供的文件类File是Java专门提供的一种抽象,用于以平台独立的方式处理大多数平台依赖的、复杂的文件和路径名问题。其处理方式表现为:文件所存放的“位置”,以相对路径的方式来说明。如:“image/us.gif”表示文件us.gif在当前目录的image目录下,“./image/us.gif”表示文件us.gif在当前目录的父目录的image目录下(注:image与当前目录同属于一个父目录)。File类是文件名及其目录路径的一个包装类,它的实例对象既可以表示目录,也可以表示文件。如:,楚雄师范学院计算机科学系java程序设计课程,93/138,7.6文件类File,File类包含许多获取文件属性的方法以及删除和重命名文件的方法,但是,它没有包含读写文件内容的方法。一、创建文件对象File类创建文件对象的方法重载了三个,其格式分别如下:1)创建文件对象方法1publicFile(String)功能:为指定创建文件对象,可以是文件,也可以是目录。例如:(当前目录为mainbook),楚雄师范学院计算机科学系java程序设计课程,94/138,7.6文件类File,importjava.io.File;publicclassTestPathpublicstaticvoidmain(Stringargs)Filepath1=newFile(image);Filepath2=newFile(db/txt.dat);Filepath3=newFile(./image);if(path1.exists()System.out.println(image存在);elseSystem.out.println(image不存在);,楚雄师范学院计算机科学系java程序设计课程,95/138,7.6文件类File,if(path2.exists()System.out.println(db/txt.dat存在);elseSystem.out.println(db/txt.dat不存在);if(path3.exists()System.out.println(./image存在);elseSystem.out.println(./image不存在);,楚雄师范学院计算机科学系java程序设计课程,96/138,7.6文件类File,我们在存在或不存在上述文件或目录中运行该程序后知道:1)File类并不是用来在存储设备中创建文件的,而是创建一个与存储设备中文件相关联的文件对象,通过文件对象来处理存储设备中文件;2)在创建文件对象时,不管其对应的关联文件是否存在,该创建都不受影响;3)创建的文件对象所关联的文件既可以是普通文件,也可以是目录,这一点File类是通过是否有扩展名来判断的。如图示:,楚雄师范学院计算机科学系java程序设计课程,97/138,7.6文件类File,楚雄师范学院计算机科学系java程序设计课程,98/138,7.6文件类File,2)创建文件对象方法2publicFile(String,String)功能:在下为创建一个文件对象,可以是文件,也可以是目录。例如:importjava.io.File;publicclassTestPath2publicstaticvoidmain(Stringargs)Filepath1=newFile(image,src);Filepath2=newFile(db,bin/txt.dat);Filepath3=newFile(./image,db);,楚雄师范学院计算机科学系java程序设计课程,99/138,7.6文件类File,if(path1.exists()System.out.println(imagesrc存在);elseSystem.out.println(imagesrc不存在);if(path2.exists()System.out.println(dbbintxt.dat存在);elseSystem.out.println(dbbintxt.dat不存在);,楚雄师范学院计算机科学系java程序设计课程,100/138,7.6文件类File,if(path3.exists()System.out.println(.imagedb存在);elseSystem.out.println(.imagedb不存在);,楚雄师范学院计算机科学系java程序设计课程,101/138,7.6文件类File,3)创建文件对象方法3publicFile(File,String)功能:在下为创建一个文件对象,可以是文件,也可以是目录。其中父目录是通过另一个文件对象来指明的。例如:(当前目录为mainbook)importjava.io.File;publicclassTestPath3publicstaticvoidmain(Stringargs)Filepath1=newFile(./image,src);Filepath2=newFile(path1,bin/txt.dat);,楚雄师范学院计算机科学系java程序设计课程,102/138,7.6文件类File,if(path1.exists()System.out.println(.imagesrc存在);elseSystem.out.println(.imagesrc不存在);if(path2.exists()System.out.println(.imagesrcbintxt.dat存在);elseSystem.out.println(.imagesrcbintxt.dat不存在);,楚雄师范学院计算机科学系java程序设计课程,103/138,7.6文件类File,楚雄师范学院计算机科学系java程序设计课程,104/138,7.6文件类File,楚雄师范学院计算机科学系java程序设计课程,105/138,7.6文件类File,二、获取文件对象属性等方法File类提供一些方法,用于判断文件对象的一些状态属性。1)判断与该文件对象关联的文件或目录是否存在publicbooleanexists()功能:判断该文件对象关联的文件或目录是否存在,若存在则返回true,否则返回false。,楚雄师范学院计算机科学系java程序设计课程,106/138,7.6文件类File,2)判断与该文件对象关联的是否是目录publicbooleanisDirectory()功能:判断该文件对象关联的是否是目录,若是则返回true,否则返回false。3)判断与该文件对象关联的是否是文件publicbooleanisFile()功能:判断该文件对象关联的是否是文件,若是则返回true,否则返回false。,楚雄师范学院计算机科学系ja
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东省紫金县2026届化学高一第一学期期末调研模拟试题含解析
- 情景转述课件
- 2026届山东省莒县第二中学实验班化学高一上期中质量检测试题含解析
- 威海市重点中学2026届高二化学第一学期期中复习检测模拟试题含解析
- 园林绿化个人年度工作方案
- 医院医生年度工作方案
- 成功的茶叶营销策划方案
- 社区三八妇女节活动方案
- 识字试卷测试题及答案
- 鼻肠管留置操作流程
- 工作总结及工作思路(输电运维班)
- 气管及支气管内插管
- Unit 14 I remember meeting all of you in Grade 7(大单元教材分析)教学课件 人教新目标九年级英语全册
- 2025年高处吊篮安装拆卸工(建筑特殊工种)证考试题库
- 2025年新云南会计灵活用工协议书
- 2024年扬州市辅警真题
- 2025内蒙古森工集团招聘工勤技能人员3100人笔试参考题库附带答案详解析集合
- 登销记以及运统46系统运用21课件
- 河蟹的营养需要与饲料优化技术
- GHTF—质量管理体系--过程验证指南中文版
- 数学用表A4(锐角三角函数)
评论
0/150
提交评论