Java语言程序设计(郑莉)课后习题答案

Java语言程序设计(郑莉)课后习题答案
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;

}

public void setage(int c)

{

age=c;

}

public void setweight(float d)

{

weight=d;

}

public void setallergies(boolean e)

{

allergies=e;

}

public String getname(){return name;}

public char getsex(){return sex;}

public int getage(){return age;}

public float getweight(){return weight;}

public boolean getallergies(){return allergies;}

}

public class Text

{

public static void main(String args[])

{

Patient april=new Patient();

("ZhangLi");

('f');

(33);

(154.72f);

(true);

"Name: "+());

"sex: "+());

"age: "+());

"weight: "+());

"allergies: "+());

}

}

11:声明并测试一个复数类,其方法包括toString()及复数的加、减、乘运算。

答:public class Complex

{

private float a;

private float b;

public String toString() {if(a!=0)

return(a+"i"+"+"+b);

else return(""+b);

}

public Complex(float a,float b)

{

=a;

=b;

}

public void Add(Complex p)

{

+=;

+=;

}

public void Decrease(Complex p)

{

=;

=;

}

public void Multiply(Complex p)

{

=*;

=*;

}

}

public class ComplexTexter

{

public static void main(String args[])

{

Complex a=new Complex(2,4);

Complex b=new Complex(5,8);

(b);"\n");

(b);"\n");

(b);"\n");

}

}

12:什么是UML它由哪几部分组成

答:

UML是图形化()即可视化的建模语言,成为面向对象建模的标准语言。

它由四部分组成:(1)视图(2)图(3)模型元素(4)通用

机制

13. 常用的类与类之间的关系有哪几种。

答:有关联、依赖、流、泛化、实现、使用。

14. 考虑学院、系及教员应该具有哪些属性,并画出它们之间关系的类图。

第三章课后习题答案

1.设N为自然数:

n!=1*2*3*….*n

称为n的阶乘,并且规定0!=1.试编程计算2!,4!,6!he 10!.并将结果输出到屏幕上。

答:

public class Mul

{

public static void main(String args[]) {

int i,n;

float s;

for(n=0;n<=10;n=n+2)

{

if(n==0)

"0!=1\n");

else

{s=1;

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

s=s*i;

"!="+s+"\n");

}

}

}

} 2.编写程序,接收用户从键键盘上输入的三个整数x,y,z..从中选出最大和最小者,并编程实现。

答:public class Math{

public static void main(String args[]){

int[] IntArg = new int[];

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

IntArg[i] = (args[i]);

}

int max,min;

max=IntArg[0]>IntArg[1]IntArg[0]:IntArg[1];

max=max>IntArg[2]max:IntArg[2];

min=IntArg[0]

min=min

"max="+max);

"min="+min);

}

}

3.求出100一枚的宿舍,并将这些数在屏幕上5个乙杭地显示出来。答:

public class Su{

public static void main(String args[]){

int n,i,k=0,y;

for(n=2;n<=100;n++){

y=1;

for(i=2;i

if(n%i==0)

{y=0;break;}

if(y==1){

k++;

" ");

if(k%5==0)

"\n");

}

}

}

}

4.使用类,生成100个0---99之间的随机整数,找出他们之中的最大值和最小值,并统计大于50的整数个数。

public class Random{

public static void main(String[] args)

{

int MinNum,MaxNum,n=0;

int[] array=new int[100];

array[0]=(int)()*100);

MinNum=array[0];

MaxNum=array[0];

"数列为:");

" ");

for(int i=0;i<100;i++)

{

array[i]=(int)()*100);

if(array[i]>50)

n++;

if(array[i]>=MaxNum)

MaxNum=array[i];

if(array[i]<=MinNum)

MinNum=array[i];

" ");

}

"MinNum="+MinNum);

"MaxNum="+MaxNum);

"大于50的整数个数有:"+n); }

}

5.接收用户从键盘上输入的两个整数,求两个数的最大公约数和最小公倍数,并输出。

public class Test2

{

public static void main(String[] args)

{

int[] I = new int[];

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

I[i] = (args[i]);

}

int m,n,temp,t;

if(I[0]

{

temp=I[0];

I[0]=I[1];

I[1]=temp;

}

m=I[0];

n=I[1];

t=m%n;

while(t!=0)

{

m=t;

n=m;

t=m%n;

}

"两个数的最大公约数为:"+n);

"两个数的最小公倍数为:"+I[0]*I[1]/n);

}

}

6. 从键盘上输入一件物品的价格(范围在~元.),假设用户支付了一张5元纸币,请列出一种找零的方案,使得纸币及硬币的个数最少。如元,应为两元一张、一元一张、五角一个、一角一个、五分一个、二分一个、一分一个。

;

public class Price{

public static void main(String args[]){

"enter a number");

float a=();

int c=(int)(a*100);

int b=500-c;

"找零如下:");

if(b/200!=0){"张2元");b-=(b/200)*200;}

if(b/100!=0){"张1元");b-=(b/100)*100;}

if(b/50!=0){"张5角");b-=(b/50)*50;}

if(b/20!=0){"张2角");b-=(b/20)*20;}

if(b/10!=0){"张1角");b-=(b/10)*10;}

if(b/5!=0){"个5分");b-=(b/5)*5;}

if(b/2!=0){"个2分");b-=(b/2)*2;}

if(b!=0)"个1分");

}

}

;

public class Keyboard{

static BufferedReader inputStream =new BufferedReader(new InputStreamReader);

public static int getInteger(){

try{

return().trim()).intValue());

}catch(Exception e){

();

return 0;

}

}

public static String getString(){

try{

return());

}catch(IOException e){

return"0";

}}

public static float getFloat(){

String s="";

try{

BufferedReader in = new BufferedReader(new InputStreamReader);

s=();

return(s));

}

catch(IOException e)

{

"输入非法!");

return(0.0f);

}

}

}

运行结果:

7.什么是异常解释抛出、捕获的含义。

答:异常又称为例外,是特殊的运行错误对象,在程序中可以强制编译器来处理程序运行中的发生的并非由程序本身所造成的错误;抛出异常:把生成异常对象并提交的过程称为抛出异常;

抛出异常是java中一个程序处理动作,检查异常时要么在方法中声明一个异常抛出,用try-catch语句捕获异常,并进行处理。

8.简述Java的异常处理机制。

答:java中声明了很多异常类,每个异常类都代表了一种运行错误,类中包含了该运行错误的信息和处理错误的方法等内容。每当java 程序运行过程中发生一个可识别的运行错误时,即该错误有一个异常类与之相对应时,系统都会产生一个相应的该异常类的对象,即产生一个异常。一旦一个异常对象产生了,系统中就一定有相应的机制来处理它,确保不会产生死机、死循环或其他对操作系统的损害,从而保证了整个程序运行的安全性。

9.系统定义的异常与用户自定义的异常有何不同如何使用这两类异常

