System.out.println(args[i]);
}
}
/*运行时输入“javaC7_7HelloWorldLet'sJava!
”命令,则有如下的结果:
Hello
World
Let's
Java!
*/
案例3:
//StringBuffer类的测试缓冲区长度的方法
publicclassC8_3
{
publicstaticvoidmain(String[]args)
{
StringBufferbuf1=newStringBuffer();//创建一个空字符串缓冲区
//指定初始长度为16创建一个空字符串缓冲区
StringBufferbuf2=newStringBuffer(10);
//用指定的"hello"串创建一个字符串缓冲区
StringBufferbuf3=newStringBuffer("hello");
//返回当前字符串长度
intlen1=buf1.length();
intlen2=buf2.length();
intlen3=buf3.length();
//返回当前缓冲区长度
intle1=buf1.capacity();
intle2=buf2.capacity();
intle3=buf3.capacity();
//从buf3字符串中取下标为3的字符
charch=buf3.charAt(3);
//使用StringBuffer的toString方法将三个StringBuffer
//对象转换成String对象输出
System.out.println("buf1="+buf1.toString());
System.out.println("buf2="+buf2.toString());
System.out.println("buf3="+buf3.toString());
System.out.println("len1="+len1+"\tlen2="+len2+"\tlen3="+len3);
System.out.println("le1="+le1+"\tle2="+le2+"\tle3="+le3);
System.out.println("ch="+ch);
}
}
/*运行结果:
buf1=
buf2=
buf3=hello
len1=0len2=0len3=5
le1=16le2=10le3=21
ch=l
*/
案例4:
//应用Math类的方法
publicclassC8_4
{publicstaticvoidmain(String[]args)
{doublea=2,b=3;
doublez1=Math.pow(a,b);//引用Math类的pow方法求a的b次方
doublez2=Math.sqrt(9);//引用Math类的sqrt方法求9的平方根
System.out.print("z1="+z1);
System.out.println("\tz2="+z2);
}
}
//程序的运行结果为:
z1=8.0z2=3.0
案例5:
//catch的匹配按书写顺序,满足一个catch后不再管后面的catch。
classAnnoyanceextendsException{}
classSneezeextendsAnnoyance{}
publicclassC9_1{
publicstaticvoidmain(String[]args){
try{
thrownewSneeze();
}catch(Annoyancea){
System.out.println(“catchAnnoyance”);
}catch(Sneezes){
System.out.println(“catchSneeze”);
}
}
//输出结果为catchannoyance
案例6:
//异常处理中getMessage()、toString()、printStackTrace()3个方法的返回值
publicclassC9_2{
publicstaticvoidmain(String[]args){
try{thrownewException(“HereismyException”):
}catch(Exceptione){
System.out.println(“caughtException”);
System.out.println(“e.getMessage()”+e.getMessage());
System.out.println(“e.toString()”+e.toString());
System.out.println(“e.printStackTrace()”+e.e.printStackTrace());
}
}
}
/*运行结果:
caughexception
e.getMessage():
HereismyException
e.toString():
java.lang.Exception:
HereismyException
e.printStackTrace():
java.lang.Exception;HereismyExceptionatExceptionMethods.main(ExceptionMethods.java:
7)
*/
案例7:
//使用嵌套的try-catch-finally语句自行处理异常。
publicclassC9_3
{
staticinta,b,c;
publicstaticvoidmain(Stringargs[])
{
try
{a=10;
b=0;
try
{c=a/b;
System.out.println("a/b="+c);
}
catch(IndexOutOfBoundsExceptionE)
{System.out.println("捕捉超出索引异常...");}
finally
{
System.out.println("嵌套内层的finally区块");
}
}
catch(ArithmeticExceptionE)
{System.out.println("捕捉数学运算异常:
b="+b);}
finally
{System.out.println("嵌套外层的finally区块");
if(b==0)
System.out.println("程序执行发生异常!
");
else
System.out.println("程序正常执行完毕!
");
}
}
}
/*运行结果:
嵌套内层的finally区块
捕捉数学运算异常:
b=0
嵌套外层的finally区块
程序执行发生异常!
*/
案例8:
//使用Throw语句抛出异常。
publicclassC9_4
{
publicstaticvoidmain(String[]args)
{
try
{
thrownewNullPointerException("自编异常");
}
catch(NullPointerExceptione)
{
System.out.println("exception:
"+e);
}
}
}
//运行结果:
Exception:
java.lang.NullPointerException:
自编异常
案例9:
//使用Throws语句抛出异常。
importjava.awt.*;
importjava.applet.*;
publicclassC9_5extendsApplet
{
staticvoidthrowOne()throwsIllegalAccessException
{thrownewIllegalAccessException("自编异常");}
publicvoidpaint(Graphicsg)
{
try{throwOne();}
catch(IllegalAccessExceptione)
{g.drawString("发生异常:
"+e,20,20);}
}
}
//运行结果:
发生异常:
java.lang.IllegalAccessException:
自编异常
案例10:
//键盘输入数据的读取。
importjava.io.*;
publicclassC9_6
{
publicstaticvoidmain(Stringargs[])
{
intcount;byteb[]=newbyte[256];
Stringstr;
DataInputStreamdin=newDataInputStream(System.in);
BufferedInputStreamin=newBufferedInputStream(din);
try{
if(in.markSupported())//判断当前输入流是否支持mark和reset方法
{
System.out.println("支持mark");
System.out.print("输入字符串,按Enter结束");
in.mark(256);//在输入流的当前位置上设置标记,并保留256位
//读键盘输入的数据存入b数组,该方法返回实际读入的字节数给count
count=in.read(b);
System.out.println("读入字符数:
"+count);
str=newString(b,0,count);//将b数组转换为字符串
System.out.print("输入的字符串为:
"+str);
in.reset();//重新回到标记处读取数据
in.read(b,0,2);//读前两个字符
str=newString(b,0,2);
System.out.println("字符串的前两个:
"+str);
in.reset();in.skip(count/2);
in.read(b,0,count/2);
str=newString(b,0,count/2);
System.out.println("字符串的后半段:
"+str);
}
else
{
System.out.println("不支持mark");
}
din.close();
in.close();
}
catch(IOExceptionE)
{
System.out.println("发生I/O错误!
");
}
}
}
/*运行结果如下:
支持mark
输入字符串,按Enter结束123456789
读入字符数:
11
输入的字符串为:
123456789
字符串的前两个:
12
字符串的后半段:
6789
*/
案例11:
//从键盘读入字符串写入屏幕。
importjava.io.*;
publicclassC9_7
{
publicstaticvoidmain(Stringargs[])
{intcount;
byteb[]=newbyte[256];
Stringstr;
BufferedInputStreamin=newBufferedInputStream(System.in);//键盘读入
DataOutputStreamstdout=newDataOutputStream(System.out);//屏幕输出
BufferedOutputStreamout=newBufferedOutputStream(stdout);
PrintStreamp=newPrintStream(System.out);//屏幕输出
try
{if(in.markSupported())
{
p.println("支持mark");//使用PrintStream输出到屏幕
p.print("输入字符串,请按Enter结束");
in.mark(256);
count=in.read(b);
p.println("读入字符数:
"+count);
p.print("输入的字符串为:
");
//将数组b[]中从0位置开始的count长度的字节写到缓冲流缓冲区中
out.write(b,0,count);
out.flush();//将缓冲流缓冲区中的数据输出到屏幕上
}
else
{System.out.println("不支持mark");}
p.close();
in.close();
stdout.close();
out.close();
}
catch(IOExceptionE)
{System.out.println("发生I/O错误!
");}
}
/*运行结果如下:
支持mark
输入字符串,请按Enter结束123456789
读入字符数:
11
输入的字符串为:
123456789
*/
案例12:
/*利用InputStreamReader类、BufferedReader类、OutputStreamWriter类实现从键盘输入字符串,再输出到屏幕上。
利用CharArrayReader类、CharArrayWriter类实现存储器读/写操作。
*/
importjava.io.*;
publicclassC9_8
{
publicstaticvoidmain(Stringargs[])
{
charc1[],c2[],temp;
Stringstr;
CharArrayReadercin;
CharArrayWritercout;
InputStreamReadersin=newInputStreamReader(System.in);//键盘输入
BufferedReaderin=newBufferedReader(sin);
OutputStreamWriterout=newOutputStreamWriter(System.out);//屏幕输出
try
{System.out.print("请输入一个字符串,请按Enter结束");
str=in.readLine();//读入字符串
c1=str.toCharArray();//将字符串转换成字符数组
cin=newCharArrayReader(c1);
cout=newCharArrayWriter();
while(cin.ready())//写入c1的内容到CharArrayWriter中
{cout.write(cin.read());}
System.out.print("c2=");
c2=cout.toCharArray();//将CharArrayWriter的内容输出到c2中
System.out.print(newString(c2));
System.out.print("\n直接由CharArray输出:
");
cout.writeTo(out);//输出到OutputStreamWriter
out.flush();//OutputStreamWriter强制输出到屏幕
}
catch(IOExceptionE)
{
System.out.println("I/O错误!
");
}
}
}
/*运行结果如下:
请输入一个字符串,请按Enter结束12345abc
c2=12345abc
直接由CharArray输出:
12345abc
*/
案例13:
//获取文件的文件名、长度、大小等特性。
importjava.io.*;
importjava.util.*;
publicclassC9_9
{publicstaticvoidmain(Stringargs[])
{
StringPath;
InputStreamReaderdin=newInputStreamReader(System.in);//键盘输入
BufferedReaderin=newBufferedReader(din);
try{
System.out.print("请输入相对或绝对路径:
");
Path=in.readLine();//读取输入
Filef=newFile(Path);
System.out.println("路径:
"+f.getParent());
System.out.println("档案:
"+f.getName());
System.out.println("绝对路径:
"+f.getAbsolutePath());
System.out.println("文件大小:
"+f.length());
System.out.println("是否为文件:
"+(f.isFile()?
"是":
"否"));
System.out.println("是否为目录:
"+(f.isDirectory()?
"是":
"否"));
System.out.println("是否为隐藏:
"+(f.isHidden()?
"是":
"否"));
System.out.println("是否可读取:
"+(f.canRead()?
"是":
"否"));
System.out.println("是否可写入:
"+(f.canWrite()?
"是":
"否"));
System.out.println("最后修改时间:
"+newDate(f.lastModified()));
}
catch(IOExceptionE)
{System.out.println("I/O错误!
");}
}
}
/*运行结果如下:
请输入相对或绝对路径:
C9_9.java
路径:
null
档案:
C9_9.java
绝对路径:
f:
\javapro\C9_9.java
文件大小:
1461
是否为文件:
是
是否为目录:
否
是否为隐藏:
否
是否可读取:
是
是否可写入:
是
最后修改时间:
MonMay0116:
41:
44CMT+08:
002006
*/
案例14:
/*直接利用FileInputStream类和FileOutputStream类完成从键盘读入数据写入文件中,
再从写入的文件中读出数据打印到屏幕上的操作。
*/
importjava.io.*;
publicclassC9_10
{
publicstaticvoidmain(String[]args)
{
charc;
intc1;
FilefilePath=newFile("temp");//在当前目录下建目录,也可用绝对目录
if(!
filePath.exists())filePath.mkdir();//若目录不存在,则建之
Filefl=newFile(filePath,"d1.txt");//在指定目录下建文件类对象
try{
FileOutputStreamfout=newFileOutputStream(fl);
Sy