当前位置:文档之家› Java程序设计实用教程课后习题答案 --金保华(科学出版社)

Java程序设计实用教程课后习题答案 --金保华(科学出版社)

Java程序设计实用教程课后习题答案 --金保华(科学出版社)
Java程序设计实用教程课后习题答案 --金保华(科学出版社)

第一章

JAVA语言的特点:

1.简单性

2.面向对象性

3.分布式与安全性

4.与平台无关性

5.编译和解释特性

6.多线程

7.

动态执行8.自动废区回收性9.丰富的API文档和类库

第二章

1.Java语言对标识符的组成有何要求?

标识符用来标识类名,变量名,方法名,类型名,数组名,文件名的有效序列称为标识符。简单地说,标识符就是一个名字。Java语言规定标识符由字母,下划线,美元符号和数字组成,并且第一个字符不能是数字字符。标识符不能是关键字,但是它可以包含关键字作为它的一部分。

2.如何定义变量和常量?

常量:关键字+数据类型+常量名称=常量值

如final datatype CONSTNAME=VALUE

变量:变量声明要三部分:变量类型,变量名,初始值

int x=1;

3.java的数据类型有哪些?

1)布尔类型:boolean(逻辑型)true or false 默认是false

2)整数类型

byte(字节类型) 一个byte 8位,占用1个字节例32B 默认是0

取值范围是-27—27-1 -128~127

short(短整型) 一个short 16位,占用2个字节例32S默认是0

取值范围是-215—215-1 -32768~32767

int(整型) 一个int 32位,占用4个字节例32默认是0

取值范围是-231—231-1 -2147483648~2147483647

long(长整型) 一个long 64位占用8个字节例32L默认是0

取值范围是-263—263-1 -9223372036854774808~9223372036854774807

3)字符型

char 用‘单个字符’表示无符号unicode字符例’a’‘1’

取值范围是\u0000~\uFFFF

4)浮点类型分

float(单精度浮点型)一个float 32位,占用4个字节例3.2F默认是0.0f

取值范围是3.4e-038—3.4e+038

double(双精度浮点型) 一个double 64位,占用8个字节例3.2 默认是0.0

取值范围是1.7e-038—1.7e+038

4.利用if语句判断两个数是否相等。

public class IFstatement{

public static void main(String[] args){

int a = 2,b=1;

if (a=b){

System.out.println("a=b")

}

else

System.out.println("a不等于b");

}}

5.利用if-else语句判断某一具体年份是否为瑞年。

public class YUNNIANstatement{

public static void main(String[] args){

int x=2010;

if((x%4==0&&x%100!=0)||(x%4==0&&x%400==0)){

System.out.println("该年为闰年");

}else{

System.out.println("该年为平年");

} }}

6.利用switch语句实现如下功能:根据用户输入的年份和月份,有程序判断该年的该月有多少天。

public class TTIANSHUstatement

{

public static void main(String[] args)

{

int y=0,m=0,n=0;

y=Integer.parseInt(args[0]);

m=Integer.parseInt(args[1]);

switch(m)

{

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

System.out.println(31);

break;

case 4:

case 6:

case 9:

case 11:

System.out.println(30);

break;

case 2:

{

if((y%4==0&&y%100!=0)||(y%4==0&&y%400==0))

n=28;

else

n=29;

System.out.println(n);

}

break;

default:

System.out.println("输入错误");

} }}

7.利用两种不同的循环语句计算10的阶乘。

public class JIECHENGstatement{

public static void main(String[] args){

int x,sum=1;

for(x=10;x>1;x--){

{

sum=sum*x;

}

}

System.out.println(sum);

}}

8.计算10-100之间的所有素数之和。

public class SUSHUstatement{

public static void main(String[] args){

int n,x,sum=0;

for(n=10;n<=100;n++)

{

for(x=2;x

{

if(n%x==0)

break;

}

if(x==n)

{

sum=sum+n;

}

}

System.out.println(sum);

}}

9.如何定义多维数组.

数据类型[][] 数组名称;数据类型[] 数组名称[];数据类型数组名称[][];

第三章

1.定义一个类,仔细观察类中各部分的详细声明。

2.假设在图书管理系统中有一个读者借阅信息类,包括:

属性:书名,作者,出版社,借书时间,还书时间,应还时间,超期时间,罚款金额。方法:设置书名,设置作者。这只出版社,获取书名,获取出版社信息。

声明并定义该类。

class Books{

private String name;

private String authors;

private String publisher;

private double borrowtime;

private double returntime;

private double needreturntime;

private double overdays;

private double money:

public Books(){

}

public books(String Name,String Authors,String Publisher,double Borrowtime,double Returntime,double Needreturntime,double Overdays,double Money){

name=Name;

authors=Authors;

publisher=Publisher;

borrowtime=Borrowtime;

returntime=Returntime;

needreturntime=Needreturntime;

overdays=Overdays;

money=Money;

}

public String getName(){

return name;

}

public viod setName(String Name){

name=Name;

}

public String getAuthors(){

return authors;

}

public viod setAuthors(String Name){

authors=Authors;

}

public String getAuthors(){

return authors;

}

public viod setAuthors(String Name){

authors=Authors;

}}

3.在2题基础上创建读者借阅信息类的构造函数,重新创建该类的对象,并输出对象基本信息

4.构造函数的作用是什么?在习题3的基础上添加读者借阅信息类的构造函数,重新创造该类的对象,并输出对象的基本信息。

构造函数作用:

1)对象初始化。

2)引入更多灵活度。

3)java语言中可以不定义构造函数。

5.说明Static声明属性,方法和不用static限制的区别。

声明属性:定义静态数据的简单方法就是在属性的前面加上关键字static。

方法:静态方法的定义和非静态方法的定义在形式上没有什么区别,只是在声明为静态方法前面加上一个关键字static。

区别:1.在外部调用静态方法时,可以使用“类名.方法名”的方式,也可以使用“对象名.方法名”的方式。而实例方法只有后面这种方式。也就是说,调用静态方法无需创建对象。

2.静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和ing 太方法),不能访问非你高抬的成员变量。

6.Java语言中的访问控制符有几个?分别说明他们对类中成员的限制作用。

属性和方法的访问控制符有四种:private, 缺省控制符, protected, public

同一类中同一包中同一子类中通用(其它)private Yes

缺省控制符Yes Yes

protected Yes Yes Yes

public Yes Yes Yes Yes

7.final的作用是什么?

final方法

将方法声明为final,那就说明你已经知道这个方法提供的功能已经满足你要求,不需要进行扩展,并且也不允许任何从此类继承的类来覆写这个方法,但是继承仍然可以继承这个方法,也就是说可以直接使用。

final类