答:系统定义的特定情况出现的问题,而此时用来对可能遇到的问题进行处理。用户定义的是自己觉得可能会出现问题时,需要处理的。这样避免程序中断或是出现未知错误。

系统异常有两种一种是运行时异常,一种是普通异常,普通异常要求用户捕获或者抛出的,不补货或者抛出就会编译不通过。运行时异常编译可以通过,但是运行时才显露出来。

10.用户如何自定义异常编程实现一个用户自定义异常。

(1)定义mytest

import .*;

public class mytest{

private static int quotient(int number,int denominator)throws

DivideByZeroException{

if(denominator==0)

throw new DivideByZeroException();

return(number/denominator);

}

public static void main(String args[]){

int number1=0,number2=0, result=0;

try{

"输入第一个数字:");

number1=()).intValue();

"输入第二个数字:");

number2=()).intValue();

result=quotient(number1,number2);

}

catch(NumberFormatException e){

(-1);

}

"/"+number2+"="+result);

}

}(2)定义DivideByZeroException

public class DivideByZeroException extends ArithmeticException{

public DivideByZeroException(){

super("除数不能为0!");

}

}

(3)定义Keyboard

import .*;

public class Keyboard{

static BufferedReader inputStream=new BufferedReader(new InputStreamReader);

public static int getInteger(){

try{

return ().trim()).intValue());

}catch(Exception e){

();

return 0;

}

}

public static String getString(){

try{

return());

}catch(IOException e){return "0";}

}

}

第四章课后习题答案

1.子类将继承父类所有的属性和方法吗为什么

答:不,子类不能直接访问从父类中继承的私有属性及方法,但可

以对公有及保护方法进行访问。

2.方法的覆盖与方法的重载有何不同

答:覆盖是运用在子类中实现与父类相同的功能,但采用不同的算法或公式;在名字相同的方法中,要做比父类更多的事情;在子类中需要取消从父类继承的方法。

3.声明两个带有无参构造方法的两个类A和B,声明A的子类C,并且声明B为C的一个成员,不声明C 的构造方法。编写测试代码,生成类C的实例对象,并观察结果。

明一个基类A,它只有一种非默认构造方法;声明A的子类B,B具有默认方法及非默认方法,并在B的构造方法中调用基类A的构造方法。

明一个类,它具有一种方法,此方法被重载三次,派生一个新类,并增加一种新的重载方法,编写测试类验证四种方法对于派生类验证四种方法对于派生类都有效。

明一个具有final方法的类,声明一个派生类,并试图对这个方法进行重写,会有什么结果。明一个final类,并试图声明其派生类,会有什么结果。

么是抽象类抽象类中是否一定要包括抽象方法

答:抽象类是一个不完全的类,不能使用new方法进行实例化。抽象类可以包含抽象方法,也可以不包含抽象方法,但有抽象方法的必须是抽象类。

和super分别有哪些特殊含义都有哪些种用法

答:this 表示当前类;super 表示调用父类。

在定义类的时候用到,this是当前对象的引用,super是当前对象的父类对象的引用,一般的都是把super用在构造函数中。

10.完成下面父类及子类的声明:

(1) 声明Student类属性包括学号、姓名、英语成绩、数学成绩、计算机成绩和总成绩。方法包括构造方法、get方法、set方法、toString方法、equals方法、compare方法(比较两个学生的总成绩,结果分为大于、小于、等于),sum方法(计算总成绩)和testScore 方法(计算评测成绩)。

注:评测成绩可以取三门课成绩的平均分,另外任何一门课的成绩的改变都需要对总成绩进行重新计算,因此,在每一个set方法中应调用sum方法计算总成绩。

public class Student{

String id;

String name;

float scoreOfenglish;

float scoreOfmath;

float scoreOfcomputer;

float scoreOfsum;

;

public class test4_10{

public static void main(String args[]){

Student su=new Student("001","苏轼",56.00f,87.00f,95.00f);

Student du=new Student("002","杜甫",86.00f,75.00f,80.00f);

Student bai=new Student("003","白居易",42.00f,77.00f,65.00f);

Student liu=new Student("004","柳宗元",67.00f,67.00f,67.00f);

StudentXW ou=new StudentXW("005","欧阳修

",89.00f,98.00f,90.00f,"数学代表");

StudentXW wang=new StudentXW("006","王安石

",98.00f,87.00f,36.00f,"英语代表");

StudentBZ li=new StudentBZ("007","李白",89.00f,87.00f,87.00f,"

班长");

"\n评测成绩:"+new DecimalFormat("").format()));

"\n评测成绩:"+new DecimalFormat("").format()));

"\n评测成绩:"+new DecimalFormat("").format()));

"\n评测成绩:"+new DecimalFormat("").format()));

"\n评测成绩:"+new DecimalFormat("").format()));

"\n评测成绩:"+new DecimalFormat("").format()));

"\n评测成绩:"+new DecimalFormat("").format()));

}

}

运行test4_10的结果如下:

(很好玩吧,李白,我让你挂科。)

11.包有什么作用如何创建包和引用包中的类

答:包是一种松散的类的组合,一般不要求处于同一包中的类型有

明确的相互关系,但由于同一包中的类在默认情况下可以相互访

问,所以为了方便编程和管理,通常把需要在一起工作的类放在一

个包里。利用包来管理类,可实现类的共享与复用。

在操作系统中,目录用来组织文件,设置权限。只要在要用到包中

类的时候,在该引用类的第一行加上:package (包的全路径)即可。

第五章课后习题答案

1.什么是接口接口起什么作用接口与抽象类有何区别

答:Java中的接口是一系列方法的声明,是一些方法特征的集合,

一个接口只有方法的特征没有方法的实现,因此这些方法可以在不

同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

作用:接口是面向对象的一个重要机制,使用接口可以实现多态继

承;接口中的所有方法都是抽象的,这些抽象方法由实现这一接口

的不同类型来具体;接口还可以用来实现不同类之间的常量共享。

与抽象类不同的是:接口允许在看起来不相干的类之间定义共同行

为。

2.试编程证明接口中的属性都隐含为static及final,所有的方法都

为public。

什么情况下,可以对父类对象的引用进行强制类型转换,使其转化成子类对象的引用

答:一个对象被塑型为父类或接口后,可以再一次被塑型回到它原来所属的类,即转化成原类对象的引用。

4.声明一个接口,此接口至少具有一个方法;在一个方法中声明内部类实现此接口,并返回此接口的引用。

uck().fuck();

}

}

运行结果:

5.声明一个具有内部类的类,此内部类只有一个非默认的构造方法;声明另外一个具有内部类的类,此内部类继承第一个内部类。明一个具有两个方法的类,在第一个方法中调用第二个方法。声明此类的一个子类,并在子类中重写第二个方法。生成一个子类的对象,并将其塑型为基类,调用第一个方法,解释会发生什么

第4章习题10的基础上,声明测试类完成对多态性的测试。

(1)在主方法中声明Student类的数组(含五个元素)

(2)生成五个对象存入数组:其中三个Student类的对象、一个StudentXW类的对象、一个StudentBZ类的对象。

