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

April.setname(“zhangli”)

April.setSex(‘f’);;

April.setage(330;

April.setweigeht(154.72);

April.setalolergies(true);

System.out.println(“那么:”+april.getname());

System.out.println(“sex: ”+april.getsex());

System.out.println(“age: ”+april.getage());

System.outprintln(“weught: ”+april.getweight());\

System.out.println(“allergies: ”+april.getallergies()); 声明并测试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();

april.setname("ZhangLi");

april.setsex('f');

april.setage(33);

april.setweight(154.72f);

april.setallergies(true);

System.out.println("Name: "+april.getname());

System.out.println("sex: "+april.getsex());

System.out.println("age: "+april.getage());

System.out.println("weight: "+april.getweight());

System.out.println("allergies: "+april.getallergies());

}

}

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)

{

this.a=a;

this.b=b;

}

public void Add(Complex p)

{

this.a+=p.a;

this.b+=p.b;

}

public void Decrease(Complex p)

{

this.a-=p.a;

this.b-=p.b;

}

public void Multiply(Complex p)

{

this.a=this.a*p.a;

this.b=this.b*p.b;

}

}

public class ComplexTexter

{

public static void main(String args[])

{

Complex a=new Complex(2,4);

Complex b=new Complex(5,8);

a.Add(b);System.out.println(a.toString()+"\n");

a.Decrease(b);System.out.println(a.toString()+"\n");

a.Multiply(b);System.out.println(a.toString()+"\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)

System.out.println("0!=1\n"); else {s=1;

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

s=s*i;

System.out.println(n+"!="+s+"\n"); } } }

}

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

public static void main(String args[]){ int[] IntArg = new int[args.length]; for(int i=0;i

IntArg[i] = Integer.parseInt(args[i]); }

int max,min;

max=IntArg[0]>IntArg[1]?IntArg[0]:IntArg[1]; max=max>IntArg[2]?max:IntArg[2]; min=IntArg[0]

if(k%5==0)

System.out.print("\n");

}

}

}

}

4.使用https://www.360docs.net/doc/de14837191.html,ng.Math类,生成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)(Math.random()*100);

MinNum=array[0];

MaxNum=array[0];

System.out.println("数列为:");

System.out.print(array[0]+" ");

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

{

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

if(array[i]>50)

n++;

if(array[i]>=MaxNum)

MaxNum=array[i];

if(array[i]<=MinNum)

MinNum=array[i];

System.out.print(array[i]+" ");

}

System.out.println();

System.out.println("MinNum="+MinNum);

System.out.println("MaxNum="+MaxNum);

System.out.println("大于50的整数个数有:"+n);

}

}

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

public class Test2