当你将final用于类身上时,你就需要仔细考虑,因为一个final类是无法被任何人继承的,那也就意味着此类在一个继承树中是一个叶子类,并且此类的设计已被认为很完美而不需要进行修改或扩展。

第四章

1.子类和父类的关系是什么?怎样实现父子类之间成员和成员方法的隐蔽?

继承,是对有着共同特性的多类事物,进行再抽象成一个类。这个类就是多类事物的父类。父类的意义在于可以抽取多类事物的共性。子类中有和父类中可访问(可继承到子类)的同名同返回类型同参数表的方法,就会覆盖从父类继承来的方法。

怎样实现父子类之间成员和成员方法的隐蔽。。没找到!

2.方法的覆盖和重载区别是什么?

重载与覆盖的区别:

1、方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系。

2、覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。

3、覆盖要求参数列表相同;重载要求参数列表不同。

4、覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调用时的实参表与形参表来选择方法体的。

3.this和super的含义是什么?

关键字this和super是常用来指代父类和子类对象的关键字。

1.当一个方法引用自身对象时,就使用this关键字。

.想通过构造方法将外部传入的参数赋值给类的成员变量,构造方法的形式参数名称与类的成员名称变量名相同。

.假设有一个容器类和一个部件类,在容器类的某个方法中要创建部件类的实例对象,而部件类的构造方法要接受一个代表其所在容器的参数。

.构造方法是在产生对象时被JAVA系统自动调用的,不能再程序中像调用其他方法一样去调用构造方法.

2.super关键字表示的是对当前对象的直接父类对象,是对当前对象的直接父类对象的引用。

4.抽象类和接口的概念是什么?两者区别在哪?

抽象类就是没有具体对象的概念类,是其所有子类的公共属性的集合,所以使用抽象类的一大优点就是可以充分利用这些公共属性来提高开发和维护程序需的效率。

接口是JAVA实现多重能继承功能的一种手段,一种结构。

区别:接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的,

另外,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。

还有,接口可以实现多重继承,而一个类只能继承一个超类,但可以通过继承多个接口实现多重继承,接口还有标识(里面没有任何方法,如Remote接口)和数据共享(里面的变量全是常量)的作用.

5.包的概念是什么,如何创建和使用包?

一个包就是一些提供访问保护和命名空间管理的相关类与接口的集合。使用包的目的就是使类更容易查找和使用,防止命名冲突,以及进行控制访问。

创建包要创建包,只需要在java源程序的第一行输入package命令即可package 包

使用包不知道

第五章

1.String和StringBuffer有什么区别?

String类表示了定长,不可变的字符序列。

StringBuffer类可以插入其中或追加其后的字符或字符串,还可以针对这些添加操作自动地增加空间,同时它通常还有比实际需要更多的预留字符,从而允许增加空间。

2.在Vector对象中存放10位学生的姓名,学号,3门成绩,并输出。

import java.util.*;

public class VectorTest {

public static void main (String[] args)throws Exception

{ Vector vector1 = new Vector();

Vector vector=vector1.getClass().newInstance();

String s1="杜昊凡学号08 成绩98 80 88";

String s2="寇晔学号16 成绩98 80 88";

String s3="夏雪艳 42 成绩98 80 88";

String s4="孟春颖 27 成绩98 80 88";

String s5="冯媛 07 成绩98 80 88";

String s6="张颖喆 52 成绩98 80 88";

String s7="史瑞辉32 成绩98 80 88";

String s8="肖博 40 成绩98 80 88";

String s9="宋鹏 38 成绩98 80 88";

String s10="王丹 48 成绩98 80 88";

vector.add(s1);

vector.add(s2);

vector.add(s3);

vector.add(s4);

vector.add(s5);

vector.add(s6);

vector.add(s7);

vector.add(s8);

vector.add(s9);

vector.add(s10);

for(int i=0;i

{ String in=(String)vector.get(i);

System.out.println(in);

} } }

3.编写程序,输入年月日,计算输入日期为星期几。import java.util.*;

public class DatelsWeek{

public static void main(String [] args){

Scanner sc = new Scanner(System.in);

System.out.print("请输入年份:");

int year = sc.nextInt();

System.out.print("请输入月份:");

int month = sc.nextInt();

System.out.print("请输入号数日:");

int day =sc.nextInt();

int total=0;

int week=2;

boolean a=true;

a=(year%400==0)||(year%4==0&&year%100!=0); year=year-1979;

total=(year-1)*365+year/4+year/100+year/400; switch(month-1){

case 12:total=total+31;

case 11: total=total+30;

case 10: total=total+31;

case 9: total=total+30;

case 8: total=total+31;

case 7: total=total+31;

case 6: total=total+30;

case 5: total=total+31;

case 4: total=total+30;

case 3: total=total+31;

case 2: if(a){

total=total+29;

}

else{

total=total+28;

}

case 1:total=total+31;

}

total=total+day-1;

week=(week+total)%7;

if(month==12&&day>31){

System.out.println("请输入正确日期");

}

else{

switch(week){

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;

}}}}

4.编程产生0-100之间的随机数。

public class random

{ public static void main (String args[])

{int i;

int a[]=new int [10];

for (i=0 ;i<10;i++)

a[i]=(int)(Math.random()*100);

for (i=0 ;i<1;i++)

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

}}

5.如何获得系统的当前时间。

import java.util.*;

class Data

{ public static void main(String args[])

{ Calendar calendar=Calendar.getInstance();

calendar.setTime(new Date());

String 年=String.valueOf(calendar.get(Calendar.YEAR)),

月=String.valueOf(calendar.get(Calendar.MONTH)+1),

日=String.valueOf(calendar.get(Calendar.DAY_OF_MONTH)),

星期=String.valueOf(calendar.get(Calendar.DAY_OF_WEEK)-1); int hour=calendar.get(Calendar.HOUR_OF_DAY),

minute=calendar.get(Calendar.MINUTE),

second=calendar.get(Calendar.SECOND);

System.out.println("现在的时间是:");

System.out.println(""+年+"年"+月+"月"+日+"日 "+ "星期"+星期);

System.out.println(""+hour+"时"+minute+"分"+second+"秒");

} }

6.在Java程序中调用其他可执行的外部程序,执行,并输出程序的运行时间

第六章

1.简述异常的概念。

异常是程序运行过程中出现的错误。

2.请画出Java语言中异常的层次结构图。(p121页图6.2)

3.请描述throw和throws语言的区别

区别一: throw 是语句抛出一个异常;throws 是方法抛出一个异常;

throw语法:throw <异常对象>

在方法声明中,添加throws子句表示该方法将抛出异常。

throws语法:[<修饰符>]<返回值类型><方法名>([<参数列表>])[throws<异常类>]

其中:异常类可以声明多个,用逗号分割。

区别二: throws可以单独使用,但throw不能;

区别三:

throw要么和try-catch-finally语句配套使用,要么与throws配套使用。但throws可以单独使用,然后再由处理异常的方法捕获。

4.自定义一个异常类,从命令行获取两个数据,进行除法运算,如果分母为0或输入的不是两个参数,均异常抛出。

import java.io.*;

public class text

{

public static void main(String args[])throws IOException

{

int num1,num2,sum;

String str;

BufferedReader buf;

buf=new BufferedReader(new InputStreamReader(System.in));

System.out.println("Input the first integer:");

str=buf.readLine();

num1=Integer.parseInt(str);

System.out.print("Input the second integer:");

str=buf.readLine();

num2=Integer.parseInt(str);

sum=num1/num2;

System.out.println("The sum is "+sum);

}}

第七章

1.简述AWT和Swing两者的关系。

swing组件都是从awt组件继承的,swing是轻量组件,而awt是重量组件,每个组件都有一个本地peer,这就是为什么swing组件在大多数系统上显示都差不多而awt就反之了。 Swing组件与Awt相比,Swing组件显现出强大的优势。

1.丰富的组件类型

2.更好的组件API模型支持

3.标准的GUI库。

4.性能更稳定

2.创建一个标题为“欢迎使用图书管理系统'的窗口……

import java.awt.*;

import javax.swing.*;

public class MainFrame extends JFrame{

public MainFrame(){

this.setTitle("欢迎使用图书馆管理系统");

Container container=this.getContentPane();

container.setLayout(new BorderLayout());

JPanel panel=new JPanel();

panel.setBackground(Color.BLUE);

JButton bt=new JButton("Exit ");

panel.add(bt);

container.add(panel,BorderLayout.SOUTH);

this.setVisible(true);

this.setSize(600,450);

}

public static void main(String[]args){

new MainFrame();

}}

3.Java提供了几种布局管理器,他们之间的区别是什么?

java.awt提供了5种布局管理器:

1. FlowLayout

2. BorderLayout

3. GridLayout

4. CardLayout

5. GridBagLayout

Javax.swing还提供了

6. BoxLayout

区别:找不到,网上也没说清楚,抱歉

4.什么是事件适配器,它的优点是什么?

事件适配器,为一些Listener接口提供了适配器(Adapter)类通过继承事件所对应的Adapter类,只需重写需要的方法提供了一种简单的实现监听器的手段,可以缩短程序代码由于java的单一继承机制,当需要多种监听器或此类已有父类时,就无法采用事件适配器了。

优点:在实际开发中,在编写监听器代码时不再直接实现监听接口,而是继承适配器类并重写需要的事件处理方法,这样避免了编写大量不必要的代码。

第八章

1.编写程序,创建一个标签和一个命令按钮。单击命令按钮时。标签在“你好”和“再见”之间转换

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class JButtionJTextAreaDemo extends JFrame {

private JButton bt1;

private Container container;

private JLabel label;

public JButtionJTextAreaDemo() {

container = this.getContentPane();

bt1 = new JButton("确定");

label = new JLabel("你好");

bt1.addActionListener(new actionLis());

JPanel p1 = new JPanel();

p1.add(bt1);

p1.add(label);

container.add(p1, BorderLayout.CENTER);

this.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e)

{

System.exit(0); }});