(3)将方法testScore()发送给数组的每一个元素,输出结果,并分析具体执行的是哪一个类中的方法。

;

public class test5_8{

public static void main(String args[]){

Student student[]={

new Student("001","苏轼",56.00f,87.00f,95.00f),

new Student("002","杜甫",86.00f,75.00f,80.00f),

new Student("003","白居易",42.00f,77.00f,65.00f),

new StudentXW("006","王安石

",98.00f,87.00f,36.00f,"英语代表"),

new StudentBZ("007","李白",89.00f,87.00f,87.00f,"

班长")

};

for(int i=0;i<5;i++)

{

"学生名字:"+student[i].getname()+"\t评测成绩:"+new DecimalFormat("").format(student[i].testScore()));

}

}

}

运行结果:

在主函数定义student数组的五个对象

Student student[5]={

new Student(),

new Student(),

new Student(),

new StudentXW(),

new StudentBZ()

}中,输出时,第1、2、3个调用的是Student中的方法,第4个调用的是StudentXW的方法,第5个调用的是StudentBZ的方法。第六章课后习题答案

1.将本章例6-1至6-18中出现的文件的构造方法均改为使用File类对象作为参数实现。

个人理解:File类只能对整文件性质进行处理,而没法通过自己直接使用()或者是()类似方法对文件内容进行写或者读取。注意:是直接;下面只提供一个例2变化,其他的你自己做,10几道啊,出这题的人真他妈有病。

import .*;

public class test6_2{

public static void main(String[] args) throws IOException { String fileName = "D:\\";

File writer=new File(fileName);

();

BufferedWriter input = new BufferedWriter(new FileWriter(writer));

("Hello !\n");

("this is my first text file,\n");

("你还好吗\n");

();

}

}

运行结果:(电脑系统问题,没法换行,所以一般使用BuffereWriter 中newLine()实现换行)

2.模仿文本文件复制的例题,编写对二进制文件进行复制的程序. ;

class CopyMaker {

String sourceName , destName ; BufferedInputStream source ; BufferedOutputStream dest ; int line ; opy(s1, s2)) "复制成功"); else "复制失败");

} }

运行前的两个文本:和(为空)

运行后:

3.创建一存储若干随机整数的文本文件,文件名、整数的个数及范围均由键盘输入。 ;

import class

memory {

private String name ;

private int count ; private int Max ; private int Min ; public memory(String n,int c,int min,int max){

=n; =c; =min; =max;

}

public void startmemory(){ try {

FileWriter out=new FileWriter(name );

int limit=Max -Min ;

Random random = new Random(); for (int i=1;i<=count ;i++){ int number=Min +(limit);

"

"); (number+" "); }

();

}catch (IOException iox){

"方法startmemory()有问题"); }

}

} ; import class test6_3 { public static void main(String[] args) throws IOException{

别使用

FileWriter 和BufferedWriter 往文件中写入10万个随机数,比较用

时的多少。 ;

public class fileWriter {

public static void main(String[] args) throws IOException{ long time = ();;

}

}

运行结果:

;

public class bufferedWriter {

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

long time = ();;

}

}

运行结果:

有用时可知:BufferedWriter比FileWriter写入的速度快, 当需要写入大量内容,前者效率高。

5.生成一html文件,使其能显示2的幂次(0~9)的表格如下:

Power of 2 Value

0 1

1 2

……

;

public class test6_5{

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

BufferedWriter fuck =new BufferedWriter( new FileWriter(""));

("

");

();

("

");

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

("

");

}

("

Power of 2

align=center>Value

"+i+""+(i, 2)+"
");

();

();

}

}

运行结果:6.用记事本程序创建一篇包含几十个英语单词的小文章,要求从屏幕输出每一个单词。

;

public class test6_6 {

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

FileReader fr=new FileReader("");

int s;

while((s=())!=-1){

if(s>='a'&& s<='z'|| s>='A' && s<='Z')

else

"\n");

}

();

}

}

运行结果:

7.从键盘敲入一系列字母,将其存储到文件中,对其进行升序排序后,存储到另一个文件,并显示在屏幕上。

;

import class test6_7 {

建一个学生类(包括姓名、年龄、班级、密码),创建若干该类的对象并保存在文件中(密码不保存),从文件读取对象后显示在屏幕上。

;

public class tset6_8 {

public static void main(String[] args) throws

IOException,ClassNotFoundException{

Student student[]={

new Student("苍井空

",19,101,"changjingkong"),

new Student("吉沢明",19,103,"jizeming"),

new Student("武藤兰",20,104,"wutenglan"),

new Student("我爱女优

",21,105,"woainvyou")};

ame);

"我的年龄:"+student[i].age);

"我的班级:"+student[i].grade);

"我的密码:"+student[i].secret);

}

else{

"第"+(i+1)+"个女学生名字:"+student[i].name);

"第"+(i+1)+"个女学生年龄:"+student[i].age);

"第"+(i+1)+"个女学生班级:"+student[i].grade);

"第"+(i+1)+"个女学生密码:"+student[i].secret);

}

}

}

}9.对例6—14中的压缩程序段进行修改,是压缩流经过缓冲类。比较两种方法在对大的文件进行压缩时的效率。

;

import class test6_9f{

public static void main(String[] args) throws IOException { long time = ();

FileInputStream in = new FileInputStream("");

GZIPOutputStream out = new GZIPOutputStream(

new FileOutputStream(""));

"Writing compressing file from to ");

int c;

while((c = ()) != -1) (c); Reading;

}

}

运行结果:

;

import class test6_9b{

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

BufferedInputStream in = new BufferedInputStream(new FileInputStream(""));

GZIPOutputStream out = new GZIPOutputStream(

new BufferedOutputStream(

new FileOutputStream("")));

"Writing compressing file from to ");

int c;

long time = ();

Reading;

}

}

运行结果:

以上2个类的运行用时比较,可见对大文件进行压缩,经过缓冲流的效率要高得多。

10.一家杂货店的店主,需要查询、输入、修改任何一件商品的品名、价格、库存量信息。请用随机存取文件满足其要求,可以更新、查询信息。每件商品的标志为其记录号。

ength>8)

(),0, , 0,8);ength);ength>8)

(),0, , 0,8);

else

(),0,,0,().length);

}

public double getPrice() {

return Price;

}

public void setPrice(double price) {

= price;

}

public int getNumber() {

return Number;

}

public void setNumber(int number) {

= number;

}

public int getCount() {

return Count;

}

public void setCount(int count) {

= count;

}

}

;

public class Work{

String FileName;

public Work(String FileName){

=FileName;

}

ength>8)

(),0,borrow,0,8);

else

(),0,borrow,0,().length);

for(int i=0;i<8;i++)

(borrow[i]);

();

}

组的声明与数组元素的创建有什么关系

答:声明数组仅仅是代表试图创建数组,不分配任何存储空间,声明是为创建做“铺垫”。

类的对象与数组有什么关系什么时候适合使用数组,什么时候适合使用Vector

