当前位置:文档之家› JAVA语言与面向对象程序设计课后习题答案

JAVA语言与面向对象程序设计课后习题答案

JAVA语言与面向对象程序设计课后习题答案
JAVA语言与面向对象程序设计课后习题答案

第1章面向对象软件开发概述

1.简述面向过程问题求解和面向对象问题求解的异同。试列举出面向对象和面向过程的编程语言各两种。

答:面向过程问题求解,以具体的解题过程为研究和实现的主体,其思维特点更接近于计算机;面向对象的问题求解,则是以―对象‖为主体,―对象‖是现实世界的实体或概念在计算机逻辑中的抽象表示,更接近于人的思维特点。

面向过程的编程语言:C,Pascal,Foratn。

面向对象的编程语言:C++,Java,C#。

2.简述对象、类和实体及它们之间的相互关系。尝试从日常接触到的人或物中抽象出对象的概念。

答:面向对象技术中的对象就是现实世界中某个具体的物理实体在计算机逻辑中的映射和体现。类是同种对象的集合与抽象。类是一种抽象的数据类型,它是所有具有一定共性的对象的抽象,而属于类的某一个对象则被称为是类的一个实例,是类的一次实例化的结果。如果类是抽象的概念,如―电视机‖,那么对象就是某一个具体的电视机,如―我家那台电视机‖。

3.对象有哪些属性?什么是状态?什么是行为?二者之间有何关系?设有对象―学生‖,试为这个对象设计状态与行为。

答:对象都具有状态和行为。

对象的状态又称为对象的静态属性,主要指对象内部所包含的各种信息,也就是变量。每个对象个体都具有自己专有的内部变量,这些变量的值标明了对象所处的状态。

行为又称为对象的操作,它主要表述对象的动态属性,操作的作用是设置或改变对象的状态。

学生的状态:姓名、性别、年龄、所在学校、所在系别、通讯地址、电话号码、入学成绩等;

学生的行为:自我介绍、入学注册、选课、参加比赛等。

4.对象间有哪三种关系?对象―班级‖与对象―学生‖是什么关系?对象―学生‖与对象―大学生‖是什么关系?

答:对象间可能存在的关系有三种:包含、继承和关联。

对象―班级‖与对象―学生‖是包含关系。

对象―学生‖与对象―大学生‖是继承关系。

5.有人说―父母‖和―子女‖之间是继承的关系。这种说法是否正确?为什么?

答:―父母‖和―子女‖之间不是面向对象意义上的―继承‖关系。因为这里的继承关系是―is a‖的关系,―男人‖与―人‖之间可以说是继承关系。

6.面向对象的软件开发包括哪些过程?OOA模型包括哪三个层次?OOD模型在OOA模型的基础上引入了哪些工作?

答:面向对象的软件开发过程可以大体划分为面向对象的分析(Object Oriented analysis,OOA)、面向对象的设计(Object oriented design,OOD)、面向对象的实现(Object oriented programming,OOP)三个阶段。

面向对象的分析的主要作用是明确用户的需求,并用标准化的面向对象的模型规范地表述这一需求,最后将形成面向对象的分析模型。

面向对象的设计将在OOA模型的基础上引入界面管理、任务管理和数据管理三部分的内容。

7.面向对象的程序设计方法有哪些优点?

答:由于对象的概念能够以更接近实际问题的原貌和实质的方式来表述和处理这些问题,所以面向对象的软件开发方法比以往面向过程的方法有更好的灵活性、可重用性和可扩展性,

使得上述―分析—设计—实现‖的开发过程也更加高效、快捷。

第2章Java概述

1.简述Java编译和运行的基本方法。

答:编译可以使用JDK中的工具javac.exe。例如:

javac HelloWorldApp.java

运行Java程序则可以使用JDK提供的解释器是java.exe。例如:

java HelloWorldApp

2.下载并安装JDK软件包,3.尝试查看其中的JDK文档。

答:Java编程的基本工具包是JDK(Java Development Kit)。JDK是Sun公司免费提供的开发、运行Java程序的基本软件,它可以在Windows及Unix两种平台下使用。常用的版本是JDK1.2.2,JDK1.3.0,JDK1.4等。可以从https://www.doczj.com/doc/e214303499.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);

}

}

5.编写一个HTML文件,将上题中生成的Applet字节码嵌入其中,并用WWW浏览器观看这个HTML文件规定的Web页面。

答:与上一题同。

6.编写一个程序,能够从键盘上接收两个数字,然后计算这两个数的积。

答:见程序。import java.io.*;

public class Ex2_6

{

public static void main(String[] args)

{

String s = "";

double c = 0;

double d = 0;

try{

BufferedReader in = new BufferedReader(

new InputStreamReader( System.in ) );

System.out.print("请输入一个数: ");

s = in.readLine();

c = Double.parseDouble( s );

System.out.print("请输入另一个数: ");

s = in.readLine();

d = Double.parseDouble( s );

}catch(IOException e){}

System.out.println("这两个数的积为: " + (c * d) );

}

}

7.编写一个程序,从两个文本框中接收两个数字,然后计算这两个数的积。

答:见程序。import java.applet.*;

import java.awt.*;

import java.awt.event.*;

public class Ex2_7 extends Applet

{

TextField in1 = new TextField(10);

TextField in2 = new TextField(10);

Button btn = new Button("求两个数的积");

Label out = new Label("用于显示结果的标签");

public void init()

{

setLayout( new FlowLayout() );

add( in1 );

add( in2 );

add( btn );

add( out );

btn.addActionListener( new BtnActionAdapter() );

}

class BtnActionAdapter implements ActionListener

{

public void actionPerformed( ActionEvent e )

{

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);

}

}

}

8.常用的集成开发工具有哪些?各有什么特点?

答:常用的集成开发工具包括:Borland公司出品的Jbuilder, Sun公司出品的Java Workshop, IBM公司的Visual Age for Java,Oracle公司的Java Develop,等等。另外,Symantec公司的Visual Café也是著名的Java开发工具。近来,Eclipse也是使用很广的集成开发工具。

第3章数据运算、流控制、数组

1.简述Java程序的构成。如何判断主类?下面的程序有几处错误?如何改正,这个程序的源代码应该保存成什么名字的文件? public class MyJavaClass

{

public static void main()

{

System.out.printIn("Am I wrong?");

}

System.out.printIn("程序结束。");

}

答:一个复杂的程序可由一个至多个Java源程序文件构成,每个文件中可以有多个类定义。一般的Java源程序文件由以下三部分组成:

package 语句;(0句—1句)

import 语句;(0句—多句)

类定义(1个—多个类定义)

这里所说的主类是指程序中含有main()方法的类。

上面的示例程序中的错误主要在于拼写,如:点及分号应该用西文的;printIn中的大写字母I应改为小写字母l;另外,main()方法应该带参数,改为:

public static void main(String [] argvs)

import java.applet.*;

import java.awt.*;

import java.awt.event.*;

public class Ex2_7 extends Applet