this.setSize(600, 450);

this.setVisible(true);

}

class actionLis implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

if (e.getSource() == bt1)

{

if(label.getText()=="你好")

label.setText("再见");

else

label.setText("你好");

}}}

public static void main(String[] arg) {

new JButtionJTextAreaDemo(); }}

4.设置一个JLabel组件,开始内容为你好,设置三个JCheckBox,标题红绿蓝,设置三个JRadioButton组件,标题10,16,20,根据案件改变字体大小和颜色。

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

public class a extends JFrame implements ItemListener,ActionListener { private JLabel lb1;

private JCheckBox b1, b2, b3;

private Container container;

int red = 0, green = 0, blue = 0;

int fonti=10;

Font font;

public a() {

container = this.getContentPane();

ButtonGroup bt=new ButtonGroup();

JRadioButton d1=new JRadioButton("10");

JRadioButton d2=new JRadioButton("16");

JRadioButton d3=new JRadioButton("20");

b1 = new JCheckBox("红色");

b2 = new JCheckBox("绿色");

b3 = new JCheckBox("蓝色");

lb1 = new JLabel("你好");

lb1.setMaximumSize(new Dimension(150, 200));

container.add(lb1, BorderLayout.CENTER);

JPanel p1 = new JPanel();

p1.setLayout(new FlowLayout(FlowLayout.LEFT));

p1.add(b1);

p1.add(b2);

p1.add(b3);

p1.add(d1);

p1.add(d2);

p1.add(d3);

p1.setBackground(Color.red);

b1.addItemListener(this);

b2.addItemListener(this);

b3.addItemListener(this);

d1.addActionListener( this);

d2.addActionListener(this);

d3.addActionListener(this);

bt.add(b1);

bt.add(b2);

bt.add(b3);

bt.add(d1);

bt.add(d2);

bt.add(d3);

container.add(p1, BorderLayout.SOUTH);

this.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e)

{

System.exit(0);

}

});

this.setSize(450, 450);

this.setVisible(true); }

public void itemStateChanged(ItemEvent e) {

if (e.getItem() == b1)

if (e.getStateChange() == e.SELECTED)

lb1.setForeground(Color.red);

else red = 0;

if (e.getItem() == b2)

if (e.getStateChange() == e.SELECTED) lb1.setForeground(Color.green);

else

green = 0;

if (e.getItem() ==b3)

if (e.getStateChange() == e.SELECTED)

lb1.setForeground(Color.blue);

else

blue = 0;

lb1.setOpaque(true);

lb1.setBackground(new Color(red,green,blue)); }

public static void main(String[] arg) {

new a();

}

public void actionPerformed(ActionEvent e) {

String bt=e.getActionCommand( );

if (bt=="10") fonti=10;

else if (bt=="16") fonti=16;

else fonti=20;

font=new Font("宋体",Font.BOLD,fonti);

lb1.setFont(font);

lb1.setBackground(new Color(red,green,blue));

}}

第九章

1.比较FileInputStream流的read方法和FileReader流的read的方法有什么异同点? FileInputStream : read() 从此输入流中读取一个数据字节。

2. read(byte[] b) 从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。

3.read(byte[] b, int off, int len) 从此输入流中将最多 len 个字节的数据读入一个 byte 数组中

FileReader:所有方法( read ()等)都从父类 InputStreamReader 中继承而

来;

1)read() 读取单个字符

2)read(char[] cbuf, int offset, int length) 将字符读入数组中的某一部分。

4.把一段英文字符写入文件“data。txt”在读取第一行,统计每个字符出现个数

import java.io.*;

import java.util.*;