答:vector是一个能够存放任意对象类型的动态数组,容量能自动扩充,而数组存储固定且类型相同的对象;对于存储固定类型相同的对象使用数组,对于存储不同类型或者动态调整数组大小的情况使用Vector。

3.与顺序查找相比,二分查找有什么优势使用二分查找的条件

答:对于大数据量中进行查找时二分查找比顺序查找效率高得多;条件是已排序的数组。

4.试举出三种常见的排序算法,并简单说明其排序思路。

答:①选择排序:基本思想是站在未排序列中选一个最小元素,作为已排序子序列,然后再重复地从未排序子序列中选取一个最小元素,把它加到已经排序的序列中,作为已排序子序列的最后一个元素,直到把未排序列中的元素处理完为止。

②插入排序:是将待排序的数据按一定的规则逐一插入到已排序序列中的合适位置处,直到将全部数据都插入为止。

③二分查找:将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。

5.声明一个类People,成员变量有姓名、出生日期、性别、身高、体重等;生成10个People类对象,并放在一个以为数组中,编写方法按身高进行排序。

1989年8月13日1958年8月29日1963年2月17日1769年8月15日1983年11月11日etHeight()

temp=people[j];

people[j]=people[i];

people[i]=temp;

}

}

"按身高从小到大排序后的结果如下:");

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

"\n");

}

}

运行结果:

6.声明一个类,此类使用私有的ArrayList来存储对象。使用一个Class 类的引用得到第一个对象的类型之后,只允许用户插入这种类型的对象。

;

}

else{

"只允许插入"+getClassType()+"类的对象.");

}

}

public ArrayList getMan() {

return man;

}

public Class getClassType() {

return classType;

}

public Fuck(){}

}

出一个二维数组的鞍点,即该位置上的元素在所在行上最大,在所在列上最小。(也可能没有鞍点)

ength; j++)

{ Array[i][j] = ();

if(j==series-1) {

max = Array[i][0];

for (int z = 1; z < series; z++)

if (Array[i][z] > max)

{

max = Array[i][z];

R[i] = z;

}

}

}

for (int j = 0; j < Array[0].length; j++)

{

max = Array[0][j];

for (int z = 1; z < row ; z++)

if (Array[z][j] < max)

{

max = Array[z][j];

S[j] = z;

}

}

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

{

if(S[R[i]]==i)

{

"鞍点:"+"Array["+i+"]["+R[i]+

"]:"+Array[i][R[i]]+"\n");

T=true;

}

}

if(T==false)

"没有鞍点");

}

}

运行结果:

8. 声明一个矩阵类Matrix,其成员变量是一个二维数组,数组元素类型为int,设计下面的方法,并声明测试类对这些方法进行测试。

(1)构造方法。

Matrix() ength; j++)

+ " ");

}

}

public void transpose() {ength; i++) {

for (int j = 0; j < ; j++)

+ " ");

}

}

public boolean isTriangular() {ength; j++) {

if ((i > j) && (array[i][j] != 0)) {

flag = false;

}

}

}

return flag;

}

public boolean isSymmetry() { ength; j++) {

if (array[i][j] == array[j][i]) {

Symmetry = false;

}

}

}

return Symmetry;

}

public void add(Matrix b) { ength; j++) {

[i][j] = array[i][j] + [i][j];

}

}

}

}

程和线程有何区别,Java是如何实现多线程的。

答:区别:一个程序至少有一个进程,一个进程至少有一个线程;线程的划分尺度小于进程;进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。Java程序一般是继承Thread 类或者实现Runnable接口,从而实现多线程。

2.简述线程的生命周期,重点注意线程阻塞的几种情况,以及如何重回就绪状态。

答:线程的声明周期:新建-就绪-(阻塞)-运行--死亡

线程阻塞的情况:休眠、进入对象wait池等待、进入对象lock池等待;

休眠时间到回到就绪状态;在wait池中获得notify()进入lock池,然后获得锁棋标进入就绪状态。

3.随便选择两个城市作为预选旅游目标。实现两个独立的线程分别显示10次城市名,每次显示后休眠一段随机时间(1000毫秒以内),哪个先显示完毕,就决定去哪个城市。分别用Runnable接口和Thread类实现。

(注:两个类,相同一个测试类)

写一个多线程程序实现如下功能:

线程A 和线程B 分别在屏幕上显示信息“…start ”后,调用wait 等待;线程C 开始后调用sleep 休眠一段时间,然后调用notifyall ,使线程A 和线程B 继续运行。线程A 和线程B 恢复运行后输出信息“…end ”后结束,线程C 在判断线程B 和线程A 结束后自己结束运行。 start"); try { wait(); } catch (InterruptedException e) {

();

}

+ "..end");

}

public synchronized void notifyall() { notifyAll(); }

public static

void main(String args[]) { test8_4 test = new test8_4();

现一个数据单元,包括学号和姓名

两部分。编写两个线程,一个线程往数据单元中写,另一个线程往外读。要求没写一次就往外读一次。 tart(); new Write(data).start();

}

}

运行结果:

6.创建两个不同优先级的线程,都从1数到10000,看看哪个数得快。

(注:线程的优先级别越高低与执行速度没有绝对关系!)

写一个Java 程序,

以说明较高优先级的线程通过调用sleep 方法,使较低优先级的线

程获得运行的机会。

(这里可以借鉴课本例8—13) etPriority(2); runners[1].setPriority(5); for (int i=0;i<2;i++){ runners[i].start();

}

}

}

运行结果:

8.主线程控制新线程的生命,当主线程运行一段时间后,控制新线程死亡,主线程继续运行一段时间后结束。

(注:main函数就是主线程,程序里其他的Thread都属于子线程。可以参考课本的例8—1)

;

/* while(i>0){

result=result*i;

i--;

}*/

"the new thread of "+num+"is "+result);

"new thread ends");

}

}

;

SonThread newThread = new SonThread(10);

();

两个线程模拟存、取货物。一个线程往一对象里放货物(包括品名、价格),另外一个线程取货物。分别模拟“放一个、取一个”和“放若干个、取若干个”两种情况。

两个线程模拟对话,任何一个线程都可以随时收发信息。

(这道题本人搞不清楚,暂且用网上的给大家参考下。

听说要用到:

()获取输入流用于“接收”

()获取输出流用于“发送”

)

;

import .*;

import .*;

public class test8_10 {

public static void main(String[] args) {

try {

;

quals("BYE"))

done = true;

}

} finally {

();

}

} catch (IOException e) {

();

}

}

}

第九章课后习题答案

1.编写一个程序,该程序绘制一个5×9的网络,使用drawLine方法。

写一个程序,该程序以不同的颜色随机产生三角形,每个三角形用不同的颜色进行填充。

写一个

Applet,该程序请求用户输入圆的半径,然后显示该圆的直径、周长和面积。

;

import .*;

