一、选择题和问答题
1、在一个java原文件中,import, class, package语句的顺序是(D)。
A. import classpackage
B. class importpackage
C. package classimport
D. import packageclass
E. class packageimport
F. package importclass
2、执行下面程序段后,b, x, y的值分别是( D ).
int x=6,y=8;
boolean b;
b=x>y&&++x==--y;
A)true , 6, 8 B)false , 7, 7 C)true, 7, 7 D)false, 6, 8
3、下列语句序列执行后,r 的值是( C ).
char ch='8'; intr=10;
switch( ch+1 )
{
case '7': r=r+3;
case '8': r=r+5;
case '9': r=r+6;break;
default: r=r+8;
}
A) 13 B) 15 C) 16 D) 18
4、能从循环语句的循环体中跳出的语句是( BCD ).
A)for语句 B)break语句 C) continue语句 D)return语句
5、为了区分类中重载的同名的不同方法,要求( AB ).
A) 采用不同的形式参数列表 B) 返回值类型不同
C) 调用时用类名或对象名做前缀 D) 参数名不同
6、现有一个类定义如下,请回答问题:
class Employee
{
String name;
int age;
double wage;
static int No=0;
Employee(Stringa1,int a2,double a3)
{
name=a1; age=a2;wage=a3;
No++;
}
}
在使用该类时,已使用下面语句生成了该类的对象:
Employee e1,e2;
e1=newEmployee("王劲",26,6300);
e2=newEmployee("张山",30,3800);
问题:
1) e2.name,e2.age,e2.wage的值各是什么 ?
e2.name: 张山
e2.age:30
e2.wage:3800
2) 生成对象e1,e2后,e1.No值为多少?能否通过类名做前缀引用属性No ?
e1.No=2;
可以通过类名做前缀引用属性No
7、现有类说明如下,请回答问题:
class A
{
int x=10;
int getA(){return x;}
}
class B extends A
{
int x=100;
int getB(){return x;}
}
问题:
1)类B是否能继承类A的属性x ?
可以
2)若b是类B的对象,则b.getB()的返回值是什么?
100
3)若b是类B的对象,则b.getA()的返回值是什么?
10
4)类A和类B都定义了x属性,这种现象称为什么 ?
重写
8、有如下源程序,请回答问题:
class A
{ String s="class A"; }
class B extends A
{ String s="class B"; }
public class TypeConvert
{
public static void main(String args[])
{
B b1,b2=new B();
A a1,a2;
a1=(A)b2;
a2=b2;
System.out.println(a1.s);
System.out.println(a2.s);
b1=(B)a1;
System.out.println(b1.s);
System.out.println(b2.s);
}
}
问题: 该程序的四行输出各是什么?
class A
class A
class B
class B
9、下面是定义一个接口ITF的程序,完成程序填空.
public interface ITF
{
public static final double PI=Math.PI;
public ( abstract )double area(double a, double b);
}
10、下面是定义一个接口A的程序,完成程序填空.
public interface A
{
public ( static )( final ) double PI=3.14159;
public double area(double a, double b) ( ; )
}
11、下面关于构造函数的说法不正确的是( B )
A、构造函数也属于类的方法,用于创建对象的时候给成员变量赋值。
B、构造函数不可以重载。
C、构造函数没有返回值。
D、构造函数一定要和类名相同。
12、构造函数何时被调用( B )
A.类定义时 B.创建对象时
C.调用对象方法时 D.使用对象的变量时
13、在 Java 中,用 package 语句说明一个包时,该包的层次结构必须是( B )
A 与文件的结构相同
B 与文件目录的层次相同
C 与文件类型相同
D 与文件大小相同
14、在 Java 中,所有类的根类是( A )
Ajava.lang.Objet Bjava.lang.Class Cjava.applet.Applet D java.awt.Frame
15、有如下代码:
public class T {
private int a =10;
int m = 12;
static int n=1;
public static voidmain(String arg[]) {
T t = new T ();
System.out.println(__________);
} }
在空格处如下哪个使用是错误的?( B)
A) t.a
B) this.m
C) t.m
D) T.n
16、下面哪个是正确的类声明?假设每一段文本都做为一个名称为Fred.java的文件的全部内容? ( A )
a).
publicclass Fred{
publicint x = 0;
publicFred (int x){
this.x=x;
}
}
b).
publicclass fred{
publicint x = 0;
publicFred (int x){
this.x=x;
}
}
c).
publicclass Fred extends MyBaseClass, MyOtherBaseClass{
publicint x = 0;
publicFred(int xval){
x=xval;
}
}
d).
protectedclass Fred{
privateint x = 0;
privateFred (int xval){
x=xval;
}
}
A.a)
B.b)
C.c)
D.d)
17、在Java中下列关于继承的论述中,错误的是( C )
A.继承具有传递性 B.继承关系也称为"即是"(is a)关系
C.支持多继承 D.继承提高了系统的可重用性
18、在Java中,关于封装性的说法中,错误的是( B )
A.是一种信息隐蔽技术 B.使对象之间不可相互作用
C.是受保护的内部实现 D.与类有关,封装的基本单位是对象
二、填空题
1、面向对象程序设计的三大特性是:封装,( 继承 ),( 多态 )。
2、java中的访问修饰符有( public ),( protected ),( private )。
三、编程题:
1、定义一维数组int nums={45,67,89,12,34,90,100,23,34,5,6,78} ,输出其中最大值。
publicclass Test {
publicstaticvoid main(String[] args) {
int[] nums = { 45, 67, 89, 12, 34, 90, 100, 23, 34, 5, 6, 78 };
intmax = nums[0];
for (inti = 0; i < nums.length; i++) {
if (max < nums[i]) {
max = nums[i];
}
}
System.out.println("The Max Num=" + max);
}
}
2、定义一维数组int nums={45,67,89,12,34,90,100,23,34,5,6,78} ,从小到大排序并输出。
publicclass Test {
publicstaticvoid main(String[] args) {
int[] nums = { 45, 67, 89, 12, 34, 90, 100, 23, 34, 5, 6, 78 };
inttemp;
for (inti = 0; i < nums.length-1; i++) {
for(intj=0;j<nums.length-1;j++){
if(nums[j]>nums[j+1]){
temp=nums[j];
nums[j]=nums[j+1];
nums[j+1]=temp;
}
}
}
for (inti = 0; i < nums.length-1; i++) {
System.out.print(nums[i] + " ");
}
}
}
3、使用面向对象的编程方法,实现如图所示的设计,使用继承简化设计
//汽车类
publicclass Auto {
public String autoType; //汽车类型
public String autoNum; //车牌号码
public String autoPrice; //汽车价格
}
//轿车类
publicclass Car extends Auto{
public String carName; //轿车名称
}
//货车类
publicclass Truck extends Auto{
public String truckName; //货车名称
}
//XX轿车类
publicclass XX extends Car {
}
//XX货车类
publicclass XX extends Truck {
}
4、定义一个水果接口Fruit
有一个方法:introduction();
publicinterface Fruit {
publicvoid intriduction();
}
定义一个类Apple实现这个接口,并输出:我是一个苹果
publicclass Apple implements Fruit {
@Override
publicvoid introduction() {
// TODOAuto-generated method stub
System.out.println("我是一个苹果");
}
}
定义一个类Banana实现这个接口,并输出:我是一只香蕉
publicclass Banana implements Fruit {
@Override
publicvoid introduction() {
// TODOAuto-generated method stub
System.out.println("我是一个香蕉");
}
}
定义一个类Sydney实现这个接口,并输出:我是一个雪梨
publicclass Sydney implements Fruit {
@Override
publicvoid introduction() {
// TODOAuto-generated method stub
System.out.println("我是一个雪梨");
}
}
定义个类,通过接口的定义,示例化以上三个类。并调用introduction()方法
publicclass FruitIntroduct {
publicstaticvoid main(String[] args) {
Fruit apple=new Apple();
Fruit banana=new Banana();
Fruit sydney=new Sydney();
apple.introduction();
banana.introduction();
sydney.introduction();
}
}
三、简答题:
1、多态包括那两种方式,请分别讲述。
多态包括重写和重载。
重写是指子类和父类的方法具有相同的形式(包括方法的名称、方法的返回类型和方法的参数列表),在调用子类中重写的方法需要使用子类的对象。
重载是指一个类中同名的方法具有不同的参数列表(包括参数个数不同或参数类型不同),或者方法的返回类型不同。
2、接口和抽象类有什么区别?
抽象类是用abstract对类进行修饰,如果一个方法是抽象的,那么这个方法所属的类也必须是抽象的。抽象类中可以声明变量,可以声明抽象方法,也可以有方法的具体实现。
接口是用interface进行定义的。接口也可以理解成一种抽象类,但是接口不可以有方法的具体实现,只能声明常量,声明普通方法或抽象方法。