public class ttt{

public static void main(String[] args) throws IOException {

int[] app = new int['z'+1];

System.out.println("请输入要写入的字符");

BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); String s = new String();

s = bf.readLine();

System.out.println(s);

File myfile = new File("D:\\data.txt");

BufferedWriter out = new BufferedWriter(new FileWriter(myfile));

out.write(s);

out.close();

System.out.println("文件已经写入"+myfile.getName());

System.out.println("现在读取文件内容......");

BufferedReader in = new BufferedReader(new FileReader("D:\\data.txt"));

StringBuffer txt = new StringBuffer("");

System.out.println("文件第一行内容是......");

while(in.ready()){

txt.append(in.readLine());

} String result[] = txt.toString().split("\\s");

for (int i=0; i

char ch = ' ';

while (ch != '\n') {

System.out.println(result[i]);

break; }

in.close();

break; }

for (int i=0;i

app[s.charAt(i)]++;

for (int i=0;i

{

if (app[i]!=0)

{

System.out.println("字符:"+(char)i+"出现了"+app[i]+"次"); }}}}

计算器

import java.awt.*;

import java.awt.event.*;

public class Test extends WindowAdapter {

Panel p1 = new Panel();

Panel p2 = new Panel();

Panel p3 = new Panel();

TextField txt;

private Button[] b = new Button[16];

private String ss[] = { "1", "2", "3", "+", "4", "5", "6", "-", "7", "8", "9", "*", "0", "c", "=", "/" };

static double a;

static String s, str;

public static void main(String args[]) {

(new Test()).frame();

}

public void frame() {

Frame fm = new Frame("计算器");

for (int i = 0; i <= 15; i++) {

b[i] = new Button(ss[i]);

}

for (int i = 0; i <= 15; i++) {

p2.add(b[i]);

}

txt = new TextField(15);

txt.setEditable(false);

for (int i = 0; i <= 15; i++) {

b[i].addActionListener(new buttonlistener());

}

fm.addWindowListener(this);

p1.setLayout(new BorderLayout());

p1.add(txt, "North");

p2.setLayout(new GridLayout(4,4));

fm.add(p1, "North");

fm.add(p2, "Center");

fm.pack();

fm.setVisible(true);

}

public void windowClosing(WindowEvent e) {

System.exit(0);

}

class buttonlistener implements ActionListener { public void actionPerformed(ActionEvent e) {

Button btn = (Button) e.getSource();

if (btn.getLabel() == "=") {

jisuan();

str = String.valueOf(a);

txt.setText(str);

s = "";

} else if (btn.getLabel() == "+") {

jisuan();

txt.setText("");

s = "+";

} else if (btn.getLabel() == "-") {

jisuan();

txt.setText("");

s = "-";

} else if (btn.getLabel() == "/") {

jisuan();

txt.setText("");

s = "/";

} else if (btn.getLabel() == "*") {

jisuan();

txt.setText("");

s = "*";

} else {

txt.setText(txt.getText() + btn.getLabel()); if (btn.getLabel() == "c")

txt.setText("");

} }

public void jisuan() {

if (s == "+")

a += Double.parseDouble(txt.getText());

else if (s == "-")

a -= Double.parseDouble(txt.getText()); else if (s == "*")

a *= Double.parseDouble(txt.getText()); else if (s == "/")

a /= Double.parseDouble(txt.getText()); else

a = Double.parseDouble(txt.getText()); }}}

java课后题答案

第1章Java概述 1.编译java application源程序文件将产生相应的字节码文件,这些字节码文件别 的扩展名为、java 2.执行一个java程序fristapp的方法就是运行java fristapp 3.main()方法的返回类型就是void 4.在java代码中,public static void main方法的参数描述正确的就是string args 【】,string【】args 5.内存的回收程序负责释放无用内存√ 6.java体系主要分为java ME,Java SE,JavaEE三大块 第2章Java基础 1.Java语言中,下列标识符错误的就是40name 2.java变量中,以下不属于引用类型的数据类型就是字符型 3.double d=5、3E12 × 4.C 5.A 6.for循环的一般形式为;for(初值;终值;增量),以下对for循环的叙述,正确 的就是初值与增量都就是赋值语句,终值就是条件判断语句 7.当输入下面选项中3值时,将会输出default 8.下面哪种方法能够支持javadoc命令/**…*/ 9.下面声明一个string类型的数组正确的就是string str[] 10.下面定义一个整型数组,不合法的就是int[][]array=new int[][4]; 11.给定代码;。。。。。下面叙述正确的就是输出的结果为:0 12.java语言规定,标示符只能由字母,数字美元符$与下划线租成,并且第一个 字符不能就是数字;java就是区分大小写的。 13.表达式1/2*3的计算结果就是0;设x=2,则表达式(x++)/3的值就是0 14.数组的长度可以用其属性lengt h获得;创建一个数组对象可以使用new关键 字创建 第3章面向对象基础 1.在java中引用对象变量与对象间有什么关系?引用变量就是指向对象的一个指针 2.对象就是面向对象技术的核心所在,在面向对象程序设计中,对象就是累的抽象× 3.构造方法何时被调用?创建对象时 4.A,B,D 5.在java语言中在包p1中包含包p2,类A直接隶属于p1,类B直接隶属于包p2、在类c中 要使用类a的方法与类b的方法b,需要选择import p1、*; import p1、p2,*;

Java基础知识问答题

Java 基础知识问答题 包含的模块 本文分为十九个模块,分别是:Java 基础、容器、多线程、反射、对象拷贝、Java Web 、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、MyBatis、RabbitMQ、Kafka、Zookeeper、MySQL、Redis、JVM,如下图所示:

共包含208 道问答题,本文的宗旨是为读者朋友们整理一份基础知识的简单大纲,下面一起进入主题吧。 Java 基础 1. JDK 和JRE 有什么区别?

?JDK:Java Development Kit 的简称,Java 开发工具包,提供了Java 的开发环境和运行环境。 ?JRE:Java Runtime Environment 的简称,Java 运行环境,为Java 的运行提供了所需环境。 具体来说JDK 其实包含了JRE,同时还包含了编译Java 源码的编译器Javac,还包含了很多Java 程序调试和分析的工具。简单来说:如果你需要运行Java 程序,只需安装JRE 就可以了,如果你需要编写Java 程序,需要安装JDK。 2. == 和equals 的区别是什么? == 解读 对于基本类型和引用类型== 的作用效果是不同的,如下所示: ?基本类型:比较的是值是否相同; ?引用类型:比较的是引用是否相同; 代码示例: String x = "string"; String y = "string"; String z = new String("string"); System.out.println(x==y); // true System.out.println(x==z); // false System.out.println(x.equals(y)); // true System.out.println(x.equals(z)); // true 代码解读:因为x 和y 指向的是同一个引用,所以== 也是true,而new String()方法则重写开辟了内存空间,所以== 结果为false,而equals 比较的一直是值,所以结果都为true。 equals 解读

JAVA练习题含答案-answers to practice 2

Multiple Choice 1)Which operator is used to concatenate two strings? (a)+ (b)– (c)* (d)/ Answer: A (see page 35) 2)Which operator returns the remainder of integer division? (a)% (b)/ (c)* (d)none of the above Answer: A (see page 26) 3)What is the value of the variable c in the statements that follow? String phrase = "Make hay while the sun is shining."; char c = phrase.charAt(10); (a)w (b)h (c)i (d)None of the above Answer: B (see page 40) 4)The escape sequence the represents the new-line character is: (a)\r (b)\t (c)\n (d)\\ Answer: C (see page 43) 5)The syntax that declares a Java named constant named SALES_TAX is: (a)double SALES_TAX = 7.50; (b)public double SALES_TAX = 7.50; (c)public static double SALES_TAX = 7.50; (d)public static final double SALES_TAX = 7.50; Answer: D (see page 47)

