系统异常有两种一种是运行时异常,一种是普通异常,普通异常要求用户捕获或者抛出的,不补货或者抛出就会编译不通过。运行时异常编译可以通过,但是运行时才显露出来。
10.用户如何自定义异常编程实现一个用户自定义异常。 (1)定义mytest import .*; public class mytest{ private static int quotient(int number,int denominator)throws DivideByZeroException{ if(denominator==0)
throw new DivideByZeroException();
return(number/denominator);
}
public static void main(String args[]){
int number1=0,number2=0, result=0;
try{
\输入第一个数字:\
number1=()).intValue();
\输入第二个数字:\
number2=()).intValue();
result=quotient(number1,number2);
}
catch(NumberFormatException e){
(-1);
}
\
} }
(2)定义DivideByZeroException
public class DivideByZeroException extends ArithmeticException{ public DivideByZeroException(){ super(\除数不能为0!\
} }
(3)定义Keyboard import .*;
public class Keyboard{
static BufferedReader inputStream=new BufferedReader(new InputStreamReader);
public static int getInteger(){ try{
return ().trim()).intValue());
}catch(Exception e){
();
return 0;
}
}
public static String getString(){
try{
return());
}catch(IOException e){return \
}
}
第四章课后习题答案
1.子类将继承父类所有的属性和方法吗为什么
答:不,子类不能直接访问从父类中继承的私有属性及方法,但可以对公有及保护方法进行访问。 2.方法的覆盖与方法的重载有何不同
答:覆盖是运用在子类中实现与父类相同的功能,但采用不同的算法或公式;在名字相同的方法中,要做比父类更多的事情;在子类中需要取消从父类继承的方法。
3.声明两个带有无参构造方法的两个类A和B,声明A的子类C,并且声明B为C的一个成员,不声明C 的构造方法。编写测试代码,生成类C的实例对象,并观察结果。
明一个基类A,它只有一种非默认
构造方法;声明A的子类B,B具有默认方法及非默认方法,并在B的构造方法中调用基类A的构造方法。
明一个
类,它具有一种方法,此方法被重载三次,派生一个新类,并增加一种新的重载方法,编写测试类验证四种方法对于派生类验证四种方法对于派生类都有效。
明一个具有final方法的类,声明
一个派生类,并试图对这个方法进行重写,会有什么结果。
明一个final类,并试图声明其派生类,会有什么结果。
么是抽象类抽象类中是否一定要包括抽象方法
答:抽象类是一个不完全的类,不能使用new方法进行实例化。 抽象类可以包含抽象方法,也可以不包含抽象方法,但有抽象方法的必须是抽象类。
和super分别有哪些特殊含义都有哪些种用法 答:this 表示当前类;super 表示调用父类。
在定义类的时候用到,this是当前对象的引用,super是当前对象的父类对象的引用,一般的都是把super用在构造函数中。
10.完成下面父类及子类的声明:
(1) 声明Student类属性包括学号、姓名、英语成绩、数学成绩、计算机成绩和总成绩。方法包括构造方法、get方法、 set方法、toString方法、equals方法、compare方法(比较两个学生的总成绩,结果分为大于、小于、等于),sum方法(计算总成绩)和testScore方法(计算评测成绩)。
注:评测成绩可以取三门课成绩的平均分,另外任何一门课的成绩的改变都需要对总成绩进行重新计算,因此,在每一个set方法中应调用sum方法计算总成绩。 public class Student{ String id; String name; float scoreOfenglish; float scoreOfmath; float scoreOfcomputer; float scoreOfsum; ;
public class test4_10{
public static void main(String args[]){
Student su=new Student(\苏轼\ Student du=new Student(\杜甫\ Student bai=new Student(\白居易\ Student liu=new Student(\柳宗元\ StudentXW ou=new StudentXW(\欧阳修\数学代表\ StudentXW
wang=new
StudentXW(\
王
安
石
\英语代表\
StudentBZ li=new StudentBZ(\李白\班长\
\评测成绩:\ \评测成绩:\ \评测成绩:\ \评测成绩:\ \评测成绩:\ \评测成绩:\
\评测成绩:\
} }
运行test4_10的结果如下:
(很好玩吧,李白,我让你挂科。)
11.包有什么作用如何创建包和引用包中的类
答:包是一种松散的类的组合,一般不要求处于同一包中的类型有明确的相互关系,但由于同一包中的类在默认情况下可以相互访问,所以为了方便编程和管理,通常把需要在一起工作的类放在一个包里。利用包来管理类,可实现类的共享与复用。
在操作系统中,目录用来组织文件,设置权限。只要在要用到包中类的时候,在该引用类的第一行加上:package (包的全路径)即可。第五章课后习题答案
1.什么是接口接口起什么作用接口与抽象类有何区别
答:Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。作用:接口是面向对象的一个重要机制,使用接口可以实现多态继承;接口中的所有方法都是抽象的,这些抽象方法由实现这一接口的不同类型来具体;接口还可以用来实现不同类之间的常量共享。与抽象类不同的是:接口允许在看起来不相干的类之间定义共同行为。
2.试编程证明接口中的属性都隐含为static及final,所有的方法都为public。
什么情况下,可以对父类对象的引用进行强制类型转换,使其转化成子类对象的引用
答:一个对象被塑型为父类或接口后,可以再一次被塑型回到它原来所属的类,即转化成原类对象的引用。
4.声明一个接口,此接口至少具有一个方法;在一个方法中声明内部类实现此接口,并返回此接口的引用。 uck().fuck();
}
}
运行结果:
5.声明一个具有内部类的类,此内部类只有一个非默认的构造方法;声明另外一个具有内部类的类,此内部类继承第一个内部类。 明一个具有两个方法的类,在第一个方法中调用第二个方法。声明此类的一个子类,并在子类中重写第二个方法。生成一个子类的对象,并将其塑型为基类,调用第一个方法,解释会发生什么
第4章习题10的基础上,声明测
试类完成对多态性的测试。
(1)在主方法中声明Student类的数组(含五个元素) (2)生成五个对象存入数组:其中三个Student类的对象、一个StudentXW类的对象、一个StudentBZ类的对象。
(3)将方法testScore()发送给数组的每一个元素,输出结果,并分析具体执行的是哪一个类中的方法。 ;
public class test5_8{
public static void main(String args[]){ Student student[]={ new Student(\苏轼\ new Student(\杜甫\ new Student(\白居易\ new StudentXW(\王安石
\英语代表\
new StudentBZ(\李白\
班长\
};
for(int i=0;i<5;i++)
{ \学生名字:\评测成绩:\
DecimalFormat(\
}
} }
运行结果:
在主函数定义student数组的五个对象 Student student[5]={ new Student(), new Student(), new Student(), new StudentXW(), new StudentBZ()
}中,输出时,第1、2、3个调用的是Student中的方法,第4个调用的是StudentXW的方法,第5个调用的是StudentBZ的方法。 第六章课后习题答案
1.将本章例6-1至6-18中出现的文件的构造方法均改为使用File类对象作为参数实现。
个人理解:File类只能对整文件性质进行处理,而没法通过自己直接使用()或者是()类似方法对文件内容进行写或者读取。注意:是直接;下面只提供一个例2变化,其他的你自己做,10几道啊,出这
题的人真他妈有病。 import .*;
public class test6_2{ public static void main(String[] args) throws IOException { String fileName = \; File writer=new File(fileName); ();
BufferedWriter input = new BufferedWriter(new FileWriter(writer));
(\);
(\); (\你还好吗\\n\); ();
}
}
运行结果:(电脑系统问题,没法换行,所以一般使用BuffereWriter中newLine()实现换行)
2.模仿文本文件复制的例题,编写对二进制文件进行复制的程序. ;
class CopyMaker {
String sourceName, destName; BufferedInputStream source; BufferedOutputStream dest; int line; opy(s1, s2)) } }
运行前的两个文本:和(为空)
\复制成功\); else \复制失败\);
\); } ;
private int count; private int Max; private int Min; }
public void startmemory(){
try{
FileWriter out=new FileWriter(name); int limit=Max-Min;
Random random = new Random(); for (int i=1;i<=count;i++){ ();
}catch(IOException iox){
\方法startmemory()有问题\); } }
int number=Min+(limit); (number+\ \); }
\
=n; =c; =min; =max;
public memory(String n,int c,int min,int max){
import class test6_3 {
运行后:
public static void main(String[] args) throws IOException{
3.创建一存储若干随机整数的文本文件,文件名、整数的个数及范围均由键盘输入。 ;
import class memory {
private String name;
时的多少。 ;
public class fileWriter {
别使用
FileWriter和BufferedWriter往文件中写入10万个随机数,比较用