import class test9_3 extends JApplet {

loatValue();

写一个Applet,向其输入五个数,然后以条形图(bar graph)的形式来表示这些数。

5.编写一个绘制圆形的程序,当鼠标在绘制区域中单击时,该正方形的左上角顶点应准确的跟随鼠标光标移动,重绘该圆形。

写一个“猜数”程序:该程序随机在1到100的范围内选择一个供用户猜测的整数,然后改程序显示提示信息,要求用户输入一个1到100之间的整数,根据输入偏大、偏小、正确,程序将显示不同的图标。etDefaultButton(buttonOfSure);nit();

}

}

运行结果:

7.练习使用JscrollPane。使用BorderLayout将JFrame布局分为左右两块;左边又使用GridLayout,包含三个按钮,右边在JLabel里显示一幅图画,按钮控制JLabel是否显示滚动条。

nit();

}

}

运行结果:

显示滚动条

点击“滚动”按钮后,没显示滚动条

8.练习使用JList。建立两个JList,双击其中任何一个中的某一项,此项就会跑到另外一个JList中。

etElementAt(index);

(o);

}

if()==jList2){

int index = ());

Object o = ().getElementAt(index);

(o);

}

}

@Override

public void mousePressed(MouseEvent e) {

nit();

}

}

运行结果:

9.练习使用JComboBox。包括一个JLable、一个JComboBox,可以通过输入或者选择JComboBox中的某一项来控制JLable中文字的大小。

oString();

int intFontSize = (s);

(new Font("", 0, intFontSize));

nit();

}

}

运行结果:

10.练习使用JTable。包括姓名、学号、语文成绩、数学成绩、总分五项,单击总分会自动将语文数学成绩相加。

11.练习使用对话框。包括一个JLable和两个JButton,按任何一个

JButton都会产生一个对话框,按确定后将输入内容在JLable中显示出来。

nit();

}

}

运行结果:

(下面的题目有空再做)

12.练习使用JMenu、JFileChooser、JColorChooser。通过菜单可以打开文件选择对话框,来打开某一指定文本文件,通过菜单可打开颜色选择对话框控制显示文本的颜色。

13.编写一个图形用户界面,包括三个JSlider对象和三个JTexField 对象。每个JSlider代表颜色中的红、绿、蓝三部分,它们的值从0到255,在相应的JTextField中显示各个JSlider的当前值。用这三个值作为Color类构造方法的参数创建一个新的Color对象,用来填充一个矩形。

14.编写Application程序,构造一CUI,实现对两个数的相加、减、乘、除功能。用含有三个JTextField、一个JButton、三个JTextField 分别用于输入两个数字和运算符号,结果用JLable显示出来。15.扩充上一个练习,先弹出一对话框,输入密码正确,方能进行计算界面。

16.改造上一个练习为Applet。

17.编写一个程序,以随机的颜色和宽度绘制10条长度随机的直线,使用对象和Fraphics2D类的方法来绘制直线。该绘制区域设置为300×400.

18.编写一个含菜单的应用程序,包含File和Type两个菜单,File 菜单中包括“打开”和“退出”两个选项,打开菜单会弹出一个JFileChooser对话框,Type菜单包含一系列复选框,可用于确定文件选择对话框的选择类型。

java单选题库-博学谷

一、单选题 属于以下哪种语言() A. 机器语言 B. 汇编语言 C. 高级语言 D. 以上都不对 答案:C 解析:Java是一门高级编程语言 考察点:第一章 Java开发入门 题目难度:★☆☆☆容易 2.下列目录中,哪一个是用来存放JDK核心源代码的 A. lib目录 B. src目录 C. jre目录 D. include目录 答案:B 解析:JDK核心源代码存放在src文件夹下 考察点:第一章 Java开发入门 题目难度:★☆☆☆容易 3.下面命令中,可以用来正确执行HelloWorld案例的是() A. java HelloWorld B. java C. javac HelloWorld D. javac

答案:A 解析:java命令负责运行编译后的.class文件,不需要文件后缀名。 考察点:第一章 Java开发入门 题目难度:★☆☆☆容易 4.下面关于配置path环境变量作用的说法中,正确的是() A. 在任意目录可以使用javac和java命令 B. 在任意目录下可以使用class文件 C. 在任意目录可以使用记事本 D. 在任意目录下可以使用扫雷游戏 答案:A 解析:path环境变量的作用是在任意目录下都可以使用javac和java命令。 考察点:第一章 Java开发入门 题目难度:★☆☆☆容易 5.下列选项中,可以正确配置classpath的命令是() A. set classpath =C:\Program Files\Java\ set classpath : C:\Program Files\Java\ classpath set =C:\Program Files\Java\ classpath set : C:\Program Files\Java\ 答案:A 解析:配置classpath的命令是set classpath=xxx,并且等于号两边不要有空格。 考察点:第一章 Java开发入门 题目难度:★☆☆☆容易 6.下面选项中,完全面向对象的编程语言是() A. C B. COBOL C. JAVA D. FORTRAN 答案:C

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

Java基础知识笔试题及答案2

1.Java中提供了名为()的包装类来包装原始字符串类型。 A.Integer B.Char C.Double D.String 2.https://www.360docs.net/doc/be4383532.html,ng包的()方法比较两个对象是否相等,相等返回true。 A.toString()B.equals()C.compare()D.以上所有选项都不正确3.使用()方法可以获得Calendar类的实例。 A.get()B.equals()C.getTime()D.getInstance() 4.下面的集合中,()不可以存储重复元素。 A.Set B.Collection C.Map D.List 5.关于Map和List,下面说法正确的是()。 A.Map继承List B.List中可以保存Map或List C.Map和List只能保存从数据库中取出的数据 D.Map的value可以是List或Map 6.给定如下Java代码,编译运行的结果是()。 Import java.util.*; public class Test { public static void main(String[] args) { LinkedList list=new LinkedList(); list.add(“A”); list.add(2,”B”); String s=(String)list.get(1); System.out.println(s); }

A.编译时发生错误B.运行时引发异常C.正确运行,输出:A D.正确运行,输出:B ###############################################################3 3.所有异常的父类是()。 A.Error B.Throwable C.RuntimeException D.Exception 4.下列()操作不会抛出异常。 A.除数为零B.用负数索引访问数组 C.打开不存在的文件D.以上都会抛出异常 5.能单独和finally语句一起使用的块是()。 A.try B.throws C.throw D.catch 6.在多重catch块中同时使用下列类时,()异常类应该最后列出。 A.Exception B.ArrayIndexOutOfBoundsException C.NumberFormatException D.ArithmeticException 7.执行下面的代码会引发()异常。 String str=null; String strTest=new String(str); A.InvalidArgumentException B.IllegalArgumentException C.NullPointerException D.ArithmeticException 8.这段代码的输出结果是()。 try{ System.out.print(“try,“); return; } catch(Exception e){ System.out.print(“catch,“); } finally { System.out.print(“finally”);

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

java程序设计基础(含参考答案)