java课后答案

java课后答案 第一章 ,.发明java的原因是什么,发明java的主要贡献者是谁, 答:开发java语言的动力源于对独立平台的需要,即用这种语言编写的程序不会因为芯片的变化而发生无法运行或出现运行错误的情况。当时,c语言已无法满足人们的这一愿望,因为c语言总是针对特定的芯片将源程序编译成机器码,该机器码的运行就与特定的芯片指令有关,在其他类型的芯片上可能无法运行或者运行出错。主要贡献者是James Gosling。 2.“java编译器将源文件编译生成的字节码是机器码”,这句话正确吗, 答:不正确,字节码是很接近机器码谢谢了的二进制文件,不能被机器直接识别。 3. java应用程序的主类必须含有怎么样的方法, 4. "java应用程序必须有一个类是public类".这句话正确吗, 答:一个java应用程序必须有一个类含有public static void main(String args[] )方法,称为该应用程序的主类。 5. "java applet程序的主类必须是public类",这句话正确吗, 不正确 "java applet源文件的主类必须是public类",这句话正确吗, 正确 6. 叙述java源文件的命名法则。 答:(1)如果源文件中有多个类,那么只能有一个类是public类。(2)如果有一个类是public类,那么源文件的名字必须和这个类的名字完全相同,扩展名 为.java(3)如果源文件没有public类,那么源文件的名字只要和某个类的名字相同,并且扩展名为.java就可以了。(4)java语言区分大小写。 7. 源文件生成的的字节码运行时加载到内存中吗, 8. 怎样编写加载运行java applet的简单网页,

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;

《JAVA设计模式》期末考试复习资料

《JAVA设计模式》复习资料 一、单项选择题 1.设计模式起源于() A、机械设计 B、建筑工程设计 C、水利工程设计 D、工业电力化设计 2.“不要和陌生人说话”是()原则的通俗表述。 A、接口隔离 B、里氏替换 C、依赖倒置 D、迪米特 3.目前常见的设计模式主要有()种。 A、23 B、21 C、32 D、28 4.以下关于单一职责原则的叙述不正确的是()。 A、单一职责原则的英文名称是Single Responsibility Principle. B、单一职责原则要求一个类只有一个职责 C、单一职责原则有利于对象的稳定,降低类的复杂性 D、单一职责原则提高了类之间的耦合性 5.以下关于依赖倒置原则的叙述不正确的是() A、依赖倒置原则的简称是DIP B、高层模块不依赖于低层模块,低层模块依赖于高层模块 C、依赖倒置原则中高层模块和低层模块都依赖于抽象 D、依赖倒置原则实现模块间的松耦合 6.下面关于单例模式说法错误的是() A、单例模式是指一个类只有一个实例 B、单例类从实现方式上分为懒汉式和饿汉式 C、单例类从功能上分为状态单例类和无状态单例类 D、可以通过继承的方式对单例类进行扩展得到功能更丰富的单例类 7.下面关于工厂方法模式说法错误的是()。 A、工厂方法模式使一个类是实例化延迟到其子类中 B、工厂方法模式中具有抽象工厂、具体工厂、抽象产品和具体产品4个角色 C、工厂方法模式可以处理多个产品的多个等级结构 D、工厂方法模式可以屏蔽产品类 8.在以下情况不适合使用责任职责链模式() A、有多个对象可以处理请求,哪个对象处理该请求在运行时刻自动确定。 B、在需要用比较通用和复杂的对象指针代替简单的指针的时候。 C、你想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。 D、一个请求需要一系列的处理工作。 9.当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用()模式 A、结构型 B、创建型 C、行为型 D、以上都可以 10.以下用来描述适配器模式的是() A、表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 B、定义一个用于创建对象的接口,让子类决定实例化哪一个类。 C、将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些

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

java设计模式选择题复习

工厂系列模式的优缺点: 1.让用户的代码和某个特定类的子类的代码解耦 用户不必知道它所使用的对象是怎样创建的,只需知道该对象有哪些方法 2.抽象工厂模式可以为用户创建一系列相关的对象,使用户和创建这些对象的类脱耦 MVC模式是不是一种设计模式?为什么 MVC不是设计模式,应该是框架/架构模式,因为它的定义是抽象的,没有足够的细节描述使你直接去实现,而只能根据MVC的概念和思想,用几个设计模式组合实现。 举出一个生活中使用装饰者模式的例子,用程序实现思路 举个生活中的例子,俗话说“人在衣着马在鞍”,把这就话用装饰者模式的语境翻译一下,“人通过漂亮的衣服装饰后,男人变帅了,女人变漂亮了;”。对应上面的类图,这里人对应于ConcreteComponent,而漂亮衣服则对应于ConcreteDecorator; 设计模式如何分类,每一个类别都有什么特征? 设计模式分为3类,分别是:创建型模式、行为型模式、结构型模式。 创建型特点:避免用户直接使用new运算符创建对象。 行为型特点:怎样合理的设计对象之间的交互通信,以及怎样合理的为对象分配职 结构型特点:主要用于处理类或对象的组合 Java jdk中使用了哪些设计模式 1.单例 2.静态工厂 3.工厂方法 4.抽象工厂 5.构造者 6.原型 7.适配器8桥接9.组合10.装饰器11.外观12.享元 页脚内容1