{

TextField in1 = new TextField(10);

TextField in2 = new TextField(10);

Button btn = new Button("求两个数的积");

Label out = new Label("用于显示结果的标签");

public void init()

{

setLayout( new FlowLayout() );

add( in1 );

add( in2 );

add( btn );

add( out );

btn.addActionListener( new BtnActionAdapter() );

}

class BtnActionAdapter implements ActionListener

{

public void actionPerformed( ActionEvent e )

{

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编码,这样便于东方字符和西方字符处理,这样与其他语言相比,Java处理多语种的能力大大加强。

常见的转义符,如:

\' 单引号字符

\'' 双引号字符

\\ 反斜杠字符

\r 回车

\n 换行

4.Java对标识符命名有什么规定,下面这些标识符哪些是对的?哪些是错的?错在哪里?

(1)MyGame (2)_isHers (3)2JavaProgram (4)Java-Visual-Machine (5)_$abc

答:标识符可以由编程者自由指定,但是需要遵循—定的语法规定。标识符要满足如下的规定:

(1)标识符可以由字母、数字和下划线(_)、美元符号($)组合而成。

(2)标识符必须以字母、下划线或美元符号开头,不能以数字开头。

在实际应用标识符时,应该使标识符能一定程度上反映它所表示的变量、常量、对象或类的意义,这样程序的可读性会更好。

题中的标识符中的(3)不对,因为用数字开头了,(4)也不对,因为其中用了减号。

5.什么是常量?什么是变量?字符变量与字符串常量有何不同?

答:常量是在程序运行的整个过程中保持其值不改变的量。变量是在程序的运行过程中数值可变的数据,通常用来记录运算中间结果或保存数据。

字符变量中存放一个字符,字符串常量中存放一串字符。

6.什么是强制类型转换?在什么情况下需要用到强制类型转换?

答:强制类型的基本方式是指用以下方式显式地进行数据类型的转换:

(类型)表达式

一般地说,在赋值运算符两侧的类型不一致的情况下,则需要进行自动或强制类型转换。变量从占用内存较少的短数据类型转化成占用内存较多的长数据类型时,可以不做显式的类型转换,Java会自动转换;而将变量从较长的数据类型转换成较短的数据类型时,则必须做强制类型转换。

7.Java有哪些算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符?试列举单目和三目运算符。

答:在Java中,按照运算符功能来分,基本的运算符有下面几类:

1.算术运算符(+,-,*,/,%,++,--)

2.关系运算符(>,<,>=,<=,==,!=)

3.布尔逻辑运算符(!,&&,||,&,|)

4.位运算符(>>,<<,>>>,&,|,^,~)

5.赋值运算符(=,及其扩展赋值运算符如+=)

6.条件运算符( ?:)

7.其他 (包括分量运算符·,下标运算符 [],实例运算符instanceof,内存分配运算符new,强制类型转换运算符 (类型),方法调用运算符 () 等)

其中,单目运算符如-,!,而三目运算符只有一个,即条件运算符(?: )。

8.编写一个字符界面的Java Application程序,接受用户输入的一个浮点数,把它的整数部

分和小数部分分别输出。

答:见程序。/* 原来的程序

public class MyJavaClass

{

public static void main()

{

System.out.printIn("Am I wrong?");

}

System.out.printIn("程序结束。");

}

*/

public class Ex3_1

{

public static void main(String [] args)

{

System.out.println("Am I wrong?");

System.out.println("程序结束。");

}

}

9.编写一个字符界面的Java Application程序,接受用户输入的10个整数,比较并输出其中的最大值和最小值。

答:见程序。import java.io.*;

public class Ex3_9

{

public static void main(String[] args)

{

int N = 10;

int [] a = new int[N]; //声明数组并分配空间

try{

BufferedReader in = new BufferedReader(

new InputStreamReader( System.in ) );

for( int i=0; i

System.out.print("请输入第" + (i+1) +"个整数: ");

String s = in.readLine();

a[i] = Integer.parseInt( s );

}

int max = a[0];

int min = a[0];

for( int i=1; i

if( max < a[i] ) max = a[i];

if( min > a[i] ) min = a[i];

}

System.out.println( "最大数为: " + max );

System.out.println( "最小数为: " + min );

}catch(IOException e){}

}

}

10.编写一个字符界面的Java Application程序,接受用户输入的字符,以―#‖标志输入的结束;比较并输出按字典序最小的字符。

答:见程序。import java.io.*;

public class Ex3_10

{

public static void main(String[] args)

{

char min = '\uffff';

System.out.print("请输入一串字符,以#结束:");

while( true )

{

char c = ' ';

try{

c = (char) System.in.read();

}catch(IOException e){}

if( c == '#' ) break;

if( min > c ) min = c;

}

System.out.println("\n其中最小的字符是: " + min );

}

}

11.结构化程序设计有哪三种基本流程?分别对应Java中的哪些语句?

答:任何程序都可以且只能由三种基本流程结构构成,即顺序结构、分支结构和循环结构。顺序结构直接书写,分支结构用if及switch语句书写,循环结构用for、while及do语句来书写。

12.编写一个Java程序,接受用户输入的一个l-12之间的整数(如果输入的数据不满足这个条件,则要求用户重新输入),利用switch语句输出对应月份的天数。

答:见程序。import java.io.*;

public class Ex3_12

{

public static void main(String[] args)

{

try{

BufferedReader in = new BufferedReader(

new InputStreamReader( System.in ) );

int a = 0;

do{

System.out.print("请输一个1~12的整数: ");

String s = in.readLine();

a = Integer.parseInt( s );

}while( a <1 || a > 12 );

switch( a ){

case 1: System.out.println("一月"); break;

case 2: System.out.println("二月"); break;

case 3: System.out.println("三月"); break;

case 4: System.out.println("四月"); break;

case 5: System.out.println("五月"); break;

case 6: System.out.println("六月"); break;

case 7: System.out.println("七月"); break;

case 8: System.out.println("八月"); break;

case 9: System.out.println("九月"); break;

case 10: System.out.println("十月"); break;

case 11: System.out.println("十一月"); break;

case 12: System.out.println("十二月"); break;

default: break;

}

}catch(IOException e){}

}

}

13.在一个循环中使用break,continue和return语句有什么不同的效果?

答:break是结束循环;continue是直接进行下一次循环;return则是结束整个函数的调用。

14.编写图形界面下的Java Applet程序,接受用户输入的两个数据为上、下限,然后10个一行输出上、下限之间的所有素数。

import java.applet.*;

import java.awt.*;

import java.awt.event.*;

public class Ex3_14 extends Applet

{

TextField in1 = new TextField(10);

TextField in2 = new TextField(10);

Button btn = new Button("求两个数之间的素数");

TextArea out = new TextArea(10,100); //用于输出

public void init()

{

setLayout( new FlowLayout() );

add( in1 );

add( in2 );

add( btn );

add( out );

btn.addActionListener( new BtnActionAdapter() );

}

class BtnActionAdapter implements ActionListener

{

public void actionPerformed( ActionEvent e )

{

String s1 = in1.getText();

int a1 = Integer.parseInt( s1 );

String s2 = in2.getText();

double a2 = Integer.parseInt( s2 );

String result = ""; //结果

int cnt = 0; //计算素数的个数

for( int i = a1; i<=a2; i++ ){

if( isPrime( i ) ){

result += (""+i); //如果是素数,则加入

cnt ++;

if( cnt % 10 == 0 ) result += "\r\n";

else result += "\t";

}

}

out.setText( result);

}

public boolean isPrime( int a )//判断一个数是否是素数

{

if( a <= 1 ) return false;

for( int i=2; i

if( a % i == 0 ) return false;

return true;

}

}

}

15.编写程序输出用户指定数据的所有素数因子。

答:见程序。import java.io.*;

public class Ex3_15

{

public static void main(String[] args)

{

try{

BufferedReader in = new BufferedReader(

new InputStreamReader( System.in ) );

System.out.print("请输入一个正整数: ");

String s = in.readLine();

int a = Integer.parseInt( s );

System.out.println( a + "的所有素因子包括: ");

for( int i=2; i<=a; i++ ){

if( a%i==0 && isPrime(i) ){

System.out.println( i );

}

}

}catch(IOException e){}

}

public static boolean isPrime( int a )//判断一个数是否是素数

{

if( a <= 1 ) return false;

for( int i=2; i

if( a % i == 0 ) return false;

return true;

}

}

16.什么是数组?数组有哪些特点?Java中创建数组需要使用哪些步骤?如何访问数组的一个元素?数组元素的下标与数组的长度有什么关系?

答:数组是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和下标来惟一地确定数组中的元素。

数组要进行定义和分配空间后才能使用。

一维数组的定义方式为:

type arrayName[ ];

或type [ ] arrayName;

分配内存空间则要用到运算符new,其格式如下:

arrayName = new type[arraySize];

当定义了一个数组,并用运算符new为它分配了内存空间后,就可以引用数组中的每一个元素了。数组元素的引用方式为:

arrayName[index]

数组元素的下标从0开始,一直到数组的长度减1。

17.数组元素怎样进行缺省的初始化?

答:数组元素可以在定义数组的同时进行初始化。例如:

int a[ ] = {1,2,3,4,5};

用逗号(,)分隔数组的各个元素,系统自动为数组分配一定的空间。

18.编程求一个整数数组的最大值、最小值、平均值和所有数组元素的和。

答:见程序。import java.io.*;

public class Ex3_18

{

public static void main(String[] args)

{

int N = 100;

int [] a = new int[N];

for( int i=0; i

a[i]=(int) (Math.random()*100); //为了简单,这里赋随机值

}

int sum = 0;

int max = a[0];

int min = a[0];

for( int i=0; i

sum += a[i];

if( max < a[i] ) max = a[i];

if( min > a[i] ) min = a[i];

}

System.out.println( "最大值:" + max );

System.out.println( "最小值:" + min );

System.out.println( "总和:" + sum );

System.out.println( "平均值:" + ((double)sum/N) );

}

}

19.求解―约瑟夫问题‖:12个人排成一圈,从1号报数,凡是数到5的人就出队列(出局),然后继续报数,试问最后一人出局的是谁。

答:import java.io.*;

public class Ex3_19

{

public static void main(String[] args)

{

int N = 12;

boolean [] a = new boolean[N]; //队列状态

for( int i=0; i

int i =0; //当前报数的人的下标

int s = 0; //当前报的数字

int cnt = 0; //已有多少人出局

while(true){

if( a[i] ) s++; //如果在队列中,则报数

if( s == 5 ){//如果数到5

System.out.println( (i+1) ); //显示该人的序号

a[i] = false; //该人出局

s = 0; //报的数归0

cnt ++;

if( cnt == N )break; //全部的人都出局,结束

}

i++; //到下一个人

if( i==N) i=0; //因为队伍是一个圆圈

}

}

}

20.用―埃氏筛法‖求2-100以内的素数。2-100以内的数,先去掉2的倍数,再去掉3的倍数,再去掉4的倍数,以此类推……最后剩下的就是素数。

答:见程序。import java.io.*;

public class Ex3_20

{

public static void main(String[] args)

{

int N = 100;

boolean [] a = new boolean[N+1];

for( int i=0; i<=N; i++ ) a[i]=true;

for( int i=2; i<=N; i++ ){

for( int j=2*i; j<=N; j += i ){

a[j] = false;

}

}

for( int i=2; i<=N; i++ ){

if( a[i] ) System.out.println( i );

}

}

}

第4章类、包和接口

1.使用抽象和封装有哪些好处?

答:抽象可以提供事物的本质特征。封装(Encapsulation)是这样一种编程机制,它把代码和其操作的数据捆绑在一起,从而防止了外部对数据和代码的干扰和滥用,保证了数据和代码的安全性。

2.编写一个Java程序片断定义一个表示学生的类student,包括域―学号‖、‖班号‖、―姓名‖、―性别‖、―年龄‖;方法―获得学号‖、―获得班号‖、―获得性别‖、―获得年龄‖、―修改年龄‖。class public class exercise7 {

public static void main(String args[])

{

Student stu = new Student("Student","200345",18,"2班");

System.out.println(stu.toString());

}

}

class Student{

private String stuNumber;

private String stuClass;

private String stuName;

private int stuAge;

Student(String name,String number, int age, String cls)

{

stuName = name;

stuNumber = number;

stuClass = cls;

stuAge = age;

}

public String getStuNumber()

{

return stuNumber;

}

public String getStuClass()

{

return stuClass;

}

public String getStuName()

{

return stuName;

}

public int getStuAge()

{

return stuAge;

}

public void setStuAge(int age)

{

stuAge = age;

}

public String toString()

{

String infor = "学生姓名:"+ getStuName()+"\n"+

"学生年龄:"+ getStuAge()+"\n"+

"学生班级:"+getStuClass()+"\n"+

"学生学号:"+getStuNumber()+"\n";

return infor;

}

}

3.为student类定义构造方法初始化所有的域,增加一个方法public String toString()把Sttldent 类对象的所有域信息组合成一个字符串。编写Application程序检验新增的功能。

答:见程序。class Ex4_3

{

public static void main(String[] args)

{

Student s = new Student( "09918076", "软件专业班",

"李明", true, 18 );

System.out.println( s );

}

}

class Student

{

//"学号"、"班号"、"姓名"、"性别"、"年龄"

String id;

String classId;

String name;

boolean sex;

int age;

public String getId() { return id; }

public String getClassId() { return classId; }

public String getName() { return name; }

public boolean getSex() { return sex; }

public int getAge() { return age; }

public void setAge(int age) { this.age = age; }

public Student( String id, String classId, String name, boolean sex, int age )

{

this.id = id;

this.classId = classId;

https://www.doczj.com/doc/e214303499.html, = name;

public String toString()

this.age = age;

this.sex = sex;

}

{

return name + id + classId +

+ age + "岁," +

(sex ? "男" : "女" ) ;

}

}

4.什么是最终类,如何定义最终类?试列举最终类的例子。

答:最终类是指类被final修饰符所修饰和限定的类,最终类不能被继承,即不可能有子类。如Java中的String类就是最终类。

5.如何定义静态域?静态域有什么特点?如何访问和修改静态域的数据?

答:对域使用static修饰,则定义了静态域。静态域最本质的特点是:它们是类的域,不属于任何一个类的具体对象实例。它不保存在某个对象实例的内存区间中,而是保存在类的内存区域的公共存储单元。

在Java中,静态域(类变量)可以通过类名直接访问,也可以通过实例对象来访问,两种方法的结果是相同的。

6.什么是静态初始化器?它有什么特点? 与构造方法有什么不同?

静态初始化器是由关键字static引导的一对大括号{}括起的语句组。它的作用与类的构造方法有些相似,都是用来完成初始化的工作,但是静态初始化器在三点上与构造方法有根本的不同:

(1) 构造方法是对每个新创建的对象初始化,而(2) 静态初始化器是对类自身进行初始化。

(3) 构造方法是在用new运算符产生新对象时由系统自动执行;而(4) 静态初始化器一般不

(5) 能由程序来调用,(6) 它是在所属的类加载入内存时由系统调用执行。

(3)不同于构造方法,静态初始化器不是方法,没有方法名、返回值和参数列表。

(4)同static方法一样,它不能访问实例域和实例方法。

7.如何定义方法?在面向对象程序设计中方法有什么作用?

答:方法是类的动态属性,标志了类所具有的功能和操作,用来把类和对象的数据封装在一起。Java的方法与其他语言中的函数或过程类似,是一段用来完成某种操作的程序片断。方法由方法头和方法体组成,其一般格式如下:

修饰符1 修饰符2 ……返回值类型方法名(形式参数列表) throws异常列表{ 方法体各浯句;

}

8.什么是抽象方法?它有何特点?如何定义抽象方法?如何使用抽象方法?

答:被abstract所修饰的方法叫抽象方法,抽象方法的作用在为所有子类定义一个统一的接口。对抽象方法只需声明,而不需实现,即用分号(;)而不是用{},格式如下:abstract returnType abstractMethod( [paramlist] );

9.如何定义静态方法?静态方法有何特点?静态方法处理的域有什么要求?

答:用static修饰符修饰的方法是仅属于类的静态方法,又称为类方法。与此相对,不用static 修饰的方法,则为实例方法。类方法的本质是该方法是属于整个类的,不是属于某个实例的。

静态方法中,不能访问实例变量。在类方法中不能使用this 或super。

10.什么是访问控制符?有哪些访问控制符?哪些可以用来修饰类?哪些用来修饰域和方法?试述不同访问控制符的作用。

答:访问控制符是指public/private/protected等表示访问控制(Access Control)的修饰符,其作用是更好地控制类及其域、方法的存取权限,更好地实现信息的封装与隐藏,方法的访问控制符包括private, protected, public和―默认访问控制符‖。

类中限定为private的成员(域或方法)只能被这个类本身访问,即私有访问控制。

类中的成员缺省访问控制符时,称为缺省访问控制。缺省访问控制的成员可以被这个类本身和同一个包中的类所访问,即包访问控制。

类中限定为protected的成员可以被这个类本身,它的子类(包括同一个包中以及不同包中的子类)以及同一个包中所有其他的类访问。

类中限定为public的成员可以被所有的类访问。

Java中还有一种访问控制符为private proteced,它限定能被本类及其子类可以访问,而包中的其他非子类的类不能访问。

类的访问控制符或者为public,或者缺省。(但内部类可以有private、protected等访问控制符。)

如果类用public修饰,则该类可以被其他类所访问;若类缺省访问控制符,则该类只能被同包中的类访问。

11.修饰符是否可以混合使用?混合使用时需要注意什么问题?

答:修饰符可以混合使用,如public static。但也要注意一些规则,如final及abstract不能修饰同一个方法。

12.什么是继承?什么是父类?什么是子类?继承的特性给面向对象编程带来什么好处?什么是单重继承?什么是多重继承?

答:继承(Inheritance)是一个对象获得另一个对象的属性的过程。它的重要性源于它支持按层次分类概念。这与现实世界是一致的,大多数知识因为层次化分类而变得容易掌握(即从上至下)。

在类的层次关系中,被继承的类称为父类,继承其他类的类称为子类。

使用继承,一个对象可以从它父类继承所有的通用属性,而只需定义它特有的属性。所以,正是继承机制可以使一个对象成为一个更通用类的一个特例成为可能。

一个类只有一个直接父类,称为单重继承;一个类有多个直接父类,则是多重继承。Java 语言中采用单重继承。

13.如何定义继承关系? 为―学生‖类派生出―小学生‖、―中学生‖、―大学生‖、―研究生‖四个类,其中―大学生‖类再派生出―一年级学生‖、二年级学生‖、―三年级学生‖、―四年级学生‖四个子类,―研究生‖类再派生出―硕士生’’和―博土生’’两个子类。

答:在Java中,通过extends关键字来定义继承关系。

具体示例见源程序。class Ex4_13

{

public static void main(String[] args)

{

}

class Student{}

class Pupil extends Student{}

class MiddleSchollStudent extends Student{}

class UnderGraduateStudent extends Student{}

class Graduate extends Student{}

class Freshman extends UnderGraduateStudent{}

class Master extends Graduate{}

class PhD extends Graduate{}

{

};

}

14.―子类的域和方法的数目一定大于等于父类的域和方法的数目‖,这种说法是否正确?为什么?

答:如果考虑到可以子类既可以继承父类的方法,而不能继承私有的方法,那么这种说法是不正确的。

15.什么是域的隐藏?

答:在子类中定义与父类同名的域,称为域的隐藏。

16.什么是方法的覆盖?方法的覆盖与域的隐藏有何不同?与方法的重载有何不同?

答:子类重新定义与父类同名的方法,称为对父类方法的覆盖(Overriding)。子类在重新定义父类已有的方法时,应保持与父类完全相同的方法头声明,即应与父类有完全相同的方法名、返回值和参数类型列表。

方法的重载是指定义几个同名的方法,但它们的参数类型列表不同。

17.解释this和super的意义和作用。

答:this表示这个对象本身。详细地说,在普通方法中,this表示调用这个方法的对象;在构造方法中,this表示所新创建的对象。

super指父类。在子类继承父类时,为了明确地指明父类的域和方法,就要用关键字super。

18.父类对象与子类对象相互转化的条件是什么?如何实现它们的相互转化?

答:类似于基本数据类型数据之间的强制类型转换,存在继承关系的父类对象和子类对象之间也可以在一定条件下相互转换。父类对象和子类对象的转化需要注意如下原则:

(1)子类对象可以被视为是其父类的一个对象。如一个Student对象也是一个Person对象。

(2)父类对象不能被当作是其某一个子类的对象。

(3)如果一个方法的形式参数定义的是父类对象,那么调用这个方法时,可以使用子类对象作为实际参数。

(4)如果父类对象引用指向的实际是一个子类对象,那么这个父类对象的引用可以用强制类型转换转化成子类对象的引用。

19.构造方法是否可以被继承?是否可以被重载?试举例。

答:构造方法不可以被继承,但是可以被子类的构造方法所调用。

构造方法可以被重载。如:

Student(String name ){}

Student(String name, int age ){}

20.什么是包?它的作用是什么?

答:包是一种松散的类的集合,包的作用在于提供了一种命名机制和可见性限制机制。

21.如何创建包?在什么情况下需要在程序里创建包?

答:package语句作为Java源文件的第一条语句,指明该文件中定义的类所在的包。它的格式为:

package pkg1[.pkg2[.pkg3…]];

由于Java编译器为每个类生成一个字节码文件,且文件名与public的类名相同,因此同名的类有可能发生冲突。这时就需要创建包。

22.如何引用包中的某个类?如何引用整个包?如果编写Java Applet程序时想把整个java.applet包都加载,则应该怎么做?

答:为了能使用Java中已提供的类,我们需要用import语句来引入所需要的类。import语句的格式为:

import package1[.package2…]. (classname |*);

其中package1[.package2…]表明包的层次,与package语句相同,它对应于文件目录,classname 则指明所要引入的类,如果要从一个包中引入多个类,则可以用星号(*)来代替。例如:import java.awt.*;

import java.util.Date;

如果编写Java Applet程序时想把整个java.applet包都加载,可以使用:

import java.applet.*;

23.CLASSPATH是有关什么的环境变量?它如何影响程序的运行?如何设置和修改这个环境变量?

答:在编译和运行程序中,经常要用到多个包,怎样指明这些包的根目录呢?简单地说,包层次的根目录是由环境变量CLASSPATH来确定的。具体操作有两种方法:一是在java及javac命令行中,用-classpath选项来指明:

如:

java –classpath d:\tang\ch04;c:\java\classes;. pk.TestPkg 二是设定classpath环境变量,用命令行设定环境变量,如:

Set CLASSPATH= d:\tang\ch04;c:\java\classes;.

在Windows中还可以按第2章中的办法设定环境变量。

24.什么是接口?为什么要定义接口?接口与类有何异同?如何定义接口?使用什么关键字?

答:Java中的接口(interface)在语法上有些相似于类(class),它定义了若于个抽象方法和常量,形成一个属性集合,该属性集合通常对应了某一组功能,其主要作用是可以帮助实现类似于类的多重继承的功能。

接口中只能有方法名及常数名,不能像类那样有方法的实现体。

定义接口,使用关键字interface。

具体方法是:

[public]interface接口名[extends父接口名列表]

{ //接口体

//常量域声明

[public][static][final]域类型域名=常量值;

//抽象方法声明

[public][abstract]返回值方法名(参数列表)[throw异常列表];

}

25.一个类如何实现接口?实现某接口的类是否一定要重载该接口中的所有抽象方法?

答:一个类要实现接口时,在类的声明部分,用implements关键字声明该类将要实观哪些接口。

如果实现某接口的类不是abstract的抽象类,则在类的定义部分必须实观指定接口的所有抽象方法。如果其直接或间接父类中实现了接口,父类所实现的接口中的所有抽象方法都必须有实在的方法体。也就是说,非抽象类中不能存在抽象方法。

第5章深入理解Java语言

1.什么是多态?面向对象程序设计为什么要引人多态的特性?使用多态有什么优点?

答:多态性(Polymorphism来自希腊语,意思是多种形态)是指允许一个接口访问动作的通用类的性质。一般地,多态性的概念常被解释为―一个接口,多种方法‖。这意味着可以为一组相关活动设计一个通用接口。多态性允许用相同接口规定一个通用类来减轻问题的复杂度。选择适当的动作(方法)适应不同环境的工作则留给编译器去做。作为编程者,无需手工去做这些事情,只需利用通用接口即可。

多态的特点大大提高了程序的抽象程度和简洁性,更重要的是,它最大限度地降低了类和程序模块之间的耦合性,提高了类模块的封闭性,使得它们不需了解对方的具体细节,就可以很好地共同工作。这个优点对于程序的设计、开发和维护都有很大的好处。

2.虚方法调用有什么重要作用?具有什么修饰符的方法不能够使用虚方法调用?

答:使用虚方法调用的作用在于:在使用上溯造型的情况下,子类对象可以当做父类对象,对于重载或继承的方法,Java运行时系统根据调用该方法的实例的类型来决定选择哪个方法调用。对子类的一个实例,如果子类重载了父类的方法,则运行时系统调用子类的方法,如果子类继承了父类的方法(未重载),则运行时系统调用父类的方法。

使用static、private或final所修饰的方法不能够使用虚方法调用。

3.用默认构建器(空自变量列表)创建两个类:A和B,令它们自己声明自己。从A继承一个名为C的新类,并在C内创建一个成员B。不要为C创建一个构建器。创建类C的一个对象,并观察结果。

答:具体程序见源文件。

程序的运行结果可以看到A和B的构造方法都被调用了。public class Ex5_3

{

public static void main( String[] args )

{

C c = new C();

}

}

class A

{

public A(){ System.out.println("A"); }

};

class B

{

public B(){ System.out.println("B"); }

}

class C extends A

{

B b = new B();

}

4.创建Rodent(啮齿动物):Mouse(老鼠),Gerbil(鼹鼠),Hamster(大颊鼠)等的一个继承分级结构。在基础类中,提供适用于所有Rodent的方法,并在派生类中覆盖它们,从而根据不同类型的Rodent采取不同的行动。创建一个Rodent数组,在其中填充不同类型的Rodent,然后调用自己的基础类方法,看看会有什么情况发生。

答:具体程序见源文件。

可以看出虚方法调用带来的多态效果。

public class Ex5_4

{

public static void main( String[] args )

{

Rodent [] animals = new Rodent[4];

animals[0] = new Rodent();

animals[1] = new Mouse();

animals[2] = new Gerbil();

animals[3] = new Hamster();

for( int i=0; i

animals[i].eat();

}

}

}

class Rodent

{

public void eat(){ System.out.println("Rodent"); }

}

class Mouse extends Rodent

{

public void eat(){ System.out.println("Mouse"); }

}

class Gerbil extends Mouse

{

public void eat(){ System.out.println("Gerbil"); }

}

class Hamster extends Gerbil

{

public void eat(){ System.out.println("Hamster"); }

}

5.Java中怎样清除对象?能否控制Java中垃圾回收的时间?

答:Java中,无用的对象由系统自动进行清除和内存回收的过程,编程者可以不关心如何回收以及何时回收对象。

对象的回收是由Java虚拟机的垃圾回收线程来完成的。编程者不能完全控制垃圾回收的时间。

6.内部类与外部类的使用有何不同?

答:在封装它的类的内部使用内部类,与普通类的使用方式相同;在其他地方使用内部类时,类名前要冠以其外部类的名字才能使用,在用new创建内部类时,也要在new前面冠以对象变量。

7.怎样使用匿名类的对象?

答:在类及其方法中,可以定义一种匿名类,匿名类有以下几个特点:

(1) 这种类不(2) 取名(3) 字,而(4) 直接用其父类的名(5) 字或者它所实现的接口的

名(6) 字。

(7) 类的定义与创建该类的一个实例同(8) 时进行,(9) 即类的定义前面有一个new。也不

(10) 使用关键词class,同(11) 时也带上()表示创建对象。也就是说,(12) 匿名

(13) 类的定义方法是:

new 类名或接口名(){ ……… }

(14) 类名(15) 前面不(16) 能有修饰符。

(17) 类中不(18) 能定义构造方法,(19) 因为它没有名(20) 字。在构造对象时,(21) 直

接使用父类的构造方法。如果实现接口,(22) 则接口名(23) 后的圆括号中不(24) 能带参数。

8.方法中定义的内部类是否可以存取方法中的局部变量?

答:方法中的内部类,不能访问该方法的局部变量,除非是final的局部变量或final的参变量。

第6章异常处理

1.异常可以分成几类?

答:Java的异常类都是https://www.doczj.com/doc/e214303499.html,ng.Trowable的子类。它派生了两个子类:Exception和Error。其中Error类由系统保留,而Exception类则供应用程序使用。

2.用main()创建一个类,令其抛出try块内的Exception类的一个对象。为Exception的构建器赋予一个字串参数。在catch从句内捕获异常,并打印出字串参数。添加一个finally从句,并打印一条消息。public class Ex6_2

{

public static void main( String[] args )

{

try{

int i = Integer.parseInt( "23.4" );

}

catch( Exception e ){

System.out.println( e );

}

finally {

System.out.println("finished");

}

}

答:见程序。

3.用extends关键字创建自己的异常类。为这个类写一个构建器,令其采用String参数,并随同String句柄把它保存到对象内。写一个方法,令其打印出保存下来的String。创建一个try-catch 从句,练习实际操作新异常。

答:见程序。public class Ex6_3

{

public static void main( String[] args )

{

try{

throw new Ex63Exception("测试");

}

catch( Ex63Exception e ){

e.show();

}

finally {

System.out.println("finished");

}

}

};

class Ex63Exception extends Exception

{

String msg;

public Ex63Exception( String msg ) {

super( msg );

this.msg = msg;

}

public void show(){

System.out.println( msg );

}

};

4.写一个类,并在一个方法抛出一个异常。试着在没有异常规范的前提下编译它,观察编译器会报告什么。接着添加适当的异常规范。在一个try-catch从句中尝试自己的类以及它的异常。

答:见程序。public class Ex6_4

{

public static void main( String[] args )

{

char c;

try{

c = (char)System.in.read();

}

// /* 如果不用catch,编译不会通过

catch( java.io.IOException e ){

System.out.println( e );

}

// */

}

};

语言学课后习题答案

语言学概论作业 Chapter 1 1.How do you interpret the following definition of linguistics: linguistics is the scientific study of language? To understand this definition, we should focus on three words in this sentence: scientific, study and language. First of all, scientific here means a study which is based on the systematic investigation of linguistic data, conducted with reference to some general theory of language structure. The linguist studies it to discover the nature and rules of the underlying language system. Secondly, the word study here refers to investigation or examination. Thirdly, Language here is general term. It refers to any human language, Chinese spoken by the Chinese, English by the English people, German by the Germans, or even Esperanto, an artificial language. Language here also means the dialects or variants of a common language such as Cantonese, a variant of Mandarin.Therefore, this whole sentence can be interpreted that linguistics is a language study through the systematic investigation of linguistic data and some general theory of language structure. 2.What are the major branches of linguistics? What does each of them study? Phonetics:the study of sounds used in linguistic communication.It describes individual speech sounds and indicates their physical or phonetic properties. Phonology:it studies the ways in which these sounds form patterns and systems and how they work to convey meaning in the system of language. Morphology: a field of linguistics focused on the study of the forms and formation of words in a language Syntax:A set of rules that govern how words are combined to form phrases and sentences. Pragmatics: the study of the use of language in a social context. 3.In what basic ways does modern linguistics differ from traditional grammar? ①Linguistics is descriptive while traditional grammar is prescriptive. ②Modern linguistics regards the spoken language as primary, not the written. ③Modern linguistics differs from traditional grammar also in that it does not force languages into a Latin-based framework. 4.Is modern linguistics mainly synchronic or diachronic? Why? In modern linguistics, the linguists seem to give priority to synchronic studies other than diachronic ones. Because it is believed that unless the various states of

04747java语言程序设计(一)20120年01月试卷

全国2012年1月高等教育自学考试 Java语言程序设计(一)试题 课程代码:04747 一、单项选择题(本大题共10小题,每小题1分,共l0分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.下面供选字符序列中,不属于 ...Java语言关键字的是( ) A.inner B.throw C.false D.throws 2.表达式“-1>>>1”的十进制值是( ) A.-2 B.231-1 C.-(231-1) D.232-1 3.Java语言中,在类定义时用final关键字修饰,是指这个类( ) A.子类必须实现父类未实现的方法 B.没有具体实现代码 C.必须要有实例 D.不能被继承 4.表达式"java程序设计".1ength()的值是( ) A. 0 B.12 C. 8 D.13 5.以下关于BorderLayout布局的叙述中,不正确 ...的是( ) A.把容器内的空间划分成5个区域 B.加入组件应该指明要放入的区域 C.是框架窗口的默认布局 D.一个位置可直接放多个组件 6.利用文件对话框打开或保存文件,在打开文件对话框之前,可用FileFilter类设置筛选条件,其所用的两个方法是( ) A.accept()和getSelectedFile() B.accept()和getDescription() C.accept()和setDescription() D.setDescription()和getDescription() 7.设已经有Graphics2D对象g2d,RoundRectangle2D对象rRect,绘制对象rRect的代码是( ) A.g2d.draw(rRect) B.g2d.drawRoundRect(rRect) C.rRect.draw() D.rRect.drawRoundRect() 8.以下关于线程互斥和同步的叙述中,正确的是( ) A.临界段是线程互斥使用资源的程序段 B.临界段能使线程使用其它线程的资源 浙04747# Java语言程序设计(一)试卷第1页(共12页)

汇编语言课后习题答案

2.1已知DS=2000H、BX=0100H、SI=0002H,存储单元[20100H]~[20103H]依次存放12345678H,[21200H]~[21203H]依次存放2A4C B765H,说明下列每条指令执行完后AX寄存器的内容。 (1)mov ax,1200h (2)mov ax,bx (3)mov ax,[1200h] (4)mov ax,[bx] (5)mov ax,[bx+1100h] (6)mov ax,[bx+si] (7)mov ax,[bx][si+1100h] 〔解答〕 (1)AX=1200H (2)AX=0100H (3)AX=4C2AH;偏移地址=bx=0100h (4)AX=3412H;偏移地址=bx=0100h (5)AX=4C2AH;偏移地址=bx+1100h=1200h (6)AX=7856H;偏移地址=bx+si=0100h+0002h=0102h (7)AX=65B7H;偏移地址=bx+si+1100h=0100h+0002h+1100h=1202h 〔习题2.2〕指出下列指令的错误 (1)mov cx,dl (2)mov ip,ax (3)mov es,1234h (4)mov es,ds (5)mov al,300 (6)mov[sp],ax (7)mov ax,bx+di

(8)mov20h,ah 〔解答〕 (1)两操作数类型不匹配 (2)IP指令指针禁止用户访问 (3)立即数不允许传给段寄存器 (4)段寄存器之间不允许传送 (5)两操作数类型不匹配 (6)目的操作数应为[SI] (7)源操作数应为[BX+DI] (8)立即数不能作目的操作数 〔习题2.5〕已知SS=2200H、SP=00B0H,画图说明执行下面指令序列时,堆栈区和SP的内容如何变化?mov ax,8057h push ax mov ax,0f79h push ax pop bx pop[bx] 〔解答〕 mov ax,8057h push ax mov ax,0f79h push ax pop bx;bx=0f79h pop[bx];DS:[0f79h]=8057h

java入门到精通课后练习和答案(1-6章)

1.9练一练 一.填空题 1.运行编译后的class文件,需要输入命令java 2.JVM是指java虚拟器 3.Java程序源文件扩展名为java 二,简答题 1.简述java语言的特点 (1)简洁有效(2)可移植性(3)面向对象(4)解释型(5)适合分布式计算 2.java虚拟器的作用是什么? 答:保证编译后的java代码能够在安装java虚拟器的系统上运行。 2.5练一练 一.填空题 1.java程序是从main()处开始运行的。 2.在java中,多行注释的开始和结束标记分别为/*和*\。 3.声明1个名称“count”的整形变量的语句为int count; 4.Java程序中的标识符可由字母、数字、下划线和美元符号组成,但不能以数字开头,不能保留java保留的关键字。 二、简答题 1.简述设置变量的3种方法。 (1)在声明前设置 (2)在声明后设置 (3)在任何位置声明设置 2.简述提高程序可读性的两种方法。 *添加注释*使用缩进方法编写 3.4练一练 1.Eclipse是IBM花巨资开发的IDE集成开发环境(Intergrated Development Environment)。 2.【源代码】菜单中所包含的命令都是和代码编写相关的,主要用于源代码工作。 3.选择【文件】>【新建】>【项目...】命令,打开【新建项目】对话框。 二.简答题 1.Eclipse提供了哪两种程序调试方式? *java应用程序*调试 2.取消Eclipse启动时出现的设置工作空间的对话框的具体方法是什么? Eclipse启动时在【设置工作空间】的对话框中选中【将此值用作缺省值并且不再询问】复选框。 4.3练一练 1.变量是利用声明的方式,将内存中的某个块保留下来以供程序使用 2.常量就是固定不变的量,一旦被定义,它的值就不能再被改变。 3.当常量用于一个类的成员变量时,必须给常量赋值,否则会出现编译错误。 二.简答题 1.简述变量的命名规则 Java程序中的标识符可由字母、数字、下划线和美元符号组成,但不能以数字开头,不能保留java保留的关键字。 2.按作用范围划分,变量是如何划分的?

部分语言学课后练习答案

II.Give the description of the following sound segments in English. 1. [?] voiceless dental fricative 2. [?]: voiceless postalveolar fricative 3. [?]: velar nasal 4. [d]: voiced alveolar stop 5. [p]: voiceless bilabial stop 6. [k]: voiceless velar stop 7. [l]: alveolar lateral 8. [i]: high front lax unrounded vowel 9. [u:]: high back tense rounded vowel 10. [?]: low back lax rounded vowel III. Give the IPA symbols for the sounds that correspond to the descriptions below. 1.voiceless labiodental fricative: [f] 2.voiced postalveolar fricative: [?] 3.palatal approximant: [j] 4.voiceless glottal fricative: [h] 5.voiceless alveolar stop: [t] 6.high-mid front unrounded vowel: [i] 7.high central rounded vowel: [] 符号里没找到,就是在语音[U]上划一横 8.low front rounded vowel: [?] 9.low-mid back rounded vowel: [?] 10. high back rounded tense vowel: [u:] V. Discuss the following questions. 4) To what extent is phonology related to phonetics and how do they differ? Phonetics is the branch of linguistics studying the characteristics of speech sounds and provides methods for their description, classification and transcription. Phonology is the study of sound systems that occur in a language and the patterns where they fall in. Minimal pairs, phonemes, allophones, free variation, complementary distribution, etc., are all to be investigated by a phonologist. Both are concerned with the same aspect of language----the speech sounds. But they differ in their approach and focus. Phonetics is of general nature; it is interested in all the speech sounds used in all human languages; it focuses on chaos. Phonology aims to discover how speech sounds in a language form patterns and how these sounds are used to convey meaning in linguistic communication. A phonologist studies what he believes are meaningful sounds related with their semantic features, morphological features, and the way they are conceived and printed in the depth of the mind. Phonological knowledge permits a speaker to produce sounds which form meaningful utterances, to recognize a foreign “accent”, to make up new words, to add the appropriate phonetic segments to form plurals and past tenses, to know what is and what is not a sound in one?s language. It focuses on order.

Java语言程序设计课后习题答案

Java语言程序设计(郑莉) 第二章习题答案 1.什么是对象、类,它们之间的联系 答:1)对象是包含现实世界物体特征的抽象实体,它反映系统为之保存信息和与它交互的能力。对象是一些属性及服务的封装体,在程序设计领域,可以用“对象=数据+作用于这些数据上的操作”来表示。现实生活中对象是指客观世界的实体;在程序中对象是指一组变量和相关方法的集合。 2)类是既有相同操作功能和相同的数据格式的对象的集合与抽象!3)两者的关系:对象是类的具体实例.。 2.什么是面向对象的程序设计方法它有那些基本特征 答:面向对象程序设计从所处理的数据入手,以数据为中心而不是以服务为中心来描述系统。它把编程问题视为一个数据集合,数据相对于功能而言,具有更强的稳定性。 它的特征:抽象,封装,继承,多态。 3(无用) 4.请解释类属性、实例属性及其区别。 答:实例属性,由一个个的实例用来存储所有实例都需要的属性信息,不同实例的属性值可能会不同。 5.请解释类方法、实例属性及其区别。 答:实例方法表示特定对象的行为,在声明时前面不加static修饰符,在使用时需要发送给一个类实例。 类方法也称为静态方法,在方法声明时前面需加static修饰符,类方法表示具体实例中类对象的共有行为。 区别:实例方法可以直接访问实例变量,调用实例方法,实例方法可以直接访问类变量,调用类方法;类方法可以直接调用类变量和类方法,类方法不能直接调用实例变量和实例方法; 6.类的访问控制符有哪几种具体含义及其区别。 答:类的访问控制符只有public(公共类)及无修饰符(默认类)两种。 区别:当使用public修饰符时表示所有其他的类都可以使用此类;当没有修饰符时,则只有与此类处于同一包中的其他类可以使用类。 7类成员的访问控制符有哪几种他们对类成员分别有哪些访问限制的作用 答:类成员的访问控制符有 public,private,protecte及无修饰符. public(公有的):用public修饰的成分表示公有的,也就是它可以被其他任何对象访问(前提是对累成员所在的类访问有访问权限). Private(保护的):类中限定为private的成员只能被这个类本身 访问,在类外不可见。 proteced(保护的)用该关键字修饰的成分是受保护的,只可以被同一类及其子类的实例对象访问。 无修饰符(默认的):public,private,protected这个三个限定符不是必须写的。如果不写,则表明是“friendly”,相应的成分可以被所在保重的各类访问。 8简述构造方法的特点答:构造方法主要有以下特点: (1)构造方法的方法名与类名相同; (2)构造方法没有返回类型(修饰符void也不能有);(3)构造方法通常被声明为公有的(public); (4)构造方法可以有任意多个参数; (5)构造方法的主要作用是完成对象的初始化工作; (6)构造方法不能在程序中显式的调用; (7)在生成一个对象时,系统会自动调用该类的构造方法为新生成的对象初始化。 9如果在类声明中声明了构造方法,系统是否还提供默认的构造方法 答: 用户在进行类声明时,如果没有声明任何构造方法,系统会赋给此类一个默认(无参)的构造方法。但是,只要用户声明了构造方法,即使没有声明无参的构造方法,系统也不会再赋默认的构造方法。 10:声明Patient类表示在门诊室中的病人。此类对象应包括name(astring)\sex(achar)、age(an integer)、weight(a float0、allergies(a boolean). 声明存取及修改方法。在一个单独的累中,声明测试方法,并生成两个patient的例子: Atient april=new Patient(); (“zhangli”) (‘f’);; (330; ; (true); 那么:”+()); ”+()); ”+()); (“weught: ”+());\ ”+()); 声明并测试toString()方法显示一个病人的aga、sex、name及allergies属性。 答: public class Patient { private String name; private char sex; private int age; private float weight; private boolean allergies; public void setname(String a) { name=a; } public void setsex(char b) { sex=b; }

汇编语言课后习题解答

第1章基础知识 检测点1.1(第9页) (1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为13位。 (2)1KB的存储器有1024个存储单元,存储单元的编号从0到1023。 (3)1KB的存储器可以存储8192(2^13)个bit,1024个Byte。 (4)1GB是1073741824(2^30)个Byte、1MB是1048576(2^20)个Byte、1KB是1024(2^10)个Byte。 (5)8080、8088、80296、80386的地址总线宽度分别为16根、20根、24根、32根,则它们的寻址能力分别为: 64(KB)、1(MB)、16(MB)、4(GB)。 (6)8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。则它们一次可以传送的数据为: 1(B)、1(B)、2(B)、2(B)、4(B)。 (7)从内存中读取1024字节的数据,8086至少要读512次,80386至少要读256次。 (8)在存储器中,数据和程序以二进制形式存放。

(1)1KB=1024B,8KB=1024B*8=2^N,N=13。 (2)存储器的容量是以字节为最小单位来计算的,1KB=1024B。 (3)8Bit=1Byte,1024Byte=1KB(1KB=1024B=1024B*8Bit)。 (4)1GB=1073741824B(即2^30)1MB=1048576B(即2^20)1KB=1024B(即2^10)。(5)一个CPU有N根地址线,则可以说这个CPU的地址总线的宽度为N。这样的CPU 最多可以寻找2的N次方个内存单元。(一个内存单元=1Byte)。 (6)8根数据总线一次可以传送8位二进制数据(即一个字节)。 (7)8086的数据总线宽度为16根(即一次传送的数据为2B)1024B/2B=512,同理1024B/4B=256。 (8)在存储器中指令和数据没有任何区别,都是二进制信息。

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工具?(多选)ABCD A、Java编译器 B、Java运行工具 C、Java文档生成工具 D、Java打包工具 2、Java属于以下哪种语言?C A、机器语言 B、汇编语言 C、高级语言 D、以上都不对 3、下面哪种类型的文件可以在Java虚拟机中运行?D A、.java B、.jre C、.exe D、.class 4、安装好JDK后,在其bin目录下有许多exe可执行文件,其中java.exe命令的作用是以下哪一种?B A、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;

徐通锵 叶蜚声 《语言学纲要》学习指导书课后习题答案

《语言学概论》学习辅导书参考答案(导言) 一、名词解释(20分,每小题4分) 1.语言学:就是以语言为研究对象的科学,研究语言的本质、语言的结构和发展规律。 2.小学:指我国传统的语文学,包括文字学、音韵学、训诂学三方面的内容。 3.专语语言学:也叫具体语言学、个别语言学,以一种(或几种有联系的)语言为研究对象,研究某一种语言的结构。 4.共时语言学:以同时的、静态分析的方法,研究语言相对静止的状态,描写分析语言在某一个时期、某一个阶段的状况,是从横向的方面研究语言。 5.历时语言学:从历时的、动态的角度研究语言发展的历史,观察一种语言的各个结构要素在不同发展阶段的历史演变,是从纵向的方面研究语言的历史。 二、填空题(20分,每空1分) 1.中国? 印度? 古希腊-罗马具有悠久的历史文化传统,是语言的三大发源地。 2.文字学? 音韵学? 训诂学? 是我国传统的语文学。 3.研究语言的结构,主要是研究语音? 词汇和语义? 语法三个部分。 4.运用语言传递信息的过程,可分为编码? 发送? 传递? 接收解码五个过程 5.专语语言学可以从纵向和横向研究语言,由于研究角度不同,所以又分为历时语言学和共时语言学 6.历史比较语言学的建立,标志着语言学开始走上独立发展的道路。 7.布隆菲尔德的代表着作《语言论》,是美国结构主义语言学的奠基性着作。 8.索绪尔被称为现代语言之父,其代表作有《普通语言学教程》 三、问答题(60分,每小题10分) 1.古代的语言研究和今天的语言研究有哪些不同? ①研究对象不同:古代的语言学主要以书面语为主要研究材料,不重视口头语言的研究,而今天的语言学则十分重视口语研究,如制定语言规范,确立共同语的各方面标准等,都要依据口语的研究成果; ②研究目的不同:古代语言学研究语言,主要是给政治、哲学、宗教、历史、文学方面的经典着作作注解,比如我国古代的语文学主要就是围绕阅读先秦经典着作的需要来研究文言的,而现代语言学的研究目的主要是分析语言的结构,以此探讨语言发展的共同规律。 2.语言交际过程分哪几个阶段?请举例具体说明 可分为编码、发送、传递、接收、解码五个阶段。编码就是发话人利用词语组织语句;发送就是把思维成果变成话语,通过发音器官表达出来;传递就是通过空气振动形成声波,把话语传达给受话人;接收是受话人利用听觉器官感知对方所说的话;解码则经过大脑的思维把声波还原成语言,理解对方话语的含义,从而完成信息传递接收。如果受话人收到语言信息有所反馈,那么上述五个阶段则又重复一遍,只是发话人与受话人调换了。 3.“语言学既是一门古老的科学,又是一门年轻的科学;既与社会科学有密切的联系,有与自然科学有密切的联系。”怎样理解这段话的含义? 语言是伴随着人类一起出现的,是人类社会生活必不可少的,所以人类很早就注意到了语言的重要性,很早就注意研究语言,所以语言学是古老的,但语言学直到18世纪下半叶,产生了历史比较语言学,后来又建立了语言学的各个部门,语言研究才发展成为一门独立的学科,同其它学科相比,语言学的确是十分年轻的。语言是社会现象,与社会的政治、经济、文化、历史等密切相关,而语言的发生又与物理、生理、心理等学科密切相关,而现代社会语言与语言的信息处理(如机器翻译、语码转换等)又涉及到数学、计算机科学,所以语言学既与社会科学有密切的联系,又与自然科学有密切的联系。正因为如此,随着语言学与别的学科的交融,又产生了许多新的语言学分支学科,如社会语言学、心理语言学、统计语言

汇编语言课后习题答案___郑晓薇(整理后的)

习题一 1 无符号数: 11010011=211=D3H,01110111=119=77H, 10000011=131=83H, 00101111=47=2FH, 10101010=170=AAH 带符号数:11010011= -45=D3H,01110111=+119=77H,10000011= -125=83H, 00101111=+47=2FH,10101010= -86=AAH 2 5E8AH,0BE6H,3DEH,4940H 3 00011101+00110101=01010010=5 2H=82 01001001+11101000=00110001=3 1H=49 10111110+01010010=00010000=1 0H=16 10011010+11110001=10001011=8 BH= -117 4 00101001+01010011=01111100+0 0000110=10000010=82H=82 01110011-00100100=01001111-00000110=01001001=49H=49 01100110+00011000=01111110+0 0000110=10000100=84H=84 0000000100110010+01110101=00 00000110100111+00000110 =0000001000000111=0207H=207 5 000020A3H,FF94H,00003456H,007FH,FFFFEC00H 6 无符号数:0~65535,0000H~FFFFH;带符号数:-32768~+32767,8000H~7FFFH 7 (1) 38H等于十进制数56,是十进制数56的补码,数字8的ASCII码,十进制数38的压缩BCD码 (2) FFH等于十进制数-1,是带符号数-1的补码,无符号数为255 (3) 5AH等于十进制数90,是十进制数90的补码,大写字母Z的ASCII码 (4) 0DH等于十进制数13,是十进制数13的补码,回车符的ASCII码 8 (1) 108=01101100B=6CH,补码01101100B,压缩BCD码0000000100001000,ASCII码313038H (2) 46=00101110B=2EH,补码00101110B,压缩BCD码01000110,ASCII码3436H (3) –15=11110001B=F1H,补码11110001B,ASCII码2D3135H (4) 254=0000000011111110B=00FEH,补码0000000011111110B,压缩BCD 码0000001001010100,ASCII码323534H 9 (1) 56+63=01110111B,CF=0,SF=0,ZF=0,OF=0 (2) 83-45=00100110B,CF=0,SF=0,ZF=0,OF=0 (3) -74+29=11010011B,CF=0, SF=1,ZF=0,OF=0 (4) -92-37=01111111B,CF=1, SF=0,ZF=0,OF=1 10 回车、换行、响铃、ESC键、空格键、@、P、p 习题二 9 最少划分为16个逻辑段,最多划分为65536个逻辑段(每段16个字节) 10 CS:IP,DS:BX、SI、DI,ES:BX、SI、DI,SS:SP、BP 11 字节单元保存8位数,字单元保存16位数。根据源操作数的属性确定要访问的是字节单元还是字单元。 12 对于字节单元来说,偶地址和奇地址一样;对于字单元而言,最好用偶地址保存,可减少CPU的访存次数。 13 首单元的物理地址=38AE8H,末单元的物理地址 =38AE8H+7FFFH=40AE7H

JAVA实用教程(第三版)课后习题答案

第一章Java语言概述 2.“java编译器将源文件编译为的字节码文件是机器码”这句话正确吗? 答:不正确 3.java应用程序的主类必须含有怎样的方法? 答:含有main方法 4。“java应用程序必须有一个类是public类”这句话正确吗? 答;不正确,只能有一个public类 5。“java Applet程序的主类必须是public类”这句话正确吗? 答:正确,因为java Applet主类必须是Applet类的子类并且是public 的类 6。请叙述java源程序的命名规则。 答:与public的类同名。 7。源文件生成的字节码文件在运行时都加载到内存中吗? 答:非也,动态随需要运行才加载。 8.面向对象的程序设计语言有那些基本特征? 答:封装;继承;多态性。 9.在Java程序中有多个类文件时,用Java命令应该运行那个类?答:具有main方法的类 第二章基本数据类型和数组 4。下列哪些语句是错的?

Int x=120; Byte b=120; b=x; 答:B=x;错应为b=(byte)x 5。下列哪些语句是错的? 答:y=d;错,应y=(float)d 6。下列两个语句是等价的吗? Char x=97; Char x=…a?; 答:是等价的。 7。下列system.out.printf语句输出结果是什么? Int a=97; Byte b1=(byte)128; Byte b2=(byte)(-129); System.out.printf(“%c,%d,%d”,a,b1,b2); 如果输出语句改为: System.out.printf(“%d,%d,%d”,a,b1,b2); 输出什么? 答:输出a ,-128,127 修改后输出97,-128,127 8.数组是基本数据类型吗?怎样获取数组的长度? 答:不是基本数据类型,是复合数据类型。可以通过:数组名.length

岑运强《语言学基础理论(修订版)》习题答案

《语言学基础理论(修订版)》部分习题答案 第一章总论. □言语是 ×. 言论与语言×. 音义结合的符号系统 √. 说话和所说的话 □语言是一种 ×. 形式和内容相统一的视觉符号 √. 音义结合的听觉符号系统 ×. 用来交际的触觉符号系统 □抽象思维的一般特性是 ×. 概括性、民族性×. 概念、判断、推理 ×. 固定、再现、改造√. 概括性、社会性 □语言是思维的工具指的是 ×. 一切思维必须由语言完成 √. 主要指抽象思维和直观动作思维、形象思维的高级阶段离不开语言×. 指直观动作思维和表象思维离不开语言 □思维的三种类型是

√. 直观动作思维、表象思维、抽象思维 ×. 概念、判断、推理 ×. 固定、再现、改造 □语言符号的任意性是 ×. 语言符号的创造和使用总是任意的 ×. 我们可以任意理解语言的符号 √. 语言符号音义之间没有本质的联系 □语言符号的线条性 ×. 语言符号的排列没有阶级性,象一根线条排列在一起 ×. 语言符号一个跟一个依次出现,随时间推移不分层次逐渐延伸√. 语言符号在时间的线条上逐个出现,同时不排除层次性 □“他肯定不会来了!”这句话强调了说者的 ×. 说话行为√. 施事行为 ×. 取效行为×. 言语行为 □汉语声调从中古到现代的“平分阴阳,入派三声”的规律是√. 个别语言的发展规律×. 一般语言的发展规律 ×. 汉民族各种方言的发展规律 □一个民族内部共同使用的语言称为

√. 民族共同语×. 民族交际语 ×. 国际交际语 □克里奥尔语是语言的 √. 混合×. 融合 ×. 分化×. 整化 □语言融合的“底层”现象是 ×. 语言装置的最下面一层,即语音部分√. 被融合的语言的某些遗留下来的因素×. 被压迫的阶层 第二章语音 □声调决定于 √. 音高×. 音强 ×. 音长×. 音质 □[p、t?、b、k]在发音方法上的共同特点是×. 清音×. 不送气 √. 塞音×. 擦音 □舌尖后浊擦音是

《Java语言程序设计基础教程》习题解答

《Java语言程序设计基础教程》练习思考题参考答案

第1章Java程序设计概述 1.9 练习思考题 1、Java运行平台包括三个版本,请选择正确的三项:() A. J2EE B. J2ME C. J2SE D. J2E 解答:A,B,C 2、Java JDK中反编译工具是:() A. javac B. java C. jdb D. javap 解答:D 3、public static void main方法的参数描述是:() A. String args[] B. String[] args C. Strings args[] D. String args 解答:A,B 4、在Java中,关于CLASSPATH环境变量的说法不正确的是:() A. CLASSPATH一旦设置之后不可修改,但可以将目录添加到该环境变量中。 B. 编译器用它来搜索各自的类文件。 C. CLASSPATH是一个目录列表。 D. 解释器用它来搜索各自的类文件。 解答:A 5、编译Java Application源文件将产生相应的字节码文件,扩展名为() A. .java B. .class C. .html D. .exe 解答:B 6、开发与运行Java程序需要经过的三个主要步骤为____________、____________和____________。 7、如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,则类MyApplet必须是______类的子类并且存储该源程序文件的文件名为______。 8、如果一个Java Applet程序文件中定义有3个类,则使用Sun公司的JDK编译器编译该源程序文件将产生______个文件名与类名相同而扩展名为______的字节码文件。 9、开发与运行Java程序需要经过哪些主要步骤和过程? 10、Java程序是由什么组成的?一个程序中必须要有public类吗?Java源文件的命名规则是怎么样的? 11、编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,很高兴学习Java”和“We are students”。

汇编语言复习题(附答案)

汇编语言复习题 注:蓝色标记的为答案,此答案仅供参考,大家自己做一下或看以一下,认为不对的地方,可以提出来一起讨论一下,另外看一下课后老师布置的相应作业。在此文档最后最后附有课后四、六章的答案,大家抓紧时间复习哦! 一、选择题 1.把要执行的程序与库文件连接起来形成可执行文件的系统程序是( B ) 。 A.汇编程序 B.连接程序 C.机器语言程序 D.源代码程序 2.在8088/8086的寄存器组中,CPU确定下一条指令的物理地址时需要用到的寄存器对是 ( C )。 A..SS和SP B.DS和DI C.CS和IP D.ES和SI 3.为了使主机访问外设方便起见,外设中的每个寄存器给予一个( C )。 A.物理地址 B. 逻辑地址 C. 端口地址 D.段地址 4.MOV AX,3064H,该指令中源操作数采用的寻址方式是( A )。 A.立即 B.直接 C.寄存器相对 D.寄存器间接 5.换码指令的助记符是( C )。 A. XCHG B. LEAS C.XLAT D. MOV 6.如果A≥B(A、B有符号数)发生转移,应选择的条件转移指令是 ( JGE )。 7.下列符号中,可用作标识符的是( C )。 A.MOV B.AX C.MSG1 D.1ABC 8.X DB 10H DUP(1,2)内存变量定义语句拥有了( A )个字节的存储空间。 A.20D B.10D C.20H D.10H 9.当DF=0时,执行串操作指令MOVSB,变址寄存器SI、DI的值将( C )。 A. 不变 B.减1 C.加1 D.无法确定 10.如下指令可将AX寄存器内容改变的是( A )。 A.AND AX , BX B.TEST AX , BX C.CMP AX , BX D.XCHG AX , AX 11.16位CPU支持的I/O地址范围是( D )。 A.0~0FFFFFH B.0~0FFFFH C.0~0FFFH D.0~0FFH

java课后习题及答案

第一章JA V A语言概论 一、选择题 1. 下列不属于java语言特点的是:B A. java能检查程序在变异和运行时的错误 B. java 能运行虚拟机实现跨平台 C. java 自己操纵内存减少了内存出错的可能性 D. java 还实现了真数组,避免了覆盖数据的可能 2. java语言的执行模式是:C A. 全编译型 B. 全解释型 C. 半编译和半解释型 D. 同脚本语言的解释模式 3. 下列关于虚拟机说法错误的是:B A. 虚拟机可以用软件实现 B. 虚拟机部可以用硬件实现 C. 字节码是虚拟机的机器码 D. 虚拟机把代码程序与各操作系统和硬件分开 4. java语言是1995年由()公司发布的A A. Sun B. Microsoft C. Borland D. Fox Software 5. 下列不是虚拟机执行过程特点的是A A. 双线程 B. 多线程 C. 动态链接 D. 异常处理 6. java以JVM为基础,最下层是移植接口,由适配器和()组成B A. 网卡 B. Java os C. Java基本类 D. Java 应用程序和applet小程序 7. java程序的执行过程中用到一套JDK工具,其中javac.exe指A A. java语言编译器 B. java字节码解释器 C. java文档生成器 D. java类分解器 8. java的API结构中,不属于类库主要包括的核心包的是C A. java包 B. javax C. javadoc包 D. org扩展包 9. 每个java的编译单元可包含多个类或界面,但是每个编译单元最多只能有()类或者界面是公共的A

语言学Chapter课后练习答案

Chapter 4 Revision Exercises 1. What is syntax? Syntax is a branch of linguistics that studies how words are combined to form sentences and the rules that govern the formation of sentences. 2. What is phrase structure rule? The grammatical mechanism that regulates the arrangement of elements (i.e. specifiers, heads, and complements) that make up a phrase is called a phrase structure rule. The phrase structural rule for NP, VP, AP, and PP can be written as follows: NP→(Det) N (PP) ... VP→(Qual) V (NP) ... AP→(Deg) A (PP) ... PP→(Deg) P (NP) ... We can formulate a single general phrasal structural rule in which X stands for the head N, V, A or P. The XP rule: XP→(specifier) X (complement) 3. What is category? How to determine a word’s category? Category refers to a group of linguistic items which fulfill the same or similar functions in a particular language such as a sentence, a noun phrase or a verb. To determine a word's category, three criteria are usually employed, namely meaning, inflection and distribution. The most reliable of determining a word’s category is its distribution. 4. What is coordinate structure and what properties does it have? The structure formed by joining two or more elements of the same type with the help of a conjunction is called coordinate structure. It has four important properties: 1)there is no limit on the number of coordinated categories that can appear prior to the conjunction. 2) a category at any level (a head or an entire XP) can be coordinated. 3)coordinated categories must be of the same type. 4)the category type of the coordinate phrase is identical to the category type of the elements being conjoined. 5. What elements does a phrase contain and what role does each element play? A phrase usually contains the following elements: head, specifier and complement. Sometimes it also contains another kind of element termed modifier. The role each element can play:

相关主题
文本预览
相关文档 最新文档