“Java程序设计基础”课程习题 一、填空 1.Java程序分两类___Applet___和application,Java Application 类型的程序,程序从 ___main方法___开始执行。 2.定义一个Java类时,通过关键字__extends____指明该类的父类。一个类可以有___1___ 个父类。 3.用public修饰的类称为_公有类或公用类__。用public修饰的类成员称为公有成员。被 说明为public的内容可以被__所有其他类___ 使用。如果public类文件与使用它的类文件不在同一目录中,需要通过__import____语句引入。 4.用___private___ 修饰的类成员称为私有成员。私有成员只能在__本类__ 中使用。 5.如果子类定义的成员变量与父类的成员变量同名,称为___方法覆盖___ ,要表明使用 子类的成员变量,可以在成员变量前加上关键字__super___ 。 6.____Object__ 类是Java类库中所有类的父类。 7.Java字符使用__16位的字符集,该字符集成为__Unicode____ 。 8.当子类中定义的方法与父类方法同名时,称子类方法___覆盖___ 父类方法,子类默认 使用自己的方法。使用父类的同名方法,必须用关键字__super__ 说明。 9.Java源程序文件名的后缀是___.java___,Java字节码文件名的后缀是_.class_____。 10.Java类名的第一个字母通常要求___大写___。 11.Java程序由____类__组成,每个程序有一个主类,Java程序文件名应与____主__类的 名称相同。 12.Java__Application_类型的程序需要main()方法,程序从__main____开始执行。 13.布尔型数据类型的关键字是_boolean__ ,占用位数是___1位___ ,有__true__ 和_false_ 两种值。整型数可以采用_十_ 、__八_ 和__十六_三种进制表示。 14.八进制整数以数字__0_开头。十六进制整数以_0x或0X_ 开头。 15.int整型数占用__32位内存。long整型数占用__64 位内存。 16.127L表示__长整型____ 常量。 17.根据占用内存长度将浮点常量分为_double_____ 和__float____ 两种。 18.单精度浮点常量占用__32_ 位内存,双精度浮点常量占用__64 位内存。 19.在Java语言中,字符串“ABC\tD\b\n”中包括__7个字符。 20.数学关系44&&x<9____ 。数学关系x>3且x<=10对应 的Java表达式是_x>3&&x<=10。数学关系x>3或x<-10对应的Java表达式是_x>3||x<-10_。 21.逻辑表达式true&&false&&true的结果是_false_ 。 22.__new__ 运算符的作用是根据对象的类型分配内存空间。当对象拥有内存空间时,会 自动调用类中的构造方法为对象_初始化_。 23.省略访问修饰符的类只能被同_一包_中的类使用,称之具有包访问特性。 24.用public修饰的类称为_公共类_。用public修饰的类成员称为公共成员。被说明为public 的内容可以被_所有类_ 使用。如果public类文件与使用它的类文件不在同一目录中,需要通过_import_语句引入。 25.用_private_ 修饰的类成员称为私有成员。私有成员只能在_本类使用。 26.在类中可以定义多个具有相同名称、但参数不同的方法,这种做法称为__方法重载_ 。 27.如果子类定义的成员变量与父类的成员变量同名,要表明使用子类的成员变量,可以在 成员变量前加上关键字__this__。

Java基础笔试机试测试题(带答案)

Java基础考试题 班级:__________ 姓名:___________ 日期:_____________ 一、笔试(45题,每题2分) 1) 分析下面的Java程序段,编译运行后的输出结果是()。 public class Test { public static void changeString(StringBuffer sb) { sb.append("stringbuffer2"); } public static void main(String[] args) { StringBuffer sb = new StringBuffer("stringbuffer1"); changeString(sb); System.out.println("sb = " + sb.toString()); } } A. sb = stringbuffer2stringbuffer1 B. sb = stringbuffer1 C. sb = stringbuffer2 D. sb = stringbuffer1stringbuffer2 2) 在Java中,包有多种用途,但不包含()。 A. 将类组合成较小的单元,便于使用 B. 有助于避免命名冲突 C. 有助于提高运行效率 D. 允许在更广的范围内保护类、数据和方法 3) 在Java中,如果要在字符串类型s="java"中,得到字母'v' 出现的位置,选()语句。 A)s.matches('v'); B)s.charAt('v'); C)s.indexOf('v'); D)s.substring('v'); 4)下列代码运行后,变量c的值是()。 int a=15,b=10; double c=a/b; a) 1.5 b) 1.0 c) 1 d) 0 5)main方法如下所示,该程序的运行结果是()。 public static void main(String [] args){ int i=0; System.out.print(i++); } a) 输出0 b) 输出1 c) 编译错误d) 运行时出现异常

Java程序设计习题附答案(一)

Java程序设计题库 第一部分绪论 1、下列关于Java语言的特点,描述错误的是(C) A.Java是跨平台的编程语言B.Java支持分布式计算 C.Java是面向过程的编程语言D.Java支持多线程 2、Java语言具有许多优点和特点,下列选项中,哪个反映了Java程序并行机制的特点?(B) A、安全性 B、多线性 C、跨平台 D、可移植 3、Java JDK中调试器的命令是(C)。 A、javac B、java C、jdb D、avah 4、运行jar文件中class文件需要在java命令后面加的参数为(A)。 A、-cp B-g C-d D-verbose 5、下面哪项在java中是不合法的标识符?(C) A、$user B、point C、You&me D、_endline 6、下面关于Java语言说法正确的是(ABCD)。 A、Java语言是面向对象的、解释执行的网络编程语言。 B、Java语言具有可移植性,是与平台无关的编程语言。 C、Java语言可对内存垃圾自动收集。 D、Java语言编写的程序虽然是“一次编译,到处运行”,但必须要有Java的运行环境。 7、在Java程序设计中,程序员创建()文件,然后编译器把它们转化为()文件。( B) A、源, HTML B、源, 字节代码 C、字节代码, 源 D、HTML, 字节代码 8、Java的JVM是指(B)。 A、由Java操作的家用设备(通常是一个漂亮的小烤箱) B、Java字节代码的解释程序 C、Java源代码的编译器 D、运行Java 所需的硬件设备 9、在Java中,关于CLASSPA TH环境变量的说法不正确的是(A)。 A、CLASSPATH一旦设置之后不可修改,但可以将目录添加到该环境变量中。 B、编译器用它来搜索各自的类文件。 C、CLASSPATH是一个目录列表。 D、解释器用它来搜索各自的类文件。 10、一个可以独立运行的Java应用程序(D)。

JAVA基础面试题经典

JAVA基础面试题经典

第一阶段题库 基础知识部分: 1.JDK是什么?JRE是什么? a)答:JDK:java开发工具包。JRE:java运行时 环境。 2.什么是java的平台无关性? a)答:Java源文件被编译成字节码的形式,无论 在什么系统环境下,只要有java虚拟机就能运行这个字节码文件。也就是一处编写,处处运行。这就是java的跨平台性。 3.在一台电脑上配置java环境,path起什么作 用?如何配置? a)答:path的作用是在DOS环境下,能在任意 位置使用JDK目录中bin文件夹中的可执行程序,来编译执行java程序。 b)在环境变量中找到path变量,把bin文件夹 的绝对路径加上即可。 4.什么样的标识符是合法的? a)由字母、数字、_和$组成,长度不限。其中字 母能够是大写或小写的英文字母,数字为0到9。