14.代理15.迭代器16.观察者17.协调者18.模板方法19.策略20.责任链21.命令22.空对象25.解释器 面向对象的设计原则有哪些? 开闭原则、面向抽象的原则(依赖倒转原则)、多用组合少用继承原则、高内聚-低耦合原则。 观察者模式的推拉有什么不同?使用场景 推,具体主题将变化后的数据全部交给具体观察者。场景:当具体主题认为具体观察者需要这些变换后的数据时,往往采用推数据方式; 拉,具体主题不将变化后的数据交给具体观察者,而是提供获得这些数据的方法。场景:当具体主题不知道具体观察者是否需要这些变换后的数据时,往往采用拉数据的方式。 策略模式和工厂模式有什么不同? 策略模式定义了一系列算法,将他们一个个封装,并且他们之间可以相互替换; 工厂模式定义一个创建对象的接口,让子类决定实例化哪一个类 5观察者模式的推拉有什么不同?适用场景 现在要说的分歧在这里: “推”的方式是指,Subject维护一份观察者的列表,每当有更新发生,Subject会把更新消息主动推送到各个Observer去。 “拉”的方式是指,各个Observer维护各自所关心的Subject列表,自行决定在合适的时间去Subject获取相应的更新数据。 “推”的好处包括: 页脚内容2

软件工程实践者的研究方法(中文版第七版)课后习题答案

作业答案。 2.1 a.设计者对于用户要问的问题: 项目的目标是什么?做到什么程度就成功了?谁会对项目的成功做最后的评判?项目的使用者包括那些? b. 用户对设计者应该问的问题: 目前问题有哪些解决方案,项目完成有哪些难点,在时间范围内能否完成? c. 软件问题用户自问? 还有其他解决方案吗?哪些功能是必须的?乙方资质和能力够吗? d. 软件过程问题自问? 用敏捷还是用瀑布?质量检查点分别有哪些?有几个MileStone? 2.2 为沟通活动设计一系列动作,选定其一并设计任务集。 (批作业的时候,以合理为目标,不一定要一样) 需求获取、需求规范说明(建模)、需求协商、需求确认等。 例如,书上page 23。 2.7 详细描述三个适合用于瀑布模型的软件项目。 (要求学生不仅仅列出项目的名称,而要说明为什么适合) 瀑布模型适合于项目开发而不是产品开发。信息管理系统一般适合于用瀑布模型。因为这类系统业务功能较为明确,架构比较单一,技术难点较少。图书馆系统、销售管理系统都是。 3.11 重构:已经写好的正确的代码,不断修正,使得代码更加精简并易读。 结对编程:两个人同时编写一段代码,一般一个人负责实现,一个人负责检查代码质量。 3.16 利用FDD,为“Web浏览器”定义一系列特征集合与特征。 特征集合模板: an 如:出售一件商品 特征定义模板: the a(n) 特征集合:展示Web页面内容。 特征: 1)本地解析HTML页面 2)展示HTML页面 3)从网络上下载页面相关图片 4)在浏览器上展示图片 附加:统一过程模型的图。 (要求有图有说明)

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

java设计模式-期末整理

第四章 命令模式 命令模式: 将一个请求封装为一个对象,从而使用户可用不同得请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作(在命令模式中,当一个对象请求另外一个对象调用其方法时,不和被请求的对象直接打交道,而是把这种请求封装到一个称为“命令”的对象中,其封装手段是将“请求”封装在一个命令对象的一个方法中,命令模式的核心就是使用命令对象来方法调用。) 命令模式的四个角色: 接收者(Receiver ):接收者是一个类的实例,负责执行与请求相关的操作 命令接口(Command ):命令是一个接口,规定了用来封装“请求”的若干个方法。如execute ()、undo ()。 具体命令(ConcreteCommand ):是实现命令接口的实例 请求者(Invoke ):是一个包含Command 接口变量的类的实现 单向关联 命令模式的优点: 1:请求者不与接收者直接交互联系(即请求者不包含接收者的引用),他们之间无耦合关系 2:满足开闭原则。如在增加新的具体命令和接收者时,不必修改请求者的代码,反之在增加新的请求者时,也不必修改具体命令和接收者的代码 3:由于请求者的请求被封装到了具体命令中,这个命令在需要时可重复使用,使用命令模式可以记录日志 4:使用命令模式可以是“请求”排队,因此可以按一定的顺序执行这些命令 第五章 观察者模式 观察者模式: 定义对象间一对多的依赖关系,当一个对象的状态发生变化时,所有依赖它的对象都得到通知并自动更新。(观察者模式是关于多个对象 想知道一个对象中数据变化情况的一种成熟模式。观察者模式中有一个称为“主题”的对象和多个称作“观察者”的对象,“主题”和“观察者”间是一种一对多的依赖关系,当“主题”发生变化时,所有的“观察者”得到通知。) 《interface 》 Comman d +execute ():void Invoke command :Command +executeCommand ():void Receiver command:Command +action():void ConcreteCommand Receiver:Receiver +execute():void

《Java语言程序设计(基础篇)》(第10版 梁勇 著)第十七章练习题答案

《Java语言程序设计(基础篇)》(第10版梁勇著) 第十七章练习题答案 17.1 import java.io.*; import java.util.*; public class Exercise17_01 { public static void main(String[] args) throws IOException { try ( Formatter output = new Formatter(new FileOutputStream("Exercise17_01.txt", true)); ) { for (int i = 0; i < 100; i++) output.format("%d", (int)(Math.random() * 100000)); } } } 17.2 import java.io.*; public class Exercise17_02 { public static void main(String[] args) throws IOException { try ( DataOutputStream output = new DataOutputStream(new FileOutputStream("Exercise17_02.dat", true)); ) { for (int i = 0; i < 100; i++) output.writeInt((int)(Math.random() * 100000)); } System.out.println("Done"); } } 17.3 import java.io.*;

《Java程序设计》课后习题参考答案

习题1参考答案 1.Java语言的特点有哪些? 答:参考1.1.2 防止直接访问数据变量看起来有些奇怪,但它实际上却对使用类的程序质量有极大的好处。既然数据的单个项是不可访问的,那么惟一的办法就是通过方法来读或写。因此,如果要求类成员内部的一致性,就应该通过类本身的方法来处理。 这种数据隐藏技术就是面向对象的重要特性——封装。它将类的外部界面与类功能的实现区分开来,隐藏实现细节,(通过公共方法)保留有限的对外接口,迫使用户使用外部界面,通过访问接口实现对数据的操作。即使实现细节发生了改变,还可通过界面承担其功能而保留原样,确保调用它的代码还继续工作,这使代码维护更简单。 2.简述封装的优点。 答:封装是一个简单而有效的思想,优点有:(1)模块化,对内成为一个结构完整、可进行自我管理、自我平衡、高度集中的整体。(2)信息隐蔽,对外则是一个功能明确、接口单一、可在各种适合的环境下都能独立工作的有机单元。 面向对象的程序设计实现了对象的封装,使得用户不必关心诸如对象的行为是如何实现的这样一些细节。通过对对象的封装,实现了模块化和信息隐藏,有利于程序的可移植性和安全性,同时也有利于对复杂对象的管理。类的封装性使得代码的可重用性大为提高,这样的有机单元特别适合构建大型标准化的软件系统,具有很高的开发效率。 3.Java的基本工具有哪些? (1)javac 编译器 (2)java 解释器 (3)jdb Java 语言调试器 (4)javadoc API文档管理器 (5)javah 头文件生成器 (6)appletviewer 小应用程序浏览器 (7)javap 类文件反汇编器 4.Java开发环境是如何配置的? 答:对于Windows 2000以上版本的操作系统,可以打开[控制面板]窗口,双击其中的[系统]图标,在[系统特性]窗口中单击[高级]选项卡,进而单击[环境变量]按钮。在出现的[环境变量]窗口中,在[系统变量]框中选择[Path]项,单击[编辑]按钮,在弹出的[编辑系统变量]窗口的[变量值]框后加上上面两条语句。 习题2参考答案 1.Java语言包含哪些数据类型? 答:包含基本数据类型和复合数据类型。基本类型包括整数类型、浮点数类型、布尔类型。复合类型包括类类型(Class Type)、接口类型(Interface Type)与数组类型(Array Type)。 2.Java有多少关键字? 答:abstract, continue, for, new, switch,boolean, default, goto*, null, synchronized,break, do, if, package, this,byte, double, implements, private, threadsafe,byvalve*, else, import, protected, throw,case, extends, instanceof, public, transient,catch, false, int, return, true,char, final,

java练习题答案

