Java语言程序设计(郑莉)第四章课后习题答案
- 格式:docx
- 大小:113.54 KB
- 文档页数:11
一.单选题1.下列哪个是反斜杠字符的正确表示?A、\\B、*\\C、\D、\’\’2.下列属于合法的Java标识符是____。
A、_catB、5booksC、+staticD、-3.141593.在 Java 中,表示换行符的转义字符是____。
A、\nB、\fC、'n'D、\dd4.下列赋值语句中错误的是A、float f=11.1fB、double d=5.3E12;C、char c='\r';D、byte bb=433;5.下列哪个数代表八进制整数?A、0XA6B、-1E3C、1840D、01446.int 型 public 成员变量 MAX_LENGTH,该值保持为常数100,则定义这个变量的语句是____。
A、public int MAX_LENGTH=100B、final int MAX_LENGTH=100C、public const int MAX_LENGTH=100D、public final int MAX_LENGTH=1007.十进制数16的16进制表示格式是____。
A、0x10B、0x16C、0xAD、0168.char 类型的取值范围是___。
A、2-7~27-1B、0~216-1C、-215~215-1D、0~28-19.下列叙述中,正确的是____。
A、Java语言的标识符是区分大小写的B、源文件名与public类名可以不相同C、源文件名其扩展名为.jarD、源文件中public类的数目不限10.在 Java 中,表示换行符的转义字符是____。
A、\nB、\fC、'n'D、\dd11.指出正确的表达式A、 byte=128;B、 Boolean=null;C、 long l=0xfffL;D、 double=0.9239d;12.Java的字符类型采用的是Unicode编码方案,每个Unicode码占用____个比特位。
Java语言程序设计第七章课后习题答案1.数组的声明与数组元素的创建有什么关系?答:声明数组仅仅是代表试图创建数组,不分配任何存储空间,声明是为创建做“铺垫”。
2.Vector类的对象与数组有什么关系?什么时候适合使用数组,什么时候适合使用Vector?答:vector是一个能够存放任意对象类型的动态数组,容量能自动扩充,而数组存储固定且类型相同的对象;对于存储固定类型相同的对象使用数组,对于存储不同类型或者动态调整数组大小的情况使用Vector。
3.与顺序查找相比,二分查找有什么优势?使用二分查找的条件?答:对于大数据量中进行查找时二分查找比顺序查找效率高得多;条件是已排序的数组。
4.试举出三种常见的排序算法,并简单说明其排序思路。
答:①选择排序:基本思想是站在未排序列中选一个最小元素,作为已排序子序列,然后再重复地从未排序子序列中选取一个最小元素,把它加到已经排序的序列中,作为已排序子序列的最后一个元素,直到把未排序列中的元素处理完为止。
②插入排序:是将待排序的数据按一定的规则逐一插入到已排序序列中的合适位置处,直到将全部数据都插入为止。
③二分查找:将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。
重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
5.声明一个类People,成员变量有姓名、出生日期、性别、身高、体重等;生成10个People 类对象,并放在一个以为数组中,编写方法按身高进行排序。
//People类public class People{private String name;private String birthdaydate;private String sex;private double height;private double weight;public People(){//默认构造函数}public People(People p){=;this.birthdaydate=p.birthdaydate;this.sex=p.sex;this.height=p.height;this.weight=p.weight;}public People(String name,String birthdaydate,String sex,double height,double weight){=name;this.birthdaydate=birthdaydate;this.sex=sex;this.height=height;this.weight=weight;}public String getName() {return name;}public void setName(String name) { = name;}public String getBirthdaydate() {return birthdaydate;}public void setBirthdaydate(String birthdaydate) {this.birthdaydate = birthdaydate;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public double getHeight() {return height;}public void setHeight(double height) {this.height = height;}public double getWeight() {return weight;}public void setWeight(double weight) {this.weight = weight;}public String toString(){return"姓名:"+name+"\n出生年月:"+birthdaydate+"\n性别:"+sex+"\n 身高:"+height+"\n体重:"+weight;}}//test7_5类public class test7_5 {/***@param args*/public static void main(String[] args) {// TODO Auto-generated method stubPeople[] people={new People("林楚金","1989年8月13日","男",182,63.5),new People("诸葛亮","181年7月23日","男",184,76.6),new People("迈克杰克逊","1958年8月29日","男",180,60),new People("乔丹","1963年2月17日","男",198,98.1),new People("拿破仑","1769年8月15日","男",159.5,63),new People("苍井空","1983年11月11日","女",155,45),};People temp=new People();for(int i=0;i<people.length-1;i++)for(int j=i+1;j<people.length;j++){if(people[i].getHeight()<people[j].getHeight()){temp=people[j];people[j]=people[i];people[i]=temp;}}System.out.println("按身高从小到大排序后的结果如下:");for(int i=0;i<people.length;i++)System.out.println(people[i]+"\n");}}运行结果:6.声明一个类,此类使用私有的ArrayList来存储对象。
第一章概述1-1简述计算机程序设计语言的发展历程。
解:迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言等阶段,C++语言是一种面向对象的编程语言,也属于高级语言。
1-2面向对象的编程语言有哪些特点?解:面向对象的编程语言与以往各种编程语言有根本的不同,它设计的出发点就是为了能更直接的描述客观世界中存在的事物以及它们之间的关系。
面向对象的编程语言将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的共同属性(静态特征)和行为(动态特征),形成类。
通过类的继承与多态可以很方便地实现代码重用,大大缩短了软件开发周期,并使得软件风格统一。
因此,面向对象的编程语言使程序能够比较直接地反问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。
C++语言是目前应用最广的面向对象的编程语言。
1-3什么是结构化程序设计方法?这种方法有哪些优点和缺点?解:结构化程序设计的思路是:自顶向下、逐步求精;其程序结构是按功能划分为若干个基本模块;各模块之间的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序。
结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之的方法,从而有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。
虽然结构化程序设计方法具有很多的优点,但它仍是一种面向过程的程序设计方法,它把数据和处理数据的过程分离为相互独立的实体。
当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可重用性差。
由于图形用户界面的应用,程序运行由顺序运行演变为事件驱动,使得软件使用起来越来越方便,但开发起来却越来越困难,对这种软件的功能很难用过程来描述和实现,使用面向过程的方法来开发和维护都将非常困难。
1-4什么是对象?什么是面向对象方法?这种方法有哪些特点?解:从一般意义上讲,对象是现实世界中一个实际存在的事物,它可以是有形的,也可以是无形的。
习题一、选择题1. 面向对象程序设计的基本特征是(BCD)。
(多选)A.抽象B.封装C.继承D.多态2.下面关于类的说法正确的是(ACD)。
(多选)A.类是Java 语言中的一种复合数据类型。
B.类中包含数据变量和方法。
C.类是对所有具有一定共性的对象的抽象。
D.Java 语言的类只支持单继承。
上机指导1.设计银行项目中的注册银行用户基本信息的类,包括账户卡号、姓名、身份证号、联系电话、家庭住址。
要求是一个标准Java类(数据私有,提供seter/getter),然后提供一个toString方法打印该银行用户的信息。
答:源代码请参见“CH05_LAB\src\com\inspur\ch05\BankUser.java”2.设计银行项目中的帐户信息,包括帐户卡号、密码、存款,要求如“练习题1”。
答:源代码请参见“CH05_LAB\src\com\inspur\ch05\Account.java”3.设计银行项目中的管理员类,包括用户名和密码。
要求如“练习题1”。
答:源代码请参见“CH05_LAB\src\com\inspur\ch05\Manager.java”4.创建一个Rectangle类。
添加两个属性width、height,分别表示宽度和高度,添加计算矩形的周长和面积的方法。
测试输出一个矩形的周长和面积。
答:源代码请参见“CH05_LAB\src\com\inspur\ch05\Rectangle.java”5.猜数字游戏:一个类A有一个成员变量v,有一个初值100。
定义一个类,对A类的成员变量v进行猜。
如果大了则提示大了,小了则提示小了。
等于则提示猜测成功。
答:源代码请参见“CH05_LAB\src\com\inspur\ch05\Guess.java”6.编写一个Java程序,模拟一个简单的计算器。
定义名为Computer的类,其中两个整型数据成员num1和num1,编写构造方法,赋予num1和num2初始值,再为该类定义加、减、乘、除等公有方法,分别对两个成员变量执行加减乘除的运算。
C++语言程序设计(清华大学莉)课后习题答案第一章概述1-1 简述计算机程序设计语言的发展历程。
解:迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言等阶段,C++语言是一种面向对象的编程语言,也属于高级语言。
1-2 面向对象的编程语言有哪些特点?解:面向对象的编程语言与以往各种编程语言有根本的不同,它设计的出发点就是为了能更直接的描述客观世界中存在的事物以及它们之间的关系。
面向对象的编程语言将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的共同属性(静态特征)和行为(动态特征),形成类。
通过类的继承与多态可以很方便地实现代码重用,大大缩短了软件开发周期,并使得软件风格统一。
因此,面向对象的编程语言使程序能够比较直接地反问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。
C++语言是目前应用最广的面向对象的编程语言。
1-3 什么是结构化程序设计方法?这种方法有哪些优点和缺点?解:结构化程序设计的思路是:自顶向下、逐步求精;其程序结构是按功能划分为若干个基本模块;各模块之间的关系尽可能简单,在功能上相对独立;每一模块部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序。
结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之的方法,从而有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。
虽然结构化程序设计方法具有很多的优点,但它仍是一种面向过程的程序设计方法,它把数据和处理数据的过程分离为相互独立的实体。
当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可重用性差。
由于图形用户界面的应用,程序运行由顺序运行演变为事件驱动,使得软件使用起来越来越方便,但开发起来却越来越困难,对这种软件的功能很难用过程来描述和实现,使用面向过程的方法来开发和维护都将非常困难。
(完整版)Java程序设计习题附答案(三)第三部分⾯向对象程序设计1、引⽤数据类型变量具有基本属性为(ABCD)A、变量名B、数据类型C、存储单元D、变量值。
2、⾯向对象技术的特性是(ACD)A、继承性B、有效性C、多态性D、封装性。
3、下列哪个命题为真?(C)A、所有类都必须定义⼀个构造函数。
B、构造函数必须有返回值。
C、构造函数可以访问类的⾮静态成员。
D、构造函数必须初始化类的所有数据成员。
4、关于⼦类与⽗类关系的描述正确的是(ACD)A、⼦类型的数据可以隐式转换为其⽗类型的数据;B、⽗类型的数据可以隐式转换为其⼦类型的数据;C、⽗类型的数据必须通过显⽰类型转换为其⼦类型的数据;D、⼦类型实例也是⽗类型的实例对象。
5、下列哪⼀项说法最好地描述了Java中的对象?(C)A、对象是通过import命令引⼊到程序中的所有事情B、对象是⽅法的集合,这些⽅法在⼩程序窗⼝或应⽤程序窗⼝中产⽣图形元素,或者计算和返回值C、对象是⼀种数据结构,它具有操作数据的⽅法D、对象是⼀组具有共同的结构和⾏为的类6、下⾯哪个关键字不是⽤来控制对类成员的访问的?(C)A、publicB、protectedC、defaultD、private7、Java语⾔正确的常量修饰符应该是(D)A、finalB、static finalC、staticD、public static final;8、接⼝的所有成员域都具有public 、static和final 属性。
9、接⼝的所有成员⽅法都具有public 和abstract 属性。
10、编译下列源程序会得到哪些⽂件?(C)class A1{}class A2{}public class B{public static void main(String args[]){}}A) 只有B.classB)只有A1.class和A2.class⽂件C)有A1.class、A2.class和B.class⽂件D) 编译不成功11、下列哪种说法是正确的?(A)A、私有⽅法不能被⼦类覆盖。
java程序设计mooc第四单元答案江苏海洋大学1:以下说法正确的是( )。
( 2 分) [单选题] *A:package语句作为Java源文件的第一条语句。
(正确答案)B:import语句作为Java源文件的第一条语句。
C:package语句作为Java源文件的类中的一条语句。
D:import语句作为Java源文件的类中的一条语句2:想在Applet窗口(50,60)处输出“Hello Applet”,应使用下列( )语句。
( 2 分) [单选题] *A:drawString(50,60,”Hello Applet”)B:drawString(”Hello Applet!”,50,60)(正确答案)C:drawString(50,60)(”Hello Applet”)D:drawString(”Hello Applet”)(50,60)3:下列( )语句是连接数据库时使用的语句。
( 2 分) [单选题] *A:Statement SQL语句变量=连接变量.createStatement( )B:Connection 连接变量=DriverManager.getConnection(数据库URL,用户帐号,用户密码)(正确答案)C:Class.forName(JDBC驱动程序名)D:连接变量.close()4:在Java中定义常量的方法是( )。
( 2 分) [单选题] *A:#defineB:constC:final(正确答案)D:以上都不对5:以下声明合法的是( )。
( 2 分) [单选题] *A:default String s;B:public final static int w( )(正确答案)C:abstract double d;D:abstract final double hyperbolicCosine( )6:下面( )描述是正确的。
( 2 分) [单选题] *A:Applet程序中不需要main()方法,也不能有B:Application程序中可以没有main()方法。
17春《Java语言程序设计》作业4
一、单选题(共 10 道试题,共 100 分。
)
1. 关于对象成员占用内存的说法哪一项是正确的?
A. 同一个类的对象共用一段内存
B. 同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间。
C. 对象的方法不占用内存
D. 以上说法都不正确
正确答案:D
2. 下列关于内部类的说法,正确的是_______。
A. 内部类不可以声明为private和protected,只能声明为public
B. 内部类不可以定义为abstract
C. 内部类可以与包含它的类名相同
D. 内部类可以使用包含它的类的成员变量
正确答案:D
3. 在抽象类中声明一个抽象方法的是_______。
A. public abstract method();
B. public abstract void method();
C. public void abstract Method();
D. public void method(){abstract;}
正确答案:B
4. 下列说法中,哪一项是正确的?
A. 引用一个类的属性或调用其方法,必须以这个类的对象为前缀
B. 创建新的类对象使用关键字new,回收无用的类对象使用关键字free。
Java语言程序设计 第四章课后习题答案
1.子类将继承父类所有的属性和方法吗?为什么? 答:不,子类不能直接访问从父类中继承的私有属性及方法,但可以对公有及保护方法进行访问。
2.方法的覆盖与方法的重载有何不同? 答:覆盖是运用在子类中实现与父类相同的功能,但采用不同的算法或公式;在名字相同的方法中,要做比父类更多的事情;在子类中需要取消从父类继承的方法。
3.声明两个带有无参构造方法的两个类A和B,声明A的子类C,并且声明B为C的一个成员,不声明C 的构造方法。编写测试代码,生成类C的实例对象,并观察结果。 //A类 public class A { public A () { System.out.println ("输出A类"); } } //B类 public class B { public B () { System.out.println ("输出B类"); } } //C类 public class C extends A { B b = new B (); } //测试类 public class test4_3 { public static void main (String args[]) { C c = new C(); } } 运行结果:
4.声明一个基类A,它只有一种非默认构造方法;声明A的子类B,B具有默认方法及非默认方法,并在B的构造方法中调用基类A的构造方法。 //A类 public class A { public A (String lin) { System.out.println("A类的非默认构造方法 "+lin); } }//B类 public class B extends A{ public B () { super ("Fuck your teacher"); System.out.println ("B默认类构造方法"); }
public B (String lin) { super (lin); System.out.println ("B类非构造方法"); } }//测试类 public class test4_4 { public static void main (String args[]) { new B(); System.out.println (); new B("Fuck my teacher"); } } 运行结果:
5.声明一个类,它具有一种方法,此方法被重载三次,派生一个新类,并增加一种新的重载方法,编写测试类验证四种方法对于派生类验证四种方法对于派生类都有效。 //A类
public class A { public void showTime () { System.out.println ("空重载"); } public void showTime (int l) { System.out.println ("整形参数重载"); }
public void showTime (char l) { System.out.println ("字符参数重载"); } } //B类 public class B extends A { public void showTime (String l) { System.out.println ("字符串参数重载"); } } //测试类 public class test4_5 { public static void main (String args[]) { B b = new B();
b.showTime(); b.showTime(5); b.showTime('f'); b.showTime("林楚金"); } }
6.声明一个具有final方法的类,声明一个派生类,并试图对这个方法进行重写,会有什么结果。 //A类 public class A { public final void showTime() { System.out.println ("类A中方法"); } } //B类 public class B extends A{ public void showTime() { System.out.println ("类B中方法"); } } //测试类 public class test4_6 { public static void main (String args[]) { B b = new B(); b.showTime(); } } 运行结果:
(说白了就是B中showTime()的无法覆盖A中showTime(),被覆盖为final,不能覆盖。) 7.声明一个final类,并试图声明其派生类,会有什么结果。 //A类 public final class A {
} //B类 public class B extends A{
} //测试类 public class test4_7 { public static void main (String args[]) { B b = new B(); } } 运行结果: (说白了就是无法从A中进行继承) 8.什么是抽象类?抽象类中是否一定要包括抽象方法? 答:抽象类是一个不完全的类,不能使用new方法进行实例化。 抽象类可以包含抽象方法,也可以不包含抽象方法,但有抽象方法的必须是抽象类。
9.this和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 Student(){ } public Student(String aid,String aname,float ascoreOfenglish,float ascoreOfmath,float ascoreOfcomputer){ this.id=aid; this.name=aname; this.scoreOfenglish=ascoreOfenglish; this.scoreOfmath=ascoreOfmath; this.scoreOfcomputer=ascoreOfcomputer; //this.scoreOfsum=ascoreOfenglish+ascoreOfmath+ascoreOfcomputer; this.scoreOfsum=sum(); }
//sum方法 public float sum(){ return(this.scoreOfenglish+this.scoreOfmath+this.scoreOfcomputer); }
//testScore测评成绩/平均分 public float testScore(){ return(this.scoreOfsum/3); }
//6个get方法 public String getid(){ return(id); } public String getname(){ return(name); } public float getscoreOfenglish(){ return(scoreOfenglish); } public float getscoreOfmath(){ return(scoreOfmath); } public float getscoreOfcomputer(){ return(scoreOfcomputer); } public float getscoreOfsum(){ return(scoreOfsum); }
//5个set方法 public void setid(String newid){ this.id=newid; } public void setname(String newname){ this.name=newname;