b)标识符的第一个字符不能是数字。 c)标识符区分大小写。 d)标识符不能包含空格。 5.Java有几种基本数据类型? a)byte,short,int,long,char,boolean,float,double 6.什么是隐式类型转换?什么是显示类型转换? a)当将占位数少的类型赋值给占位数多的类型 时,Java自动使用隐式类型转换。 b)当把在级别高的变量的值赋给级别底变量时, 必须使用显示类型转换运算。 7.&&和&区别,||和|区别? a)&&和||是短路与,短路或,当左边的表示式能 判断当前结果,则不判断右边的表示式。 b)而& 和|则将两边的表示式都运算完毕后,再 算结果。 8.break,continue区别? a)break结束最近的一个循环,continue结束当 次循环,进入下次循环。 9.类的命名规则是什么? a)如果类名使用拉丁字母,那么名字的首写字母 使用大写字母。

《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”。

java编程题全集题及答案

J a v a程序设计总复习题 1、编写一个Java程序,用if-else语句判断某年份是否为闰年。(分支) // Programme Name LeapYear.java public class LeapYear{ public static void main(String args[]){ int year=2010; if(args.length!=0) year=Integer.parseInt(args[0]); if((year%4==0 && year%100!=0)||(year%400==0)) 年是闰年。"); else 年不是闰年。"); } }//if-else语句 2、编写一个Java程序在屏幕上输出1!+2!+3!+……+10!的和。(循 环) // programme name ForTest.java public class ForTest { public static void main( String args[] ) { int i,j,mul,sum=0; for(i=1;i<=10;i++) { mul=1; for(j=1,j<=i;j++) { mul=mul*j; } sum=sum+mul; } “1!+2!+3!+……+10!= ”+sum); } } 3、依次输入10个学生成绩,判断学生(优秀、良好、中等、及格、不及格) 并计算人数(switch) 4、使用冒泡排序(数组) public class BubbleSort { public static void main(String[] args) {

Java程序员认证考试题库

第一部分 基础知识练习 目标 本章对应于《学生指南》各章的内容分别提供了练习题集,包括: ●第一章Java入门 ●第二章数据类型和运算符 ●第三章流程控制与数组 ●第四章封装 ●第五章继承 ●第六章抽象类与接口 ●第七章多态 ●第八章异常 ●第九章多线程机制 ●第十章输入输出流 ●第十一章使用泛型和集合框架 ●第十二章基于Swing的图形用户界面(GUI)设计 ●第十三章Java事件驱动编程

第一章练习题(Java入门) (C)1.下列哪项不是JDK所包含的内容?(选一项)A.Java编程语言 B.工具及工具的API C.Java EE扩展API D.Java平台虚拟机 2.下列关于JDK、JRE和JVM的描述。哪项正确?A.JDK中包含了JRE,JVM中包含了JRE B.JRE中包含了JDK,JDK中包含了JVM C.JRE中包含了JDK,JVM中包含了JRE D.JDK中包含了JRE,JRE中包含了JVM 3.下列哪个工具可以编译java源文件? A.javac B.jdb C.javadoc D.junit 4.JDK工具javadoc的作用是哪项? A.生成Java文档 B.编译Java源文件 C.执行Java类文件 D.测试Java代码 5.以下哪些包是Java标准库中常用的包?(选三项)A.java.lang B.javax.servlet .http C.j ava. io D.java.sql

6.使用JDK工具生成的Java文档的文件格式是? A.XML格式 B.自定义格式 c.二进制格式 D.HTML格式 (AC)7.以下关于JVM的叙述,哪项正确?(选两项) A.JVM运行于操作系统之上,它依赖于操作系统 B.JVM运行于操作系统之上,它与操作系统无关 C.JVM支持Java程序运行,它能够直接运行Java字节码文件D.JVM支持Java程序运行,它能够直接运行Java源代码文件 8.以下关于支持Java运行平台的叙述,哪项错误? A.Java可在Solaris平台上运行 B.Java可在Windows平台上运行 C.Java语言与平台无关。Java程序的运行结果依赖于操作系统D.Java语言与平台无关。Java程序的运行结果与操作系统无关 (B)9.以下关于Applet和Java程序之间关系的叙述,哪项错误? A.-个Applet就是一段Java程序 B.Applet是一种特殊的Java程序,它需要运行在Web服务器上C.Applet是一种特殊的Java程序,它需要运行在Web浏览器上D.Applet是一种Java SE平台的应用程序 (AD)10.以下关于Java HotSpot的描述,哪两项错误?(选两项)A.Java HotSpot是一种热编译技术,在编译Java源程序时会被使用B.Java HotSpot是一种热编译技术,在运行Java代码时会被使用C.Java HotSpot是一种热编译技术,它只对程序的部分字节码进行优化D.Java HotSpot是一种热编译技术,它会对程序的全部字节码进行优化

Java程序设计基础习题答案

Java程序设计基础课后习题参考答案 第2章 1、关于Java Application得入口方法main()得检验: main()方法得参数名就是否可以改变? main()方法得参数个数就是否可以改变? 该方法名就是否可以改变? 参考答案:(1)main()方法得参数名可以改变.(2)main()方法得参数个数不可以改变。(3)该方法名不可以改变。 2、当一个程序没有main()方法时,能编译吗?如果能编译,能运行吗? 参考答案:当一个程序没有main()方法就是,就是可以编译通过得,但就是不能给运行,因为找不到一个主函数入口。 3、下列语句能否编译通过? bytei =127; bytej = 128; longl1 = 999999; long l2= 9999999999; 参考答案:byte i 与long l1可以编译通过。而byte j 与longl2 超出自身数据类型范围,所以编译失败。 4、下列语句能否编译通过? float f1 =3、5; float f2 = 3.5f; 参考答案:java中浮点型得数据在不声明得情况下都就是double型得,如果要表示一个数据就是float型得,必须在数据后面加上“F”或“f”;因此,floatf1 无法编译通过。 5、验证int 与char,int与double等类型就是否可以相互转换。 参考答案:(1)char类型可以转换为int 类型得,但就是int类型无法转换为char类型得;(2)int 可以转换为double类型得,但就是double类型无法转换为int 类型得。 6、计算下列表达式,注意观察运算符优先级规则。若有表达式就是非法表达式,则指出不合法之处且进行解释。 (1)4+5 == 6*2 ?(2) (4=5)/6?? (3)9%2*7/3>17(4)(4+5)<=6/3 ? (5) 4+5%3!=7-2????(6)4+5/6〉=10%2 参考答案:表达式(2)为不合法表达式,只能将值赋值给一个变量,因此其中(4=5)将5赋值给4就是不合法得. 7、下列()就是合法得Java标识符。 (1)Counter1 ??(2)$index, (3) name-7 ??(4)_byte

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