第1章java语言概述习题 一、填空题 1、面向对象程序的主要特征:继承,__封装___,___多态 _____。 2、java中的继承机制之所以能够降低程序的复杂性,提高程序的效率,主要是 因为它使代码可以__重用或复用___. 3、java语言中,为将源代码翻译成 __字节码__文件时产生的错误称为编译错误, 而将程序在运行中产生的错误称为运行错误。 4、javac是java语言中的编译器,基本语法是:javac[选项] __文件名__,java 是java语言中的解释执行器,基本语法是:java[选项]___类名___. 5、java语言的主要贡献者是谁James gosling 二、[ 三、单选题 1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文 件的扩展名为( B)。 A、java B、.class C、html D、.exe 2、main方法是Java Application程序执行的入口点,关于main方法的方法首 部, 以下(B)项是合法的。 A、public static void main() B、public static void main(String args[]) C、public static int main(String[] arg) ) D、public void main(String arg[]) 三、判断 1、Java语言具有较好的安全性和可移植性及与平台无关等特性。√ 2、Java语言的源程序不是编译型的,而是编译解释型的。√ 四、问答题 1、编写、运行java程序需要经过哪些主要步骤 答:1.编写源文件,扩展名必须是.java 2.编写java源程序,使用java编译器编写源文件,得到字节码文件 ~ 3.运行java程序,使用javaSE平台只不过的java解释器来解释执行字 节码文件。 2、阅读下列java源代码文件,并回答问题 public class Speak{ void speakHello(){ "I'm glad to meet you"); } } … class Xiti8{

最新java设计模式考试题资料

1、设计模式一般用来解决什么样的问题( a) A.同一问题的不同表相 B不同问题的同一表相 C.不同问题的不同表相 D.以上都不是 2、下列属于面向对象基本原则的是( c ) A.继承 B.封装 C.里氏代换 D都不是 3、Open-Close原则的含义是一个软件实体( a ) A.应当对扩展开放,对修改关闭. B.应当对修改开放,对扩展关闭 C.应当对继承开放,对修改关闭 D.以上都不对 4、当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用( a )模式。 A.创建型 B.结构型 C行为型 D.以上都可以 5、要依赖于抽象,不要依赖于具体。即针对接口编程,不要针对实现编程,是( d )的表述 A.开-闭原则 B.接口隔离原则 C.里氏代换原则 D.依赖倒转原则 6、依据设计模式思想,程序开发中应优先使用的是( a )关系实现复用。 A, 委派 B.继承 C创建 D.以上都不对 复用方式:继承和组合聚合(组合委派) 7、设计模式的两大主题是( d ) A.系统的维护与开发 B 对象组合与类的继承 C.系统架构与系统开发 D.系统复用与系统扩展 8、单子模式中,两个基本要点( a b )和单子类自己提供单例 A .构造函数私有 B.唯一实例 C.静态工厂方法 D.以上都不对 9、下列模式中,属于行为模式的是( b ) A.工厂模式 B观察者 C适配器以上都是 10、“不要和陌生人说话” 是( d )原则的通俗表述 A.接口隔离 B.里氏代换 C.依赖倒转 D.迪米特:一个对象应对其他对象尽可能少的了解 11、构造者的的退化模式是通过合并( c )角色完成退化的。 A.抽象产品 B产品 C创建者 D使用者

操作系统概念第七版习题答案(中文版)完整版

1.1 在多道程序和分时环境中,多个用户同时共享一个系统,这种情况导致多种安全问题。a. 列出此类的问题b.在一个分时机器中,能否确保像在专用机器上一样的安全度?并解释之。 Answer:a.窃取或者复制某用户的程序或数据;没有合理的预算来使用资源(CPU,内存,磁盘空间,外围设备)b.应该不行,因为人类设计的任何保护机制都会不可避免的被另外的人所破译,而且很自信的认为程序本身的实现是正确的是一件困难的事。 1.2 资源的利用问题在各种各样的操作系统中出现。试例举在下列的环境中哪种资源必须被严格的管理。(a)大型电脑或迷你电脑系统(b)与服务器相联的工作站(c)手持电脑 Answer: (a)大型电脑或迷你电脑系统:内存和CPU 资源,外存,网络带宽(b)与服务器相联的工作站:内存和CPU 资源(c)手持电脑:功率消耗,内存资源 1.3 在什么情况下一个用户使用一个分时系统比使用一台个人计算机或单用户工作站更好? Answer:当另外使用分时系统的用户较少时,任务十分巨大,硬件速度很快,分时系统有意义。充分利用该系统可以对用户的问题产生影响。比起个人电脑,问题可以被更快的解决。还有一种可能发生的情况是在同一时间有许多另外的用户在同一时间使用资源。当作业足够小,且能在个人计算机上合理的运行时,以及当个人计算机的性能能够充分的运行程序来达到用户的满意时,个人计算机是最好的,。 1.4 在下面举出的三个功能中,哪个功能在下列两种环境下,(a)手持装置(b)实时系统需要操作系统的支持?(a)批处理程序(b)虚拟存储器(c)分时 Answer:对于实时系统来说,操作系统需要以一种公平的方式支持虚拟存储器和分时系统。对于手持系统,操作系统需要提供虚拟存储器,但是不需要提供分时系统。批处理程序在两种环境中都是非必需的。 1.5 描述对称多处理(SMP)和非对称多处理之间的区别。多处理系统的三个优点和一个缺点? Answer:SMP意味着所以处理器都对等,而且I/O 可以在任何处理器上运行。非对称多处理有一个主处理器控制系统,与剩下的处理器是随从关系。主处理器为从处理器安排工作,而且I/O 也只在主处理器上运行。多处理器系统能比单处理器系统节省资金,这是因为他们能共享外设,大容量存储和电源供给。它们可以更快速的运行程序和增加可靠性。多处理器系统能比单处理器系统在软、硬件上也更复杂(增加计算量、规模经济、增加可靠性) 1.6 集群系统与多道程序系统的区别是什么?两台机器属于一个集群来协作提供一个高可靠性的服务器的要求是什么? Answer:集群系统是由多个计算机耦合成单一系统并分布于整个集群来完成计算任务。另一方面,多道程序系统可以被看做是一个有多个CPU 组成的单一的物理实体。集群系统的耦合度比多道程序系统的要低。集群系统通过消息进行通信,而多道程序系统是通过共享的存储空间。为了两台处理器提供较高的可靠性服务,两台机器上的状态必须被复制,并且要持续的更新。当一台处理器出现故障时,另一台处理器能够接管故障处理的功能。

java语言程序设计课后习题答案解析

习题2 3.使用“= =”对相同内容的字符串进行比较,看会产生什么样的结果。 答:首先创建一个字符串变量有两种方式:String str = new String("abc"); String str = "abc"; 使用“= =”会因为创建的形式不同而产生不同的结果: String str1 = "abc"; String str2 = "abc"; System.out.println(str1= =str2); //true String str1 = new String("abc"); String str2 = "abc"; System.out.println(str1= =str2); //false String str1 = new String("abc"); String str2 = new String("abc"); System.out.println(str1= =str2); //false 因此自符串如果是对内容进行比较,使用equals方法比较可靠。 String str1 = "abc"; String str2 = "abc"; System.out.println(str1= =str2); //true String str1 = new String("abc"); String str2 = "abc"; System.out.println(str1.equals(str2)); //true String str1 = new String("abc"); String str2 = new String("abc"); System.out.println(str1.equals(str2)); //true 5.编写一个程序,把变量n的初始值设置为1678,然后利用除法运算和取余运算把变量的每位数字都提出来并打印,输出结果为:n=1678。n的每位数字是1,6,7,8。若n为任意值呢? 法一: public class Exercise5{ public static void main(String[] args){ int n=1678; int unit; int decimal; int hundred; int thousand; int count; thousand=n/1000; count=n%1000; hundred=count/100; count=count%100; decimal=count/10; count=count%10; unit=count; System.out.println("1678包含的数 字分别是: "+thousand+','+hundred+','+decimal+', '+unit); } } //如果n为任意值 import java.io.*; public class Exercise51{ public static void main(String[] args) throws IOException{ System.out.print("请输入一个整数:"); InputStreamReader isStream=new InputStreamReader(System.in); BufferedReader bfReader=new BufferedReader(isStream); String input=bfReader.readLine(); int length=input.length()-1; int n=new

软件设计模式(JAVA)习题答案

软件设计模式(Java版)习题 第1章软件设计模式基础 1.1 软件设计模式概述 1.2 UML中的类图 1.3 面向对象的设计原则 一、名词解释 1.一个软件实体应当对扩展开放,对修改关闭,即在不修改源代码的基础上扩展 一个系统的行为。 2.一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。 3.在软件中如果能够使用基类对象,那么一定能够使用其子类对象。 4.是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结, 使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 二、单选择题 1.( A ) 2.( A ) 3. ( A ) 4. ( D ) 5. ( D ) 6.( A ) 7. ( D ) 8.( D ) 9.( D ) 10.( E ) 11.( C ) 12.( C ) 13. ( A ) 三、多选择题 1.( A、B、C、D ) 2. ( A、B ) 3.( A、D ) 4.( A、B、C、D ) 四、填空题 1.依赖倒转、迪米特法则、单一职责 2.模式名字、目的、问题、解决方案、效果、实例代码 3.超类、子类 4.开闭 5.用户 6.依赖倒转 7.组合/聚合 8.结构型、行为型 9.依赖倒转 10.开闭 11.需求收集是否正确、体系结构的构建是否合理、测试是否完全 12.人与人之间的交流 13.接口 14.名称、目的、解决方案 15.对象组合、类继承

16.对象组合 17.对象组合、类继承 18.抽象类的指针 五、简答题 1.答:设计模式按类型分为以下三类: 1)创建型设计模式:以灵活的方式创建对象集合,用于管理对象的创建。 2)结构型设计模式:将己有的代码集成到新的面向对象设计中,用于处理类或对象的组合。 3)行为型设计模式:用于描述对类或对象怎样交互和怎样分配职责。 2.答:设计模式的主要优点如下: 1)设计模式融合了众多专家的经验,并以一种标准的形式供广大开发人员所用,它提供了一套通用的设计词汇和一种通用的语言以方便开发人员之间沟通和交 流,使得设计方案更加通俗易懂。 2)设计模式使人们可以更加简单方便地复用成功的设计和体系结构,将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。设计模式使得重用成功的设计更加容易,并避免那些导致不可重用的设计方案。 3)设计模式使得设计方案更加灵活,且易于修改。 4)设计模式的使用将提高软件系统的开发效率和软件质量,且在一定程度上节约设计成本。 5)设计模式有助于初学者更深入地理解面向对象思想,一方面可以帮助初学者更加方便地阅读和学习现有类库与其他系统中的源代码,另一方面还可以提高软件的设计水平和代码质量。 3.答:设计模式一般有如下几个基本要素:模式名称、问题、目的、解决方案、效 果、实例代码和相关设计模式,其中的关键元素包括模式名称、问题、解决方案和效果。 4.答:正确使用设计模式具有以下优点: ⑴可以提高程序员的思维能力、编程能力和设计能力。 ⑵使程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从 而缩短软件的开发周期。 ⑶使设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强。 5.答:根据类与类之间的耦合度从弱到强排列,UML中的类图有以下几种关系:依赖关 系、关联关系、聚合关系、组合关系、泛化关系和实现关系。其中泛化和实现的耦合度相等,它们是最强的。

清华大学出版社 Java课后答案

第1章: 参考答案: 习题集: 一、填空题 1.多态 2.java.exe 3.jdb.exe 4.标准字节码 5.java 6.独立于平台 二、选择题 1.B 2.A 3.B 4.A 5.A 6.C 7.C 8.D 9.C 第2章: 参考答案: 实验指导: 2.5.1.第一处需要的代码:yourGuess>realNumber 第二处需要的代码:yourGuess=input.nextInt(); 第三处需要的代码:yourGuess

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