System.out.println(\}
public static void main(String[] args) { OverrideTest test = new OverrideTest1(); try { test.fun(); test.fun1(); }
catch(Exception e) { } } }
class OverrideTest1 extends OverrideTest{ // 以下正常Override
public void fun() throws TestException2 { System.out.println(\}
// 不能Override父类中的方法,因为它定义了不同的异常类型和 // 返回值。
//public int fun() throws TestException1 { // System.out.println(\// return 1; //}
// 不能Override父类中的方法,因为它抛出了比父类中非法范围 // 更大的异常。
//public void fun() throws Exception { // System.out.println(\//}
// 这个方法并没有Override父类中的fun1方法,因为这个方法在 // 父类是private类型,所以这里只是相当于定义了一个新方法。 public void fun1() {
System.out.println(\} }
class TestException extends Exception{ public TestException(String msg) { super(msg); } }
class TestException1 extends TestException { public TestException1(String msg) { super(msg); } }
class TestException2 extends TestException { public TestException2(String msg) { super(msg); } }
2、实验步骤:
①编译并运行SimpleInheritance.java,观察并记录结果。 参考输出结果: Contents of superOb: i and j: 10 20 Contents of subOb: i and j: 7 8 k: 9
Sum of i, j and k in subOb: i+j+k: 24
②编译并运行OverloadTest.java,观察并记录结果。 ③编译并运行OverrideTest.java,观察并记录结果。 ④尝试编辑、编译、运行课本上的其他程序。 ⑤编写实验报告
根据以下的实验报告要求,完成并提交实验报告。
实验四:字符串与异常处理应用程序的设计
一 实验目的
1、 掌握java字符串处理方法。 2、 掌握java自定义异常和处理。
3、 通过实验,对Java程序的开发有一个深入了解。 二 实验原理
Java中将字符串作为String类型对象来处理。当创建一个String对象时,被创建的字符串是不能被改变的。每次需要改变字符串时都要创建一个新的String对象来保存新的内容。原始的字符串不变。之所以采用这种方法是因为实现固定的,不可变的字符串比实现可变的字符串更高效。对于那些想得到改变的字符串的情况,有一个叫做StringBuffer的String类的友类,它的对象包含了在创建之后可以改变的字符串。
String类和StringBuffer类都在java.lang中定义。因此它们可以自动的被所有程序使用。两者均被说明为final,这意味着两者均不含子类。
异常是在程序运行过程中发生的异常事件,比如除0溢出、数组越界、文件找不到等,这些事件的发生将阻止程序的正常运行。为了加强程序的鲁棒性,程序设计时,必须考虑到可能发生的异常事件并做出相应的处理。Java通过面向对象的方法来处理异常。在一个方法的运行过程中,如果发生了异常,则这个方法生成代表该异常的一个对象,并把它交给运行时系统,运行时系统寻找相应的代码来处理这一异常。我们把生成异常对象并把它提交给运行时系统的过程称为抛弃(throw)一个异常。运行时系统在方法的调用栈中查找,从生成异常的方法开始进行回朔,直到找到包含相应异常处理的方法为止,这一个过程称为捕获(catch)一个异常。
try-catch-finally程序块的执行流程以及执行结果分析: 首先执行的是try语句块中的语句,这时可能会有以下三种情况:
1.如果try块中所有语句正常执行完毕,那么finally块的居于就会被执行,这时分为以下两种情况:
1.1如果finally块执行顺利,那么整个try-catch-finally程序块正常完成。 1.2如果finally块由于原因R突然中止,那么try-catch-finally程序块的结局是“由于原因R突然中止(completes abruptly)”
2.如果try语句块在执行过程中碰到异常V,这时又分为两种情况进行处理: 2.1如果异常V能够被与try相应的catch块catch到,那么第一个catch到这个异常的catch块(也是离try最近的一个与异常V匹配的catch块)将被执行;这时就会有两种执行结果:
2.1.1如果catch块执行正常,那么finally块将会被执行,这时分为两种情况: 2.1.1.1如果finally块执行顺利,那么整个try-catch-finally程序块正常完成。 2.1.1.2如果finally块由于原因R突然中止,那么try-catch-finally程序块的结局是“由于原因R突然中止(completes abruptly)”
2.1.2 如果catch块由于原因R突然中止,那么finally模块将被执行,分为两种情况: 2.1.2.1 如果如果finally块执行顺利,那么整个try-catch-finally程序块的结局是“由于原因R突然中止(completes abruptly)”。
2.1.2.2 如果finally块由于原因S突然中止,那么整个try-catch-finally程序块的结局是“由于原因S突然中止(completes abruptly)”,原因R将被抛弃。
2.2如果异常V没有catch块与之匹配,那么finally模块将被执行,分为两种情况: 2.2.1如果finally块执行顺利,那么整个try-catch-finally程序块的结局就是“由于抛出异常V而突然中止(completes abruptly)”。
2.2.2如果finally块由于原因S突然中止,那么整个try-catch-finally程序块的结局是“由于原因S突然中止(completes abruptly)”,异常V将被抛弃。
3.如果try由于其他原因R突然中止(completes abruptly),那么finally块被执行,分为两种情况:
3.1 如果finally块执行顺利,那么整个try-catch-finally程序块的结局是“由于原因R突然中止(completes abruptly)”。
3.2 如果finally块由于原因S突然中止,那么整个try-catch-finally程序块的结局是“由于原因S突然中止(completes abruptly)”,原因R将被抛弃。 三 实验环境
运行Windows的PC机,已经安装JDK 四 实验内容和步骤 1、实验内容:
①String构造函数。
查看相关api文档,阅读以下程序: public class SubStringConv{ }
②熟悉字符串的访问方法: 类String中提供的方法:
◇ public int length() 此方法返回字符串的字符个数
◇ public char charAt(int index) 此方法返回字符串中index位置上的字符,其中index 值的 范围是0~length-1
◇ public int indexOf(int ch) public lastIndexOf(in ch)
返回字符ch在字符串中出现的第一个和最后一个的位置 ◇ public int indexOf(String str) public int lastIndexOf(String str)
返回子串str中第一个字符在字符串中出现的第一个和最后一个的位置 ◇ public int indexOf(int ch,int fromIndex)
public static void main(String[] args){ }
byte ascii[]={65,66,67,68,69,70}; String s1=new String(ascii); System.out.println(s1);
String s2=new String(ascii,2,3); System.out.println(s2);
public lastIndexOf(in ch ,int fromIndex)
返回字符ch在字符串中位置fromIndex以后出现的第一个和最后一个的位置 ◇ public int indexOf(String str,int fromIndex) public int lastIndexOf(String str,int fromIndex)
返回子串str中的第一个字符在字符串中位置fromIndex后出现的第一个和最后一个的位置。
◇ public void getchars(int srcbegin,int end ,char buf[],int dstbegin)
srcbegin 为要提取的第一个字符在源串中的位置, end为要提取的最后一个字符在源串中的位置,字符数组buf[]存放目的字符串, dstbegin 为提取的字符串在目的串中的起始位置。
◇public void getBytes(int srcBegin, int srcEnd,byte[] dst, int dstBegin) 参数及用法同上,只是串中的字符均用8位表示。
类StringBuffer提供了 length( )、charAt( )、getChars( )、capacity()等方法。 方法capacity()用来得到字符串缓冲区的容量,它与方法length()所返回的值通常是不同的。
③熟悉修改字符串的方法: String类提供的方法:
◇ public String contat(String str);
用来将当前字符串对象与给定字符串str连接起来。 ◇ public String replace(char oldChar,char newChar); 用来把串中出现的所有特定字符替换成指定字符以生成新串。 ◇ public String substring(int beginIndex);
public String substring(int beginIndex,int endIndex); 用来得到字符串中指定范围内的子串。 ◇ public String toLowerCase(); 把串中所有的字符变成小写。 ◇ public String toUpperCase(); 把串中所有的字符变成大写。 StringBuffer类提供的方法:
在这些方法中,如果操作后的字符超出已分配的缓冲区,则系统会自动为它分配额外的空间。
◇ public synchronized StringBuffer append(String str); 用来在已有字符串末尾添加一个字符串str。
◇ public synchronized StringBuffer insert(int offset, String str); 用来在字符串的索引offset位置处插入字符串str。
◇ public synchronized void setCharAt(int index,char ch); 用来设置指定索引index位置的字符值。
注意:String中对字符串的操作不是对源操作串对象本身进行的,而是对新生成的一个源操作串对象的拷贝进行的,其操作的结果不影响源串。
相反,StringBuffer中对字符串的连接操作是对源串本身进行的,操作之后源串的值发生了变化,变成连接后的串。
④熟悉字符串的其它操作 1.字符串的比较
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库java实验1-8(3)在线全文阅读。
相关推荐: