第4章-Java语言与面向对象作业习题与答案
Java程序设计案例教程 习题答案 第4章 面向对象 下
第4章面向对象(下)一、填空题1. 12.重写3. final4. instanceof5. Implements6.编译时异常7. RuntimeException8.逗号二、判断题1.对2.对3.错4.对5.错6.对7.对8.错9.对10.错三、选择题1. B2. D3. D4. D5. B6. D7. C8. B9. B10.D11.C四、简答题1.抽象类和接口有如下区别:1)抽象类可以有构造方法,接口中不能有构造方法。
2)抽象类中可以有普通成员变量,接口中没有普通成员变量。
3)抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
4)抽象类中的抽象方法的访问类型可以是public, protected和(默认类型),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
5)抽象类中可以包含静态方法,接口中不能包含静态方法。
6)抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认为public static final类型。
7) 一个类可以实现多个接口,但只能继承一个抽象类。
2.在类的继承中需要注意的问题:1).在Java中,类只支持单继承,不允许多重继承,也就是说一个类只能有一个直接父类;2).多个类可以继承一个父类;3).在Java中,多层继承是可以的,即一个类的父类可以再去继承另外的父类;4).在Java中,子类和父类是一种相对概念,也就是说一个类是某个类父类的同时,也可以是另一个类的子类。
五、编程题1.Employee.java139//定义一个测试类140 public class Test{141public static void main(String[] args){142//声明一个Employee类型的数组,并创立不同子类型的对象143Employee [ ] employee = {new SalariedEmployee (“张三”,1,6000), newHourlyEmployee (“李四”,2,50,180) , new SalesEmployee (“王五” ,3, 6500,0・15),new BasePlusSalesEmployee(, 4,5000,0.15,2000)}; 144//打印每个员工的工资145for (int i = 0; i < employee.length ;i + + )146System.out.printin(Math.round(employee[i].getSalary(10)));147)148)。
《Java基础入门》_课后习题答案大一计算机专业4
《Java基础入门》课后习题答案第4章面向对象(下)一、填空题1、一个类如果实现一个接口,那么它就需要实现接口中定义的全部方法,否则该类就必须定义成抽象类。
2、一个类可以从其他的类派生出来。
派生出来的类称为子类、用于派生的类称为父类或者基类。
3、定义一个Java 类时。
如果前面加使用final 关键词修饰,那么该类不可以被继承。
4、在Java语言中,所有的类都直接或间接继承自Object 类5、一个Lambda 表达式由三个部分组成,分别为参数列表、“->”、表达式主体二、判断题1、错2、对3、错4、对5、错1.抽象方法必须定义在抽象类中,所以抽象类中的方法都是抽象方法。
(×)2. Java 中被final 关键字修饰的变量,不能被重新赋值。
(√)3.不存在继承关系的情况下,也可以实现方法重写。
(×)4.函数式接口在Java中是指有且仅有一个抽象方法的接口。
(√)5.接口中只能定义常量和抽象方法。
(×)三、选择题1、B2、ABC3、C4、C5、A1.在类的继承关系中,需要遵循以下哪个继承原则?(B)A.多重B.单一C.双重D.不能继承2.关于super关键字以下说法哪些是正确的?(多选)(ABC)A. super 关键字可以调用父类的构造方法B.super 关键字可以调用父类的普通方法C. super 与this 不能同时存在于同一个构造方法中D. super 与this 可以同时存在于同一个构造方法中3.类中的一个成员方法被下面哪个修饰符修饰,该方法只能在本类被访问?(C)A. publicB. protectedC. privateD. default4.在Java中,要想让一个类继承另一个类,可以使用以下哪个关键字?(C)A. inheritsB. implementsC.extendsD. modifies5.已知类的继承关系如下:class Employee;class Manager extends Employeer class Director extends Employee;则以下语句能通过编译的有哪些?(A)A.Employee e=new Manager();B. Direetor d=new Manager();B.C. Director d=new Employee(); D. Manager menew Director();四、简答题1.简述什么是方法重写2.简述什么是多态。
Java程序设计 第4章习题参考答案[2页]
第4章习题参考答案一、简答题1.Java提供了哪些数据类型,全部写出来。
整型:byte,short,int,long数值型浮点型:float,double基本数据类型字符型:char数据类型布尔型:boolean类:class复合数据类型字符串:String接口:interface2.如何进行数据类型的转换?有2种方式:自动类型转换:运算时,不同类型的数据先转换成同一类型后再参与运算,转换的原则是位数少的类型转换成位数多的类型,由系统自动处理。
强制类型转换:当位数多的类型向位数少的类型进行转换时,需要用户明确说明要转换的类型,需要用户在程序中指明。
3.类的修饰符有哪些?有什么区别?类的修饰符包括访问控制修饰符、静态修饰符static、最终说明符final。
访问控制修饰符包括4种类型:privat、default、protected、public。
用static声明的成员变量被视为类的成员变量,而不能当成实例对象的成员变量,也就是说,静态变量是类固有的,可以被直接引用,而其它成员变量声明后,只有生成对象时才能被引用。
4.public的类和abstract的类有什么不一样?public的类是公共类,可以被继续,可以实例化,可以被其他包访问。
abstract的类是抽象类,其中一定含有抽象方法,abstract class的子类在继承它时,对非抽象方法既可以直接继承,也可以覆盖;而对抽象方法,可以选择实现,也可以通过再次声明其方法为抽象的方式,无需实现,留给其子类来实现,但此类必须也声明为抽象类。
5.什么是最终类?如何声明?最终类不能被继承,也没有子类。
final类中的方法默认是final的。
final方法不能被子类的方法覆盖,但可以被继承。
final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
声明方法:final class ClassName。
二、操作题1.创建一个学生类Student,包括学号no、姓名name、年龄age、性别sex四个属性以及学习study、实践practice两个方法。
JAVA课后的答案第四章
第4章1.假定乘坐飞机时,每位顾客可以免费托运20kg以内的行李,超过部分按每公斤收费1.2元,以下是相应的计算收费程序。
该程序存在错误,请找出。
public class Test{public static void main(String[] args) throws IOException{float w,fee;//以下代码为通过控制台交互输入行李重量InputStreamReader reader=new InputStreamReader(System.in);BufferedReader input=new BufferedReader(reader);System.out.println("请输入旅客的行李重量:");String temp=input.readLine();w = Float.parseFloat(temp); //字符串转换为单精度浮点型fee = 0;if ( w > 20);fee = (float)1.2 * (w-20);System.out.println("该旅客需交纳的托运费用:"+fee+"元");}}缺少import java.io.*; 语句2.有一条长的阶梯,如果每步2阶,则最后剩1阶,每步3阶则剩2阶,每步5阶则剩4阶,每步6阶则剩5阶,只有每步7阶的最后才刚好走完,一阶不剩,问这条阶梯最少共有多少阶?找出以下求解程序的错误所在。
public class Test{ public static void main(String[] args){int i;while(i%2==1&&i%3==2&&i%5==4&&i%6==5&&i%7==0) {i++;}System.out.println("这条阶梯最少有:"+i+"阶");}}1)变量i应进行初始化。
047Java入门经典第4章课后习题答案
3
Java 入门经典第 4 章课后习题答案
4.7 习题
选择题
1.当编译和运行下列代码时会发生什么?( BE ) public class Test { public static void main(String[] args) { char myChar='c'; switch (myChar){ default: case'a': System.out.println("a"); break; case'b': System.out.println("b"); break; } } } A.switch 块非法,因为只能使用 int 类型作为参数 B.switch 块合法 C.switch 块非法,因为 default 必须放在块的结尾处 D.运行程序后,控制台无输出 E.运行程序后,控制台输出 a 2.当编译和运行下列代码时会发生什么?( BD ) public class Test { public static void main(String[] args) { int i=5; do { System.out.println(i); }while (--i>5); System.out.println("Finished"); } }
1Байду номын сангаас
A.6
B.5
C.4
D.Finished
3.当编译和运行下列代码后输出的结果是 Second,则 x 的取值范围是?( D ) public class Test { public static void main(String[] args) { int x=( if (x>0) System.out.println("First"); else if (x>-3) System.out.println("Second"); else System.out.println("Third"); } } A.x>0 B.x<=0 C.x<-3 D.x<=0 且 x>-3 4.当编译和运行下列代码时会发生什么?( C ) public class Test { public static void main(String[] args) { boolean flag=false; if(flag=true) { System.out.println("true"); }else{ System.out.println("false"); } } } A.编译错误 B.运行错误 C.输出 true D.输出 false 解析:注意 if(flag=true),若为 if(flag==true),则结果为 D 5. .当编译和运行下列代码时会发生什么?( C ) public class Test { public static void main(String[] args) { int total=0; for(int i=0;i>total;i++) { System.out.println(i); } System.out.println(total); } }
JAVA语言与面向对象程序设计课后章节习题答案
String s1 = in1.getText(); double d1 = Double.parseDouble( s1 ); String s2 = in2.getText(); double d2 = Double.parseDouble( s2 ); double result = d1 * d2; out.setText( d1 + "X" + d2 +"=" + result); } } } 2.Java 有哪些基本数据类型?写出 int 型所能表达的最大、最 小数据。 答:Java 中定义了 4 类/8 种基本数据类型: (1)逻辑型——boolean (2)整数型——byte, short, int, long (3)浮点数型——float, double (4)字符型——char 其中整型 int 占 4 个字节,其范围为-2147483648-2147483647。 3.Java 的字符采用何种编码方案?有何特点?写出五个常见的转 义符。 答:char(字符型)是用 Unicode 编码表达的字符,在内存中占两 个字节。由于 Java 的字符类型采用了一种新的国际标准编码方 案——Unicode 编码,这样便于东方字符和西方字符处理,这样
/doc/3c8e0230a88271fe910ef12d2 af90242a895ab8c.html 网站下载较新的版本,如 JDK1.5(也称 为 JDK5.0)。 JDK 文档也可以从网上下载。 3.编写一个 Java Application,利用 JDK 软件包中的工具编译 并运行这个程序,在屏幕上输出“Welcome to Java World!”。 答:见程序。 public class Ex2_3 { public static void main(String[] args) { System.out.println("Welcom to java vorld"); } } 4.编写一个 Java Applet,使之能够在浏览器中显示“Welcome to Java Applet World!”的字符串信息。 答:见程序。import java.awt.*; import java.applet.*; public class Ex2_4 extends Applet { //an applet public void paint(Graphics g){ g.drawString ("Welcome to Java Applet World!",20,20); }
《Java基础入门》课后章节习题及答案(完整版)
《Java基础入门》课后章节习题及答案(完整版)《Java基础入门》课后习题第1章Java开发入门一、填空题1、Java的三大体系分别是_JavaSE_____、_JavaEE_____、_JavaME_____。
2、Java程序的运行环境简称之为JRE_____。
3、编译Java程序需要使用_javac_____命令。
4、javac.exe和java.exe两个可执行程序存放在JDK安装目录的bin______目录下。
5、path______环境变量用来存储Java的编译和运行工具所在的路径,而_classpath_____环境变量则用来保存保存Java虚拟机要运行的“.class”文件路径。
二、选择题1、以下选项中,哪些属于JDK工具?(多选)ABCDA、Java编译器B、Java运行工具C、Java文档生成工具D、Java打包工具2、Java属于以下哪种语言?CA、机器语言B、汇编语言C、高级语言D、以上都不对3、下面哪种类型的文件可以在Java虚拟机中运行?DA、.javaB、.jreC、.exeD、.class4、安装好JDK后,在其bin目录下有许多exe可执行文件,其中java.exe命令的作用是以下哪一种?BA、Java文档制作工具B、Java解释器C、Java编译器D、Java启动器5、如果jdk的安装路径为:d:\jdk,若想在命令窗口中任何当前路径下,都可以直接使用javac和java命令,需要将环境变量path设置为以下哪个选项?B A.d:\jdk; B.d :\jdk\bin; C.d:\jre\bin; D.d:\jre;三、问答题1、简述Java的特点。
面向对象、跨平台性、健壮性、安全性、可移植性、多线程性、动态性等。
2、简述JRE与JDK的区别。
JRE(Java Runtime Environment,Java运行时环境),它相当于操作系统部分,提供了Java程序运行时所需要的基本条件和许多Java基础类,例如,IO类、GUI控件类、网络类等。
Java语言程序设计 课后习题+答案
第一章课后习题1.编译Java程序的命令是什么?2.执行Java程序的命令是什么?3.Java应用程序和小程序的区别是什么?4.编写一个application ,实现在屏幕上打印自己名字的功能。
第一章课后习题答案1.编译Java程序的命令是什么?答案:javac 源文件名2.执行Java程序的命令是什么?java 主类名3.Java应用程序和小程序的区别是什么?Java application⏹由Java解释器独立运行字节码⏹由专门的命令行启动程序执行⏹程序中有定义了main()方法的主类Java applet⏹不能独立运行,字节码必须嵌入HTML文档⏹当浏览器调用含applet的Web页面时执行⏹程序中含有java. applet. Applet 类的子类4.编写一个application ,实现在屏幕上打印自己名字的功能。
class Test{public static void main(String[] args){System.out.println(“张三”);}}第二章课后习题(1)一、选择题1.下列变量定义错误的是。
A) int a; B) double b=4.5; C) boolean b=true; D)float f=9.8;2.下列数据类型的精度由高到低的顺序是:a)float,double,int,longb)double,float,int,bytec)byte,long,double,floatd)double,int,float,long3.执行完下列代码后,int a=3;char b='5';char c=(char)(a+b);c的值是?A)’8’ b)53 c)8 d)564.Unicode是一种_____________A) 数据类型 B)java包 C)字符编码 D)java类5.6+5%3+2的值是___________A)2 B)1 C) 9 D)106.下面的逻辑表达式中合法的是__________A)(7+8)&&(9-5) B)(9*5)||(9*7) C)9>6&&8<10 D)(9%4)&&(8*3) 7.java语言中,占用32位存储空间的是__________。
java面向对象试题及答案
java面向对象试题及答案1. 试题一题目:什么是面向对象编程?请简要描述面向对象编程的优势和特点。
答案:面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,将程序中的数据和操作数据的方法进行了封装,使得程序更加模块化和易于理解。
面向对象编程的主要特点包括封装、继承和多态。
封装使得数据和对数据的操作集中在一个对象中,可以隐藏内部实现细节,提供公共的接口进行访问,增加了程序的安全性和灵活性。
继承允许新建的类继承已有类的属性和方法,通过扩展和重写已有类的功能,减少了代码的重复性,提高了代码的复用和可维护性。
多态允许不同的对象对相同的消息作出不同的响应,通过接口和抽象类的使用,实现了更加灵活和可扩展的程序设计。
面向对象编程的优势包括了代码的重用性、可维护性、可扩展性和灵活性。
通过封装和继承的应用,可以减少代码重复,提高开发效率,并且通过多态的应用,可以实现程序的灵活性,方便后续的扩展和修改。
2. 试题二题目:什么是类?请简要描述类的特点和组成部分。
答案:类是面向对象编程中的核心概念,是对一类具有相同属性和行为的对象进行抽象和封装的模板。
类是用来创建对象的蓝图,可以通过实例化类来创建对象。
类的特点包括了封装、继承和多态。
类通过封装将属性和方法进行了封装,提供了公共的接口与外部进行交互,隐藏了内部实现细节。
继承允许新建的类继承已有类的属性和方法,在原有基础上进行修改和扩展。
多态允许不同的对象对相同的消息作出不同的响应,实现了程序的灵活性和可扩展性。
类的组成部分包括了属性(Field)和方法(Method)。
属性(也称为成员变量)用于描述对象的状态,可以是基本类型或其他类的对象。
方法用于描述对象的行为,可以是处理属性的操作,也可以是其他业务逻辑的实现。
3. 试题三题目:请简要解释传值和传引用的区别,并用代码示例说明。
答案:传值和传引用是在方法调用时,参数传递的两种方式。
java面向对象编程练习题答案
java面向对象编程练习题答案Java面向对象编程练习题答案Java面向对象编程是计算机科学中非常重要的一部分,它是一种编程范式,通过它可以更好地组织和管理代码。
在学习Java面向对象编程时,经常会遇到一些练习题,下面我们来看一些常见的练习题及其答案。
1. 编写一个Java类,实现一个简单的学生信息管理系统。
```javapublic class Student {private String name;private int age;private String gender;public Student(String name, int age, String gender) { = name;this.age = age;this.gender = gender;}public String getName() {return name;}public int getAge() {return age;}public String getGender() {return gender;}public void setName(String name) { = name;}public void setAge(int age) {this.age = age;}public void setGender(String gender) {this.gender = gender;}}```2. 编写一个Java类,实现一个简单的图书管理系统。
```javapublic class Book {private String title;private String author;private int year;public Book(String title, String author, int year) {this.title = title;this.author = author;this.year = year;}public String getTitle() {return title;}public String getAuthor() {return author;}public int getYear() {return year;}public void setTitle(String title) {this.title = title;}public void setAuthor(String author) { this.author = author;}public void setYear(int year) {this.year = year;}}3. 编写一个Java类,实现一个简单的汽车租赁系统。
java面向对象考题和答案
1.下面代码的输出结果是:public class Main {public static void main(String[] args) { int n = 100;int m = 200;System.out.println(f(n,m));System.out.println(n);}public static int f(int m, int n) {n = m+n;return n;}}A.300300B.100100C.300100D.1003002.程序执行的结果是:public class T est {public static void main(String[] args) {int x = 6;T est p = new T est();p.doStuff(x);System.out.println(" main:x = " + x);}void doStuff(int x) {System.out.println(" doStuff:x =" + x++); }}A.doStuff:x =7main:x = 7B.doStuff:x =7main:x = 6C.doStuff:x =6main:x = 7D.doStuff:x =6main:x = 63.下列关于JVM的存结构描述正确的是:A.类的各种信息在方法区中保存B.堆用于存放程序运行过程当中所有的局部变量C.栈用于存储使用new关键字创建的对象D.数组属于JVM的存结构4.下列代码的输出结果是:public class T est {public void print(char c) {System.out.println("c");}public void print(int i) {System.out.println("i");}public void print(double d) {System.out.println("d");}public void print(String s) {System.out.println("s");}public static void main(String[] args) {T est test=new T est();test.print('5');}}A.cB.iC.dD.s5.程序执行的结果是:public class T est {String name="T om";public T est(String name){name=name;}public static void main(String [] args){T est t = new T est("Jack");System.out.println();}}A.nullB.T omC.JackD." "6.关于构造方法,下列说法错误的是:A.构造方法不可以进行方法重写B.构造方法用来实例化一个新的对象C.构造方法具有和类名相同的名称D.构造方法不返回任何数据类型7.关于Java 中继承的特点,下列说确的是:A.使类的定义复杂化B.Java 只支持单继承,不可多继承,但可以通过实现接口来达到多继承的目的C.子类继承父类的所有成员变量和方法,包括父类的构造方法D.不可以多层继承,即一个类不可以继承另一个类的子类8.下列代码运行的结果是:class Foo {public int a;public Foo() {a = 3;}public void addFive() {a += 5;}}class Bar extends Foo {public int a;public Bar() {a = 8;}public void addFive() {this.a += 5;}}public class T estFoo {public static void main(String[] args) {Foo foo = new Bar();foo.addFive();System.out.println("Value: " + foo.a);}}A.Value: 3B.Value: 8C.Value: 13D.Value: 189.下列代码编译和运行的结果是:class Person {String name = "No name";public Person(String nm) {name = nm;}}class Employee extends Person {String empID = "0000";public Employee(String id) {empID = id;}}public class EmployeeT est {public static void main(String[] args) {Employee e = new Employee("4321");System.out.println(e.empID);}}A.输出:0000B.输出:4321C.代码public Employee(String id) {行,出现编译错误D.抛出运行时异常10.下列代码的运行结果是:public class Animal {public String noise() {return "peep";}public static void main(String[] args) {Animal animal = new Dog();Cat cat = (Cat)animal;System.out.println(cat.noise());}}class Dog extends Animal {public String noise() {return "bark";}}class Cat extends Animal {public String noise() {return "meow";}}A.peepB.barkC.meowD.抛出运行时异常11.下列代码编译和运行的结果是:public class A {public void start() {System.out.println("T estA");}}public class B extends A {public void start() {System.out.println("T estB");}public static void main(String[] args) {( (A) new B( ) ).start();}}A.输出:T estAB.输出:T estBC.输出:T estA T estBD.编译错误12.请看下列代码:class One {void foo() {}}class T wo extends One {// insert method here}下列选项中的代码,放置在<插入代码>处无编译错误的是:A.int foo() { /* more code here */ }B. protected void foo() { /* more code here */ }C. public void foo() { /* more code here */ }D. private void foo() { /* more code here */ }13.下列选项中,不属于Java 的访问修饰符的是:A.privateB.protectedC.friendlyD.public14.下列代码的输出结果是:class Foo {private int x;public Foo(int x) {this.x = x;}public void setX(int x) {this.x = x;}public int getX() {return x;}}public class Gamma {static Foo fooBar(Foo foo) {foo = new Foo(100);return foo;}public static void main(String[] args) {Foo foo = new Foo(300);System.out.print(foo.getX() + "-");Foo fooFoo = fooBar(foo);System.out.print(foo.getX() + "-");System.out.print(fooFoo.getX() + "-");foo = fooBar(fooFoo);System.out.print(foo.getX() + "-");System.out.print(fooFoo.getX());}}A.300-100-100-100-100B.300-300-100-100-100C.300-300-300-100-100D.300-300-300-300-10015.下列代码运行的结果是:public class Base {public static final String FOO = "foo";16.class Sub extends Base {public static final String FOO = "bar";}public static void main(String[] args) {Base b = new Base();Sub s = new Sub();System.out.print(Base.FOO);System.out.print(Sub.FOO);System.out.print(b.FOO);System.out.print(s.FOO);System.out.print(((Base) s).FOO);}}A.foofoofoofoofooB.foobarfoobarbarC.foobarfoofoofooD.foobarfoobarfoo16.关于下列代码说确的是:public class ItemT est {private final int id;public ItemT est(int id) {this.id = id;}public void updateId(int newId) {id = newId;}public static void main(String[] args) {ItemT est fa = new ItemT est(42);fa.updateId(69);System.out.println(fa.id);}}A.编译错误B.运行时抛出异常C.运行后,fa对象属性id的值没有改变,应然是42D.运行后,fa对象属性id的值改变成新的值6917.请看下列代码编译和运行的结果是:public class Student {private String name="sun";public static void main(String[] args) {Student[] students=new Student[2];System.out.println(students[0].name);System.out.println(students.length);}}A.sun 2B.null 2C.null 1D.运行时抛出NullPointerException异常18.下列代码的输出结果是:abstract class Vehicle {public int speed() {return 0;}}class Car extends Vehicle {public int speed() {return 60;}}class RaceCar extends Car {public int speed() {return 150;}}public class T estCar {public static void main(String[] args) {RaceCar racer = new RaceCar();Car car = new RaceCar();Vehicle vehicle = new RaceCar();System.out.println(racer.speed() + ", " + car.speed() + ", "+ vehicle.speed());}}A.0, 0,0B.150, 60, 0C.150, 150, 150D.抛出运行时异常19.请看下列代码:public abstract class Employee {protected abstract double getSalesAmount();public double getCommision() {return getSalesAmount() * 0.15;estA() {}}class Sales extends Employee {<插入代码>}在<插入代码>处填入的方确的是:A.double getSalesAmount() { return 1230.45; }B.public double getSalesAmount() { return 1230.45; }C.private double getSalesAmount() { return 1230.45; }D.protected double getSalesAmount() { return 1230.45; }20.关于下列代码说确的是:public interface A {public void doSomething(String thing);}public class AImpl implements A {public void doSomething(String msg) {}}public class B {public A doit() {return null;}public String execute() {return null;}}public class C extends B {public AImpl doit() {return null;}public Object execute() {return null;}}A. 所有类和接口都编译成功B.类B编译失败C.类Aimpl编译失败D.类C编译失败21.关于下列代码说确的是:interface A {public void aMethod();}interface B {public void bMethod();}interface C extends A, B {public void cMethod();}class D implements B {public void bMethod() {}}class E extends D implements C {public void aMethod() {}public void bMethod() {}public void cMethod() {}}A.编译失败B.如果定义D e = new E();, 那么e.bMethod();调用D类的bMethod()方法C.如果定义D e = (D)(new E());, 那么e.bMethod();调用D类的bMethod()方法D.如果定义D e = (D)(new E());, 那么e.bMethod();调用E类的bMethod()方法22.请看下列代码:public class UserRequest {public void request(ServletAction action) {action.doService();}public static void main(String[] args) {UserRequest user = new UserRequest();user.request(new ServletAction() {public void doService() {System.out.println("处理请求");}});}}如果上述代码采用回调模式编写,下列关于ServletAction的定义正确的是:A. public static class ServletAction {public void doService();}B.public final class ServletAction {public void doService();}C.public class ServletAction {public void doService();}D. public interface ServletAction {public void doService();}23.下列代码运行的结果是:public class Hello {String title;int value;public Hello() {title += "World";}public Hello(int value) {this.value = value;title = "Hello";}public static void main(String[] args) { Hello c = new Hello(5);System.out.println(c.title);}}A.HelloB. Hello WorldC. Hello World 5D.运行后无输出24.请看下列代码编译和运行的结果是:interface T estA {String toString();}public class T est {public static void main(String[] args) {System.out.println(new T estA() {public String toString() {return "test";}});}}A.输出:testB.输出:nullC.代码System.out.println(new T estA() {行,编译出错D.代码public String toString() {行,编译出错25.请看下列代码:1)public class Outer {2) void fn(int i) {3) class Inner {4) void print() {5) System.out.println(i);6) }7) }8) Inner in = new Inner();9) in.print();10) }11)}12)class T est {13) public static void main(String args[]){14) Outer out=new Outer();15) out.fn(100);16) }17)}关于上述代码说确的是:A.在第5行出现编译错误,fn方法的参数必须用final修饰B.在第3行出现编译错误,在方法的部不能写类C.在第8行出现编译错误,在方法的部不能实例化Inner类的对象D.运行代码,控制台输出1002,正确答案:D 3,正确答案:A 4,正确答案:A 5,正确答案:B6,正确答案:B 7,正确答案:B 8,正确答案:A 9,正确答案:C 10,正确答案:D11,正确答案:B 12,正确答案:BC 13,正确答案:C 14,正确答案:B 15,正确答案:D16,正确答案:A 17,正确答案:D 18,正确答案:C 19,正确答案:BD 20,正确答案:D22,正确答案:D 23,正确答案:A 24,正确答案:A 25,正确答案:A。
java作业(di4章课后)
Java作业,第四章课后习题
姓名:李雪松
1.举例说明类和对象的关系。
类的概念:类是具有相同属性和服务的一组对象的集合。
对象的概念:对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。
举例:比如说,一个人就是一对象,你怎么把一个你看好的人推荐给你们领导呢?当然是越详细越好了:首先,你会介绍这个人姓名、性别、年龄、身高、体重、电话、家庭住址等等。
比如这个人可以开车,会说英语,可以使用电脑等等
2.定义一个描述电话的类,至少描述电话类的两种属性和一种功能
4.什么是方法的重载,编写一个类,定义3个重载的方法,并编写该类的测试程序。
方法的重载就是,方法名称相同,参数的类型和个数不同,
5.举例说明类方法和实例方法以及类变量和实例变量的区别,。
《JAVA程序设计》期末复习 各章习题+ 参考答案
2.在 Java 语言中,( C )是最基本的元素?
(A)方法
(B)包
(C)对象
(D)接口
【解析】构成 Java 程序的基本元素类(抽象的对象)。
3.编译一个定义了 3 个类和 10 个方法的 Java 源文件后,
会产生( D )个字节码文件?扩展名是( D)?
(A)13 个字节码文件,扩展名为.class
D.-nowarn
12.下列标识符(名字)命名原则中,正确的是( C )。
A.类名的首字母小写 B.接口名的首字母小写
C.常量全部大写 D.变量名和方法名的首字母大写
13.下面哪种注释ຫໍສະໝຸດ 法能够支持 javadoc 命令?( C )
A.// B./*...*/ C./**...*/ D./**...**/
项是( A )。
(A)以 0 开头的整数代表 8 进制整型常量
(B)以 0x 或 0X 开头的整数代表 8 进制整型常量
(C)boolean 类型的数据作为类成员变量的时候,相同默
认的初始值为 true
(D)double 型数据占计算机存储的 32 位
8.下列 Java 语句中,不正确的一项是( C )。
【解析】bytel 类型变量的取值范围是-128~127。
11.下列表达式 1+2+ "aa"+3 的值是( B )。
(A)"12aa3" (B)"3aa3 " (C)"12aa" (D)"aa3"
【解析】整数和整数相加得到两个整数的和,而整数
和字符串相加得到的是字符串。
12.已知 y=2, z=3, n=4,则经过 n=n+ -y*z/n 运算后 n 的
java语言程序设计第4章-习题参考答案
第4章习题解答1.声明一个数组,保存一个学生的数学、语文、英语、物理、化学等课程的成绩,编写一个程序,计算5门课程的平均成绩,精确到0.1分,成绩值从键盘录入。
import java.util.Scanner;public class XT_1_score {public static void main(String[] args) {// TODO Auto-generated method stubdouble score[] = new double[5];System.out.println("请分别输入数学、语文、英语、物理、化学的成绩(数字之间用空格格开):");double sum = 0, average = 0;Scanner in = new Scanner(System.in);int i;for (i = 0; i < 5; i++)score[i] = in.nextDouble();for (i = 0; i < 5; i++)sum += score[i];average = sum / 5;System.out.println("平均成绩为:" + String.format("%.1f", average));}2.编程实现统计50名学生的百分制成绩中各分数段的学生人数,即:分别统计出100分、90-99分、80-89分、70-79分、60-69分、不及格的学生人数。
import java.util.Scanner;public class XT_2_score_sore {public static void main(String[] args) {// TODO Auto-generated method stubdouble score[] = new double[50];int a = 0, b = 0, c = 0, d = 0, e = 0, f = 0, i;System.out.println("请依次输入50名学生的成绩(用空格隔开):");Scanner br = new Scanner(System.in);for (i = 0; i < 50; i++)score[i] = br.nextDouble();for (i = 0; i < 50; i++) {if (score[i] == 100)a++;if (score[i] >= 90 && score[i] <= 99)b++;if (score[i] >= 80 && score[i] <= 89)c++;if (score[i] >= 70 && score[i] <= 79)d++;if (score[i] >= 60 && score[i] <= 69)e++;if (score[i] < 60)f++;}System.out.println("成绩为100分的个数:" + a);System.out.println("成绩为90-99分的个数:" + b);System.out.println("成绩为80-89分的个数:" + c);System.out.println("成绩为70-79分的个数:" + d);System.out.println("成绩为60-69分的个数:" + e);System.out.println("成绩为不及格的个数:" + f);}}3.编写一个程序,实现打印输出字符串数组中最大值和最小值。
java面向对象试题及答案
java面向对象试题及答案一、单选题(每题2分,共10分)1. 在Java中,下列哪个关键字用于定义一个类?A. classB. interfaceC. structD. enum答案:A2. Java中,哪个关键字用于定义一个私有方法?A. privateB. publicC. protectedD. default答案:A3. 下列哪个选项不是Java中的访问修饰符?A. privateB. publicC. protectedD. static答案:D4. 在Java中,哪个关键字用于实现多态?A. abstractB. finalC. staticD. interface答案:A5. 在Java中,下列哪个关键字用于定义一个接口?A. classB. interfaceC. structD. enum答案:B二、多选题(每题3分,共15分)1. 在Java中,下列哪些关键字用于定义一个类的方法?A. publicB. privateC. protectedD. static答案:A, B, C, D2. 下列哪些关键字用于实现类的继承?A. extendsB. implementsC. abstractD. final答案:A3. 在Java中,下列哪些关键字用于定义类的成员变量?A. privateB. publicC. protectedD. static答案:A, B, C, D4. 下列哪些关键字用于定义类的构造方法?A. constructorB. thisC. newD. super答案:B, D5. 在Java中,下列哪些关键字用于定义接口的常量?A. privateB. publicC. staticD. final答案:B, C, D三、判断题(每题2分,共10分)1. Java中,一个类可以继承多个类。
(错误)2. Java中,接口可以继承接口。
(正确)3. Java中,一个类可以继承多个接口。
《面向对象编程与设计(Java)》课后作业及参考解答
《面向对象编程与设计(Java)》课后作业及参考解答《面向对象编程与设计(Java)》课后作业及参考解答1.1.1第一周课程(9月4日)的课后作业及参考解答1、请用Java程序示例说明什么是面向过程的程序设计方法、什么是面向对象的程序设计方法?面向过程就是分析出所需要开发的应用的系统在解决某个问题时所需要的步骤和工作流程,然后用代码(当然应该把这些代码设计为各个函数或者过程)来表示这些步骤的具体实现——面向过程是以过程为中心的编程思想。
而面向对象是把构成问题的各个方面分解成各个对象,并用代码来实现对象之间的交互——面向对象是以事物为中心的编程思想。
(1)面向过程程序设计方法的示例#include "stdio.h"int add(int a, int b){//对数据的操作(方法或者函数)return a+b;}int main(){//数据(属性或者状态)int x=1, y=1;int sum=add(x,y);print("Sum=%d",sum);}面向过程程序的程序中的数据与方法是相互分离的!而面向对象程序中的数据与方法是相互组合在一起的。
当数据(也就是问题的属性或者状态)发生变化,需要修改大量的关联的方法的程序模块。
(2)面向对象程序设计方法的示例import java.io.*;public class Add{//数据(属性或者状态)private int sum;public int add(int a, int b){//对数据的操作(方法或者函数)sum=a+b;return sum;}public void showSum() {//对数据的操作(方法或者函数)System.out.println("Sum="+sum);}public static void main(String args[]){Add oneAdd=new Add();oneAdd.add(1,2);oneAdd.showSum();}}2、谈谈你对开源的理解(可以是任何方面的主题),你熟悉J2EE平台中的哪些开源框架、对这些开源框架的熟悉程度怎样(包括在项目中的具体应用)(1)开源软件1)开源软件一定是源代码开放,任何人可以免费使用,任何人可以再开发;2)开源同时也是一种商业运营手段,软件免费提供但服务收费。
解析java程序设计第四章课后答案
第4章习题解答1.类的继承的主要好处是什么?Java中支持类的多继承形式吗?继承是一种由已有的类创建新类的机制。
利用继承,我们可以先创建一个拥有共有属性的一般类,根据该一般类再创建具有特殊属性的新类,新类自动拥有一般类的属性和行为,并根据需要可以增加新的属性和行为,或者改变父类的行为。
类的继承的主要好处是代码复用。
Java不支持类的多继承形式。
2.解释一下方法重载和方法覆盖的概念,并对两者加以对比。
如果子类中定义方法所用的名称、返回类型和参数表和父类中方法所使用的完全一样,但具体实现不同,则称子类方法覆盖了父类中的方法。
在同一类中,如果方法名称相同,但参数表不同,则称为方法重载。
3.编写一个学生和教师的数据输入和显示程序。
学生数据有编号、姓名、班号和成绩,教师数据有编号、姓名、职称和部门。
要求将编号、姓名输入和显示设计成一个类Person,并作为学生类Student和教师类Teacher的父类。
import java.util.*;class Person{private String name;private int id;public void input(){Scanner sc=new Scanner(System.in);name=sc.nextLine();id=sc.nextInt();}public void display(){System.out.println("}}class Student extends Person{private int classNo;private int score;public void input(){super.input();Scanner sc=new Scanner(System.in);classNo=sc.nextInt();score=sc.nextInt();}public void display(){super.display();System.out.println("classNo="+classNo+" score="+score); }public static void main(String[] args){Student s=new Student();s.input();s.display();}}4.创建Animal(动物):Mouse,Dog等的一个继承分级结构。
java面向对象试题及答案
java面向对象试题及答案# Java面向对象试题及答案一、选择题1. 在Java中,以下哪个关键字用于定义类?- A. class- B. interface- C. enum- D. package答案:A2. 以下哪个是Java中的继承特性?- A. 一个类可以继承多个类- B. 类可以继承接口- C. 接口可以继承类- D. 接口可以继承多个接口答案:D3. 以下哪个是Java中封装的体现?- A. 使用public关键字- B. 使用private关键字- C. 使用static关键字- D. 使用final关键字答案:B4. 在Java中,哪个关键字用于实现多态?- A. abstract- B. final- C. override- D. implements答案:C5. 以下哪个是Java的构造方法的特点?- A. 可以有返回类型- B. 可以有多个同名的构造方法- C. 必须有返回类型- D. 必须与类名相同答案:D二、简答题1. 简述面向对象编程的三大特性,并给出Java中的例子。
面向对象编程的三大特性是封装、继承和多态。
- 封装:封装是将对象的实现细节隐藏起来,只暴露出一个可以被外界访问的接口。
例如,在Java中,可以通过使用private关键字来隐藏类的成员变量,只通过public方法来访问这些变量。
- 继承:继承允许新创建的类(子类)继承现有类(父类)的属性和方法。
例如,如果有一个`Animal`类,可以创建一个`Dog`类继承`Animal`类。
- 多态:多态允许同一个接口接受不同的数据类型。
在Java中,可以通过重写父类的方法来实现多态。
例如,`Animal`类有一个`makeSound()`方法,而`Dog`类可以重写这个方法来发出狗的叫声。
2. 解释Java中的接口和抽象类的区别。
接口和抽象类都是Java中实现抽象化的方式,但它们有以下区别: - 接口可以包含抽象方法和默认方法,但不能有具体实现。
JAVA程序设计各章习题及其答案
5、Java 语言特点是什么?
答:Java 是一种简单的面象对象的分布式的解释的健壮的安全的结构中立的可移植的 性能很优异的多线程的动态的语言。
A、变量d1,d2均初始化为4.0 B、变量d1没有初始化,d2初始化为4.0 C、变量d1,d2均未初始化 D、变量d2没有初始化,d1初始化为4.0 答:B 6. 判断题:所有的变量在使用前都必须进行初始化。( ) 答:正确。 7. 内部数据类型byte的取值范围是:( ) A、0~65, 535 B、(-128)~127 C、(-32,768)~32,767 D、(-256)~255 答:B 8. 下列哪些是不能通过编译的语句:( )
序应通过支持 Java 标准的浏览器(如 Microsoft Explorer)来解释运行。
4、安装 JDK 之后如何设置 JDK 系统的 PATH,CLASSPATH?他们的作用是什么? 答、更新系统 PATH 的方法随 Windows 版本不同而不同。对于 Windows 95/98,可以将
下列项目作为 C:\autoexec.bat 文件的最后一行: SET PATH = C:\j2sdk1.4.2\bin;%PATH% 当程序需要第三方的类库支持, 而且比较常用, 就可以采用此种方法.比如常用的数据
2、怎样区分应用程序和小应用程序?应用程序的主类和小应用程序的主类必须用 public 修 饰吗? 答:Java Application 是完整的程序,需要独立的解释器来解释运行;而 Java Applet 则是
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4章 Java语言与面向对象作业习题与答案一、简答题1.什么是对象?什么是类?对象是一种抽象数据类型。
它包含了事物的静态特征(属性)和动态特征(行为)两大特征。
类是一组同种对象的集合与抽象。
即是具有相同属性和方法的一组对象集合。
2.Java语言的单继承是指什么?一个类可以派生出多个子类,但子类只允许有一个父类,而不允许存在多个父类。
3.在一个共有类中的数据成员及方法成员的访问控制符为缺省,则这个类可供什么样的包引用?当一个类的访问控制符为public共有时,表明这个类作为整体对其它类是可见和可引用的;但其数据成员和方法成员访问控制符为缺省时,它们只能被包中类(含当前类)引用。
4.抽象类的用途(1)设计在更高的层次上进行,不考虑具体对象,从而大大简化了处理问题的复杂性;(2)设计出的类也具有更加良好的可扩展性。
5.什么是非静态的成员变量?非静态成员即为实例成员变量(没有加static修饰的变量)。
6.异常Exception和错误Error有什么不同?Java如何处理它们?答:错误通常是指程序本身存在非法情形,常常是因为代码存在问题而引起的,如造成系统崩溃、虚拟机粗错、动态失败等,这一类错误无法恢复或不可能捕获,并将导致应用程序中断。
异常表示另外一种“非同寻常”的错误。
这种错误通常是不可预测,但可以被捕获且可以恢复。
常见的异常情况包括存不足、找不到所需文件等。
对于错误,编程人员可以通过对程序进行更仔细的检查,以避免这种错误。
对于异常,可以使用捕获机制进行捕获,再编写出相应的处理程序。
7.简单述Java的异常处理机制。
答:Java采取“抛出—捕获”的方式,一旦一个异常想象产生,Runnable环境和应用程序会抛出各种标准类型和自己定义的异常,系统就可以捕获这些异常,并一定有相应的机制来处理它,确保不会产生司机、死循环或其它对操作系统的损害,从而保证了整个程序运行的安全性。
8.简单述throw语句和throws关键字之间的差别。
答:throw语句是在一个方法中用来直接抛出异常对象,其格式是:throw 异常对象;throws关键字是用一个方法声明首部,用来指出这个方法中可能产生若干种异常,其格式:[方法修饰符] 返回类型方法名(参数表)throws 异常类型表{ /*方法体*/ }二、填空题1.所有Java应用程序都必须包含的一个类方法是 main() 。
2.面向对象程序设计语言的三种重要特性是封装性、继承性和多态性。
3.方法重载与方法覆盖的不同有:方法重载是指允许在同一个类中定义多个同名方法,它们通过形参的个数或形参参数的类型来区别;方法覆盖是指在子类中重新定义了与父类中的方法同名的方法。
4.面向对象程序设计语言的多态的事项方法主要有三种:方法重载、方法覆盖和接口。
5.对象之间的信息通过消息传递机制来完成。
6.成员变量的修饰符有(写出6种)public, friendly, protected, private, final, static。
7.整个类共同拥有的方法是用static修饰的方法或叫类成员方法;它具有统计一个类的实例个数等用途。
8.引用父类中的成员用super;引用当前的类或对象用this。
9.在面向对象中,继承有两种含义,分别指在类的层次结构中,子类自动继承父类的特性和同一类的所有实例对象都具有所属类的特征。
10.在Java语言中,所有类都是Object类的子类。
11.多继承问题指的是一个类有多个父类问题;在Java语言过接口方法解决多继承问题。
12.接口是一种特殊的类,它只能定义一些抽象方法和常量。
13.在Java语言中,一组类和接口的集合通常被称为类库或API包或应用程序接口。
14.给出引用包的两种方法是:使用包名、类名做前缀;使用import语句。
15.Java语言异常处理三种方式是:捕获异常、声明异常和自定义异常16.程序设计过程中可能会出现的两种错误是编译错误和运行错误。
17.程序设计过程后的运行错误大致有三类。
它们是逻辑错误、用户输入不合法和硬件设备出错。
18.在Java语言中,用try-catch-final结构来捕获并处理异常。
19.用户程序使用throw new 异常类名;抛出自己的异常。
20.自定义异常类必须继承Exception类。
三、选择题1.下述声明中哪一种可以防止该类产生子类?A.static class DEF{} B.private calss DEF{}C.abstract class DEF{} D.final public class DEF{}E.final abstract class DEF{}答案:D。
Final防止有子类继承,因此可选择D、E。
但final不可以和abstract连用,因此E也错。
2.如果要求子类可以在任何包中访问父类的成员,下面哪一个修饰符可以达到这个目标的最为严格的修饰符?A.public B.private C.protected D.无修饰符答案:C。
A和C都可以做到这点,但A更为宽松,不仅仅是任何包中的子类,而且任何包中和包外的类都可以访问它。
D只能被同一个包的类访问,所以D不符合要求。
而B比D更为严格。
3.程序的封装性是如何实现的?A.由应用程序的设计者实现B.由应用程序的使用者实现C.由应用程序的设计和使用者实现D.由操作系统实现答案:A。
4.下列哪个选项是错误的?A.子类对象可以转化成父类对象B.父类对象一般不转化成子类对象C.子类对象与父类对象之间不能转化D.子类对象转化为父类对象后,对于子类与父类共有的方法,仍然调用子类的方法。
答案:C。
5.下列哪个选项能体现Java语言的多态性?A.匿名类B.布类C.方法重载D.方法覆盖答案:C。
6.下列哪个选项正确?A.Error类是一个RuntimeException异常B.任何抛出一个RuntimeException异常的语句必须包含在try块。
C.任何抛出一个Error对象的语句必须包含在try块。
D.任何抛出一个Exception异常的语句必须包含在try块。
答案:DError代表程序中不可捕获的问题,与Exception类同在一个层次,而RuntimeException 是Exception的子类,所以Error类不可能是一个RuntimeException类型的异常;抛出一个RuntimeException异常不一定要在try块,它是由JVM正常抛出,不需要throw和throws语句,因而也不一定要有catch语句去捕获,所以可以不出现在try块中;Error类型的问题是不可恢复的,多以没有规定要去捕获Error,因而也可以不出现在try块中;对于抛出一个Exception对象的语句,如果没有包含在try块之,有可能编译不能通过,因此选项D是必须的。
7.有如下程序,给出程序运行结果?import java.io.*;public class ExceptionTest{ public static void main(String args[]){ try{ methodA(); }catch(IOException e){ System.out.println(“Caught Exception”);}public void methcdA(){ throw new IOException(); }}}A.代码不能编译B.输出:Caught ExceptionC.输出:CaughtIO Exception D.程序正常运行后无任何信息输出答案:A首先,methcdA是非静态方法,不能出现在main中;其次,就算methcdA是静态方法,IOException是可检测异常,必须被catch捕获或是被throws声明,但程序中没有声明throws,所以try语句块不可能抛出IOException这个异常,而catch也就谈不到捕获它了,所以两个条件都没有满足,编译同样错误。
在methcdA方法定义语句的前面加static,后面加上throws IOException,程序就可以调试通过了。
8.有如下程序,在程序的point x处增加如下哪个选项程序才能通过编译?public class ExceptionTest{ calss TestException extends Exception{}public void runTest() throws TestException{}public void test() //point x{ runTest(); }}A.throws Exception B.catch(Exception)C.throws RuntimeException D.catch(TestException)答案:A没有try就不能有catch,所以B,D错;而C里边的RuntimeException是Exception 的子类,不能用捕“小鱼”的工具去捕“大鱼”,所以错误;由于runTest()抛出的是TestExcption,而TestExcption又是Excption的子类,因此用到runTest方法就必须抛出Excption异常。
9.有如下程序,该程序的运行结果是?public class Exc_4{ public static void main(String args[]){ try{ return; }finally{ System.out.println(“Finally”); }}}A.程序无输出B.程序输出“Finally”C.代码可以通过编译但执行时产生异常D.因为缺少catch块所以编译出错答案:B程序中有catch则必须有try,但反之不成立,所以D不对;关于try-catch-finally 的问题,程序中如果遇到return,则finally块先被执行,然后再执行return,而finally 块后面的语句将不被执行。
如果遇到System.exit(1),则退出JVM,整个程序退出,当然finally块其后的语句都不执行。
10.有如下程序,如果methodA()抛出IOException异常,该程序的运行结果是?class Exc_5{ public static void main(String args[]){ try{ methodA(); }catch(IOException e){ System.out.println(“caught IOException”); }catch(Exception e){ System.out.println(“caught Exception”);} } }}答案:caught IOException如果methodA()抛出IOException异常,被语句5捕获,输出“caught IOException”四、编程题1.试编写出要创建一个员工类Employee。