习题2 3.使用“= =”对相同内容的字符串进行比较,看会产生什么样的结果。 答:首先创建一个字符串变量有两种方式:String str = new String("abc"); String str = "abc"; 使用“= =”会因为创建的形式不同而产生不同的结果: String str1 = "abc"; String str2 = "abc"; =str2); ; public class Exercise51{ public static void main(String[] args) throws IOException{ "请输入一个整数:"); InputStreamReader isStream=new InputStreamReader; BufferedReader bfReader=new BufferedReader(isStream); String input=(); int length=()-1; int n=new Integer(input).intValue(); while(length>=0){ int divisor=(int) (10,length); length=length-1; int output=n/divisor; n=n%divisor; ","); } } } 法二:(建议使用) public class Exercise5{ public static void main(String[] args){ int n=1678; int unit; int decimal; int hundred; int thousand; thousand=n/1000%10; hundred=n/100%10; decimal=n/10%10; unit=n%10; "1678包含的数字分别是: "+thousand+','+hundred+','+decimal+', '+unit); } } ;

JAVA入门练习50题(含答案)

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? //这是一个菲波拉契数列问题 public class lianxi01 { public static void main(String[] args) { System.out.println("第1个月的兔子对数: 1"); System.out.println("第2个月的兔子对数: 1"); int f1 = 1, f2 = 1, f, M=24; for(int i=3; i<=M; i++) { f = f2; f2 = f1 + f2; f1 = f; System.out.println("第" + i +"个月的兔子对数: "+f2); } } } 【程序2】 题目:判断101-200之间有多少个素数,并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 public class lianxi02 { public static void main(String[] args) { int count = 0; for(int i=101; i<200; i+=2) { boolean b = false; for(int j=2; j<=Math.sqrt(i); j++) { if(i % j == 0) { b = false; break; } else { b = true; } } if(b == true) {count ++;System.out.println(i );} } System.out.println( "素数个数是: " + count); } }

Java程序设计-习题参考答案

参考答案 第1章 3、计算机系统由哪两部分组成的?计算机硬件结构由哪几部分组成?它们各自有什么作用? 一台计算机由硬件和软件组成。一台典型的计算机由五大部分组成。这五大部分是:运算器,控制器,存储器,输入设备和输出设备。 运算器是执行算术运算和逻辑运算的部件。 控制器是向计算机其他部分发送命令的部件。 存储器是计算机用来存储数据、信息的部件。 输入设备就是外界向计算机输入信息设备。 输出设备恰好与输入设备的作用相反,它将处理过后的信息输出呈现给用户。 9、将以下十进制数转换为对应的二进制数 (1)32 (2)97 (3)256 (4)500 (1)100000 (2)1100001 (3)100000000 (4)111110100 第2章 1.Java语言有哪些主要特点。 平台独立性 安全性 多线程 网络化 面向对象 3.Java Application的开发步骤有哪些。 Java Application的开发步骤: (1)下载JDK软件并安装; (2)配置相应的环境变量(path和classpath); (3)编写Java源程序(文本编辑器或集成开发环境IDE); (4)编译Java源程序,得到字节码文件(javac *.java); (5)执行字节码文件(java 字节码文件名)。

4.什么是环境变量,设置环境变量的主要目的是什么。 环境变量的配置主要是为了进行“寻径”,也即让程序能找到它需要的文件,所以设置的内容就是一些路径。 第3章 1.Java语言对于合法标识符的规定是什么?指出以下哪些为合法标识符。 a a2 3a *a _a $a int a% 在Java语言中,标识符必须以字母、美元符号或者下划线打头,后接字母、数字、下划线或美元符号串。另外,Java语言对标识符的有效字符个数不做限定。 合法的标识符: a a2 _a $a 5.数据类型强制转换的原则是什么?如何转换? 对于变窄转换,如long到short、double到float,或者不兼容转换:float到short、char 到short等,则需要进行强制转换。 float f = 11.5; short b ; b = (short)f; (强制转换) 第4章 5.用穷举法求出3位数中百、十、个位数的立方和就是该数的数。 public class Test { public static void main(String[] args) { int a,b,c,x=100; while(x<1000){ a=x%10; b=(x%100-a)/10; c=(x-x%100)/100; if(a*a*a+b*b*b+c*c*c==x) System.out.println(x); x+=1;

Java语言程序设计 第2版 (郑莉)课后习题答案

Java语言程序设计第2版(郑莉) 第二章习题答案 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)构造方法的主要作用是完成对象的初始化工作;

Java基础笔试题(一)

Java阶段测试笔试题 一、选择题(每题5分) 1.Java程序的源文件扩展名为() A..doc B..txt C..java D..html 2.java程序中,main方法的格式正确是() A.static void main(String[] args) B.public void main(String[] args) C.public static main(String[] args) D.public static void main(String[] args) 3.在java中,下面()命令能够将java源文件编译为类文件 A.java B.javaw C.javac D.jar 4.给定java代码,进行编译运行,结果是() String s; System.out.print(“s=” + s); A.编译错误

B.编译通过,但是运行时出现错误 C.正常输出,输出s = null D.正常输出,输出s = 5.在java中,下列()是合法的变量名【选两项】 A._myString B.$a+b C.myString D.9myString 6.在java中,下列代码运行后的输出结果是() int x = 5 * 3; int y = x + 5 / x + 3; System.out.print(y); A.18 B.21 C.19 D. 4 7.从键盘输入值,第一步所做的是导入包,以下导入包的语句正确 的是()【选两项】 A.import java.util.*; B.import java.until.*; C.import java.util.Scanner; D.import java.until.Scanner;

《JAVA程序设计》(含答案)

《JA V A程序设计》练习题 一、单选择题 1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( B )。 A. java B. .class C. html D. .exe 2、设x = 1 , y = 2 , z = 3,则表达式y+=z--/++x 的值是( A)。 A. 3 B. 3. 5 C. 4 D. 5 3、不允许作为类及类成员的访问控制符的是( C )。 A. public B. private C. static D. protected 4、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为( A)。 A. static void method( ) B. public void method( ) C. final void method( ) D. abstract void method( ) 5、关于选择结构下列哪个说法正确?( B ) A.if语句和else语句必须成对出现 B.if语句可以没有else语句对应 C.switch结构中每个case语句中必须用break语句 D.switch结构中必须有default语句 6、while循环和do…while循环的区别是:( D) A.没有区别,这两个结构任何情况下效果一样 B.while循环比do…while循环执行效率高 C.while循环是先循环后判断,所以循环体至少被执行一次 D.do…while循环是先循环后判断,所以循环体至少被执行一次 7、关于for循环和while循环的说法哪个正确?( B) A.while循环先判断后执行,for循环先执行后判断。 B.while循环判断条件一般是程序结果,for循环的判断条件一般是非程序结果C.两种循环任何时候都不可以替换 D.两种循环结构中都必须有循环体,循环体不能为空

相关文档
最新文档