{

public static void main(String[] args)

{

int[] I = new int[args.length];

for(int i=0;i

I[i] = Integer.parseInt(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;

}

System.out.println("两个数的最大公约数为:"+n);

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

}

}

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

//Price类

import java.io.*;

public class Price{

public static void main(String args[]){

System.out.println("enter a

number(0.01----5.00):");

float a=Keyboard.getFloat();

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

int b=500-c;

System.out.println("找零如下:");

if(b/200!=0){System.out.println(b/200+"张2元");b-=(b/200)*200;}

if(b/100!=0){System.out.println(b/100+"张1元");b-=(b/100)*100;}

if(b/50!=0){System.out.println(b/50+"张5角");b-=(b/50)*50;}

if(b/20!=0){System.out.println(b/20+"张2角

");b-=(b/20)*20;}

if(b/10!=0){System.out.println(b/10+"张1角

");b-=(b/10)*10;}

if(b/5!=0){System.out.println(b/5+"个5分

");b-=(b/5)*5;}

if(b/2!=0){System.out.println(b/2+"个2分

");b-=(b/2)*2;}

if(b!=0)System.out.println(b+"个1分");

}

} //Keyboard类

import java.io.*;

public class Keyboard{

static BufferedReader inputStream =new BufferedReader(new

InputStreamReader(System.in));

public static int getInteger(){

try{

return(Integer.valueOf(inputStream.readLine().t rim()).intValue());

}catch(Exception e){

e.printStackTrace();

return 0;

}

}

public static String getString(){

try{

return(inputStream.readLine()); }catch(IOException e){

return"0";

}

}

public static float getFloat(){

String s="";

try{

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

s=in.readLine();

return(Float.parseFloat(s));

}

catch(IOException e)

{

System.out.println("输入非法!");

return(0.0f);

}

}

}

运行结果:

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

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

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

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

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

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

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

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

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

(1)定义mytest

import java.io.*;

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{

System.out.println("输入第一个数字:");

number1=Integer.valueOf(Keyboard.getString()).intVal ue();

System.out.println("输入第二个数字:");

number2=Integer.valueOf(Keyboard.getString()).intVal ue();

result=quotient(number1,number2);

}

catch(NumberFormatException e){

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

System.exit(-1);

}

System.out.println(number1+"/"+number2+"="+result);

}

}

(2)定义DivideByZeroException

public class DivideByZeroException extends ArithmeticException{

public DivideByZeroException(){

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

}

}

(3)定义Keyboard

import java.io.*;

public class Keyboard{

static BufferedReader inputStream=new BufferedReader(new InputStreamReader(System.in));

public static int getInteger(){

try{

return

(Integer.valueOf(inputStream.readLine().trim()).intValue( ));

}catch(Exception e){

e.printStackTrace();

return 0;

}

}

public static String getString(){

try{

return(inputStream.readLine());

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

}

}

第四章课后习题答案

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

答:不,子类不能直接访问从父类中继承的私有属性及方法,但可以对公有及保护方法进行访问。

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

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

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

//A类

public class A {

public A () {

System.out.println ("输出A类");

}

}

//B类

public class B {

public B () {

System.out.println ("输出B类");

}

}

//C类

public class C extends A {

B b = new B ();

}

//测试类

public class test4_3 {

public static void main (String args[]) {

C c = new C();

}

}

运行结果:

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

//A类

public class A {

public A (String lin) {

System.out.println("A类的非默认构造方法

"+lin);

}

}//B类

public class B extends A{

public B () {

super ("Fuck your teacher");

System.out.println ("B默认类构造方法");

}

public B (String lin) {

super (lin);

System.out.println ("B类非构造方法");

}

}//测试类

public class test4_4 {

public static void main (String args[]) { new B();

System.out.println ();

new B("Fuck my teacher");

}

}

运行结果:

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

//A类

public class A {

public void showTime () {

System.out.println ("空重载");

}

public void showTime (int l) {

System.out.println ("整形参数重载");

}

public void showTime (char l) {

System.out.println ("字符参数重载");

}

}

//B类

public class B extends A {

public void showTime (String l) {

System.out.println ("字符串参数重载");

}

}

//测试类public class test4_5 {

public static void main (String args[]) {

B b = new B();

b.showTime();

b.showTime(5);

b.showTime('f');

b.showTime("林楚金");

}

}

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

//A类

public class A {

public final void showTime() {

System.out.println ("类A中方法");

}

}

//B类

public class B extends A{

public void showTime() {

System.out.println ("类B中方法");

}

}

//测试类

public class test4_6 {

public static void main (String args[]) {

B b = new B();

b.showTime();

}

}

运行结果:

(说白了就是B中showTime()的无法覆盖A中showTime(),被覆盖为final,不能覆盖。)

7.声明一个final类,并试图声明其派生类,会有什么结果。

//A类

public final class A {

}

//B类

public class B extends A{

}

//测试类

public class test4_7 {

public static void main (String args[]) {

B b = new B();

}

}

运行结果:

(说白了就是无法从A中进行继承)

8.什么是抽象类?抽象类中是否一定要包括抽象方法?

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

9.this和super分别有哪些特殊含义?都有哪些种用法?

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

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

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

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

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

public class Student{

String id;

String name;

float scoreOfenglish;

float scoreOfmath;

float scoreOfcomputer;

float scoreOfsum;

//构造方法

public Student(){

}

public Student(String aid,String aname,float ascoreOfenglish,float ascoreOfmath,float ascoreOfcomputer){

this.id=aid;

https://www.360docs.net/doc/de14837191.html,=aname;

this.scoreOfenglish=ascoreOfenglish;

this.scoreOfmath=ascoreOfmath;

this.scoreOfcomputer=ascoreOfcomputer;

//this.scoreOfsum=ascoreOfenglish+ascoreOfmath+ascoreOfcomputer; this.scoreOfsum=sum();

}

//sum方法

public float sum(){

return(this.scoreOfenglish+this.scoreOfmath+this.scoreOfcomputer); }

//testScore测评成绩/平均分

public float testScore(){

return(this.scoreOfsum/3);

}

//6个get方法

public String getid(){

return(id);

}

public String getname(){

return(name);

}

public float getscoreOfenglish(){

return(scoreOfenglish);

}

public float getscoreOfmath(){

return(scoreOfmath);

}

public float getscoreOfcomputer(){

return(scoreOfcomputer);

}

public float getscoreOfsum(){

return(scoreOfsum);

}

//5个set方法

public void setid(String newid){

this.id=newid;

}

public void setname(String newname){

https://www.360docs.net/doc/de14837191.html,=newname;

}

public void setscoreOfenglish(float newscoreOfenglish){

this.scoreOfenglish=newscoreOfenglish;

this.scoreOfsum=sum();

}

public void setscoreOfmath(float newscoreOfmath){

this.scoreOfmath=newscoreOfmath;

this.scoreOfsum=sum();

}

public void setscoreOfcomputer(float newscoreOfcomputer){

this.scoreOfcomputer=newscoreOfcomputer;

this.scoreOfsum=sum();

}

//toString方法

public String toString(){

return("学号:"+this.id+"\n姓名:"+name+"\n英语:"+this.scoreOfenglish+"\n数学:"+this.scoreOfmath+"\n计算机:"+this.scoreOfcomputer+"\n总分:"+this.scoreOfsum);

}

//compare方法/比较2学生总分

public void compare(Student x){

if(this.getscoreOfsum()>x.getscoreOfsum())System.out.println(this.get name()+"总分大于"+x.getname());

if(this.getscoreOfsum()

else System.out.println(this.getname()+"总分等于"+x.getname());

}

//equals方法/比较2学生学号是否相等(还没完善)

/*

* public boolean equals(Object x){

if(this.getClass()!=x.getClass())return false;

Student b=(Student)x; if(this.id==b.getid())return true;

}

*/

}

(2)声明StudentXW(学习委员)类为Student类的子类。

在StudentXW类中增加责任属性,并重写testScore方法(评测成绩=三门课平均分+3)

public class StudentXW extends Student{

String responsibility;

//构造方法

public StudentXW(){

super();

//responsibility=" ";

}

public StudentXW(String aid,String aname,float ascoreOfenglish,float ascoreOfmath,float ascoreOfcomputer,String aresponsibility){

super(aid,aname,ascoreOfenglish,ascoreOfmath,ascoreOfcomputer); responsibility=aresponsibility;

}

//testScore测评成绩/平均分

public float testScore(){

return(this.scoreOfsum/3+3);

}

//toString方法

public String toString(){

return("学号:"+this.id+"\n姓名:"+name+"\n英语:"+this.scoreOfenglish+"\n数学:"+this.scoreOfmath+"\n计算机:"+this.scoreOfcomputer+"\n总分:"+this.scoreOfsum+"\n职位:"+this.responsibility);

}

}

(3)声明StudentBZ类为Student类的子类

在StudentBZ类中增加责任属性,并重写testScore方法(评测成绩=三门课平均分+5)

public class StudentBZ extends Student{

String responsibility;

//构造方法

public StudentBZ(){

super();

//responsibility="";

}

public StudentBZ(String aid,String aname,float ascoreOfenglish,float ascoreOfmath,float ascoreOfcomputer,String aresponsibility){

super(aid,aname,ascoreOfenglish,ascoreOfmath,ascoreOfcomputer); responsibility=aresponsibility;

}

//testScore测评成绩/平均分

public float testScore(){

return(this.scoreOfsum/3+5);

}

//toString方法

public String toString(){

return("学号:"+this.id+"\n姓名:"+name+"\n英语:"+this.scoreOfenglish+"\n数学:"+this.scoreOfmath+"\n计算机:"+this.scoreOfcomputer+"\n总分:"+this.scoreOfsum+"\n职位:"+this.responsibility);

}

}

4)声明测试类,生成若干个Student类、StudentXW类及StudentBZ 类对象,并分别计算它们的评测成绩(建议采用:写一个测试函数,该函数以父类student数组作为参数) 。

import java.text.*;

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,"班长");

System.out.print(li);

System.out.println("\n评测成绩:"+new DecimalFormat("0.00").format(li.testScore()));

System.out.println();

System.out.print(wang);

System.out.println("\n评测成绩:"+new DecimalFormat("0.00").format(wang.testScore()));

System.out.println();

System.out.print(ou);

System.out.println("\n评测成绩:"+new DecimalFormat("0.00").format(ou.testScore()));

System.out.println();

System.out.print(su);

System.out.println("\n评测成绩:"+new DecimalFormat("0.00").format(su.testScore()));

System.out.println();

System.out.print(du);

System.out.println("\n评测成绩:"+new DecimalFormat("0.00").format(du.testScore()));

System.out.println();

System.out.print(bai);

System.out.println("\n评测成绩:"+new DecimalFormat("0.00").format(bai.testScore()));

System.out.println();

System.out.print(liu);

System.out.println("\n评测成绩:"+new DecimalFormat("0.00").format(liu.testScore()));

}

}

运行test4_10的结果如下:

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

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

答:包是一种松散的类的组合,一般不要求处于同一包中的类型有明确的相互关系,但由于同一包中的类在默认情况下可以相互访问,所以为了方便编程和管理,通常把需要在一起工作的类放在一个包里。利用包来管理类,可实现类的共享与复用。

在操作系统中,目录用来组织文件,设置权限。只要在要用到包中类的时候,在该引用类的第一行加上:package (包的全路径)即可。

第五章课后习题答案

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

答:Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。作用:接口是面向对象的一个重要机制,使用接口可以实现多态继承;接口中的所有方法都是抽象的,这些抽象方法由实现这一接口的不同类型来具体;接口还可以用来实现不同类之间的常量共享。与抽象类不同的是:接口允许在看起来不相干的类之间定义共同行为。

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

//定义接口Shape2D

interface Shape2D{

double Pi=3.14;

double area(); }

//Circle类继承接口Shape2D

public class Circle implements Shape2D{

double radius;

public Circle(double r){radius=r;}

public double area(){return Pi*radius*radius;}

}

//A类(测试接口中隐含final的area()方法)

public class A extends Shape2D{

public double area();

}

//test5_2

public class test5_2{

public static void main(String args[]){

Circle c=new Circle(10);

System.out.println("Pi=3.14圆的面积:"+c.area());

SetPi b=new SetPi(3.00);

System.out.println("改变Pi=3.00圆的面积:"+c.area());

}

}

运行结果:

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

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

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

//A类接口

public interface A{

void fuck();

}

//B类

public class B{

public A fuck(){

return new A(){

public void fuck(){

System.out.println("B类声明实现A接口类并返回接口的应用——Fuck you!");

}

};/*注意这里有分号“;”*/

}

}

//test5_4

public class test5_4 {

public static void main(String[] args){

new B().fuck().fuck();

}

}

运行结果:

5.声明一个具有内部类的类,此内部类只有一个非默认的构造方法;声明另外一个具有内部类的类,此内部类继承第一个内部类。//A类

class A{

class ClassOfA{

public ClassOfA(){

}

}

}

//B类

public class B{

class ClassOfB extends A.ClassOfA{

public ClassOfB(A b){

b.super();

}

}

}

6.声明一个具有两个方法的类,在第一个方法中调用第二个方法。声明此类的一个子类,并在子类中重写第二个方法。生成一个子类的对象,并将其塑型为基类,调用第一个方法,解释会发生什么?

//A类

public class A {

public String Way1(){return "A的方法1和"+Way2();}

public String Way2(){return "A的方法2";}

}

//B类

public class B extends A{

public String Way2(){

return "B的方法2";

}

}

// test5_6

public class test5_6 {

public static void main(String args[]){

A a=new B();

System.out.println(a.Way1());

}

}

7.什么是多态?如何实现多态?

答:多态性是指不同类型的对象可以响应相同的消息。利用向上塑性技术,一个父类的应引用变量可以指向不同的子类对象;而利用动态绑定技术,可以再运行时根据父类引用变量所指对象的世纪类型执行相应的子类方法,从而实现多态性。

8.在第4章习题10的基础上,声明测试类完成对多态性的测试。(1)在主方法中声明Student类的数组(含五个元素)

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

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

//Student类

public class Student{

String id;

String name;

float scoreOfenglish;

float scoreOfmath;

float scoreOfcomputer;

float scoreOfsum;

//构造方法

public Student(){

}

public Student(String aid,String aname,float ascoreOfenglish,float ascoreOfmath,float ascoreOfcomputer){

this.id=aid;

https://www.360docs.net/doc/de14837191.html,=aname;

this.scoreOfenglish=ascoreOfenglish;

this.scoreOfmath=ascoreOfmath;

this.scoreOfcomputer=ascoreOfcomputer;

//this.scoreOfsum=ascoreOfenglish+ascoreOfmath+ascoreOfcomputer; this.scoreOfsum=sum();

}

//sum方法

public float sum(){

return(this.scoreOfenglish+this.scoreOfmath+this.scoreOfcomputer); }

//testScore测评成绩/平均分

public float testScore(){

return(this.scoreOfsum/3);

}

//6个get方法

public String getid(){

return(id);

}

public String getname(){

return(name);

}

public float getscoreOfenglish(){

return(scoreOfenglish);

}

public float getscoreOfmath(){

return(scoreOfmath);

}

public float getscoreOfcomputer(){

return(scoreOfcomputer);

}

public float getscoreOfsum(){

return(scoreOfsum);

}

//5个set方法

public void setid(String newid){

this.id=newid;

}

public void setname(String newname){

https://www.360docs.net/doc/de14837191.html,=newname;

}

public void setscoreOfenglish(float newscoreOfenglish){

this.scoreOfenglish=newscoreOfenglish;

this.scoreOfsum=sum();

}

public void setscoreOfmath(float newscoreOfmath){

this.scoreOfmath=newscoreOfmath;

this.scoreOfsum=sum();

}

public void setscoreOfcomputer(float newscoreOfcomputer){

this.scoreOfcomputer=newscoreOfcomputer;

this.scoreOfsum=sum();

}

//toString方法

public String toString(){

return("学号:"+this.id+"\n姓名:"+name+"\n英语:"+this.scoreOfenglish+"\n数学:"+this.scoreOfmath+"\n计算机:"+this.scoreOfcomputer+"\n总分:"+this.scoreOfsum);

}

//compare方法/比较2学生总分

public void compare(Student x){

if(this.getscoreOfsum()>x.getscoreOfsum())System.out.println(this.get name()+"总分大于"+x.getname());

if(this.getscoreOfsum()

else System.out.println(this.getname()+"总分等于"+x.getname()); }

//equals方法/比较2学生学号是否相等

/*

* public boolean equals(Object x){

if(this.getClass()!=x.getClass())return false;

Student b=(Student)x;

if(this.id==b.getid())return true;

}

*/

}

//StudentXW

public class StudentXW extends Student{

String responsibility;

//构造方法

public StudentXW(){

super();

//responsibility=" ";

}

public StudentXW(String aid,String aname,float ascoreOfenglish,float ascoreOfmath,float ascoreOfcomputer,String aresponsibility){ super(aid,aname,ascoreOfenglish,ascoreOfmath,ascoreOfcomputer); responsibility=aresponsibility;

}

//testScore测评成绩/平均分

public float testScore(){

return(this.scoreOfsum/3+3);

}

//toString方法

public String toString(){

return("学号:"+this.id+"\n姓名:"+name+"\n英语:

"+this.scoreOfenglish+"\n数学:"+this.scoreOfmath+"\n计算机:"+this.scoreOfcomputer+"\n总分:"+this.scoreOfsum+"\n职位:"+this.responsibility);

}

}

//StudentBZ

public class StudentBZ extends Student{

String responsibility;

//构造方法

public StudentBZ(){

super();

//responsibility="";

}

public StudentBZ(String aid,String aname,float ascoreOfenglish,float ascoreOfmath,float ascoreOfcomputer,String aresponsibility){

super(aid,aname,ascoreOfenglish,ascoreOfmath,ascoreOfcomputer); responsibility=aresponsibility;

}

//testScore测评成绩/平均分

public float testScore(){

return(this.scoreOfsum/3+5);

}

//toString方法

public String toString(){

return("学号:"+this.id+"\n姓名:"+name+"\n英语:

"+this.scoreOfenglish+"\n数学:"+this.scoreOfmath+"\n计算机:"+this.scoreOfcomputer+"\n总分:"+this.scoreOfsum+"\n职位:"+this.responsibility);

}

}

//test5_8

import java.text.*;

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

{

System.out.println("学生名字:"+student[i].getname()+"\t 评测成绩:"+new

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

import java.io.*;

public class test6_2{

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

String fileName = "D:\\Hello.txt";

File writer=new File(fileName);

writer.createNewFile();

BufferedWriter input = new

BufferedWriter(new FileWriter(writer));

input.write("Hello !\n");

input.write("this is my first text

file,\n");

input.write("你还好吗?\n");

input.close();

}

}

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

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

// CopyMaker类

import java.io.*;

class CopyMaker {

String sourceName, destName;

BufferedInputStream source;

BufferedOutputStream dest;

int line;

//打开源文件和目标文件,无异常返回true

private boolean openFiles() {

try {

source = new BufferedInputStream(new FileInputStream( sourceName ));

}

catch ( IOException iox ) {

System.out.println("Problem opening " + sourceName );

return false;

}

try {

dest = new BufferedOutputStream(new FileOutputStream( destName ));

}

catch ( IOException iox )

{

System.out.println("Problem opening " + destName );

return false;

}

return true;

}

//复制文件

private boolean copyFiles() {

try {

line = source.read();

while ( line != -1 ) {

dest.write(line);

line = source.read();

}

}

catch ( IOException iox ) {

System.out.println("Problem reading or writing" );

return false;

}

return true;

}

//关闭源文件和目标文件

private boolean closeFiles() {

boolean retVal=true;

try { source.close(); }

catch ( IOException iox ) {

System.out.println("Problem closing " + sourceName );

retVal = false;

}

try { dest.close(); }

catch ( IOException iox ) {

System.out.println("Problem closing " + destName );

retVal = false;

}

return retVal;

}

//执行复制

public boolean copy(String src, String dst ) {

sourceName = src ;

destName = dst ;

return openFiles() && copyFiles() && closeFiles();

}

}

//test6_2

public class test6_2

{

public static void main ( String[] args ) {

String s1="lin.txt",s2="newlin.txt";

if(new CopyMaker().copy(s1, s2))

System.out.print("复制成功");

else

System.out.print("复制失败");

}

}

运行前的两个文本:lin.txt和newlin.txt(为空)

运行后:

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

// memory存储类

import java.io.*;

import java.util.Random;

public class memory {

private String name;

private int count;

private int Max;

private int Min;

public memory(String n,int c,int min,int max){ https://www.360docs.net/doc/de14837191.html,=n;

this.count=c;

this.Min=min;

this.Max=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+random.nextInt(limit);

System.out.print(number);

System.out.print(" ");

out.write(number+" ");

}

out.close();

}catch(IOException iox){

System.out.println("方法startmemory()有问题");

}

}

}

//test6_3

import java.io.*;

import java.util.Scanner;

public class test6_3 {

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

//BufferedReader

String fileName;

int count,min,max;

Scanner in = new Scanner(System.in);

System.out.println("输入要存储的文件名");

fileName=in.next();

System.out.println("输入随机数个数");

count=in.nextInt();

System.out.println("输入随机数最小值");

min=in.nextInt();

System.out.println("输入随机数最大值");

max=in.nextInt();

memory M=new

memory(fileName,count,min,max);

M.startmemory();

}

}

}

运行结果:

naruto文件存储二进制数:

4.分别使用FileWriter和BufferedWriter往文件中写入10万个随机数,比较用时的多少。

//FileWriter方法

import java.io.*;

public class fileWriter {

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

long time = System.currentTimeMillis();//当前时间

FileWriter filewriter=new

FileWriter("filewriter.txt");

int number;

for(int i=1;i<=100000;i++){

number=(int)(Math.random()*10000);

filewriter.write(number+" ");

}

filewriter.close();

time=System.currentTimeMillis()-time;//时间差

System.out.println("用时为:"+time+"微秒.");

}

}

运行结果:

//BufferedWriter方法

import java.io.*;

public class bufferedWriter {

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

long time = System.currentTimeMillis();//当前时间

BufferedWriter filewriter=new BufferedWriter(new

FileWriter("filewriter.txt"));

int number;

for(int i=1;i<=100000;i++){

number=(int)(Math.random()*10000);

filewriter.write(number+" ");

}

filewriter.close();

time=System.currentTimeMillis()-time;//时间差

System.out.println("用时为:"+time+"微秒.");

}

}

运行结果:

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

0~9)的表格如下:

//test6_5类

import java.io.*;

public class test6_5{

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

BufferedWriter fuck =new

BufferedWriter( new FileWriter("6_5.html"));

fuck.write("

width=200 height=250>");

fuck.newLine();

fuck.write("

");

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

fuck.write("

");

}

fuck.write("

Power of 2Value
"+i+""+Math.pow(i, 2)+"
");

fuck.newLine();

fuck.close();

}

}

运行结果:

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

//test6_6

import java.io.*;

public class test6_6 {

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

FileReader fr=new

FileReader("naruto.txt");

int s;

while((s=fr.read())!=-1){

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

System.out.print((char)s);

else

System.out.print("\n");

}

fr.close();

}

}

运行结果:

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

//test6_7

import java.io.*;

import java.util.Scanner;

public class test6_7 {

//将字符串存入文件

public static void WriteToFile(String s,String fileName){

try{

FileWriter writer = new

FileWriter(fileName);

writer.write(s);

writer.close();

}catch (IOException iox){

System.out.println("写入字符串s到文件时出错!");

}

}

//将字符串从文件中读取出来

public static String ReadFromFile(String fileName){

String s=new String();

try{

BufferedReader in = new BufferedReader(new FileReader(fileName));

s=in.readLine();

}catch(IOException io){

System.out.println("从文件中读出字符串时出错!");

}

return s;

}

//将字符串排序,然后返回字符串

public static String sort(String s){

char[] c=s.toCharArray(); //将字符串转换成字符数组

char temp;

for(int i=0;i

for(int j=i+1;j

if(c[i]>c[j])

{

temp=c[i];

c[i]=c[j];

c[j]=temp;

}

s=new String(c); //注意不能用c.toString return s;

}

public static void main(String args[]){ Scanner in=new Scanner(System.in);

String s=in.next();//从键盘输入一组字符

WriteToFile(s,"D:\\naruto.txt"); //将字符串保存到D:\naruto.txt

s=null;//将s清空,下面好读取,不然无法辨别s是读取到数据还是原来的数据

s=ReadFromFile("D:\\naruto.txt"); //从文件D:\naruto.txt读出字符串

s=sort(s); //将s进行排序

WriteToFile(s,"D:\\newnaruto.txt"); //将排序后的内容保存到另一文件 D:\newnaruto.txt

System.out.println(s);

}

}

运行结果:

文件D:\\naruto.txt和D:\\newnaruto.txt中内容:

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

//Student类

import java.io.Serializable;

class Student implements Serializable{

String name;

int age;

int grade;

transient String secret;

public Student(String name,int age,int grade,String secret){

https://www.360docs.net/doc/de14837191.html,=name;

this.age=age;

this.grade=grade;

this.secret=secret;

}

}

//test6_8

import java.io.*;

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

//创建输出

ObjectOutputStream oos=new ObjectOutputStream(

new

FileOutputStream("naruto.dat"));

for(int i=0;i

oos.writeObject(student[i]);

oos.close();

//将对象数组student全部清空,后边你会明白的。

for(int i=0;i

student[i]=null;

//创建输入

ObjectInputStream ois=new

ObjectInputStream(

new FileInputStream("naruto.dat"));

for(int i=0;i

student[i]=(Student)ois.readObject(); //

重新从文件中读入,之前的清空就因为此读入。注意,读入要强制转化为学生类

ois.close();

//显示信息

for(int i=0;i

if(i==student.length-1){

System.out.println("我的名字:

"+student[i].name);

System.out.println("我的年龄:

"+student[i].age);

System.out.println("我的班级:

"+student[i].grade);

System.out.println("我的密码:

"+student[i].secret);

System.out.println();

}

else{

System.out.println("第"+(i+1)+"个女学

生名字:"+student[i].name);

System.out.println("第"+(i+1)+"个女学

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

System.out.println("第"+(i+1)+"个女学

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

System.out.println("第"+(i+1)+"个女学

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

System.out.println();

}

}

}

}

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/de14837191.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.两种循环结构中都必须有循环体,循环体不能为空

相关文档
最新文档