(一) 方法重载
1.同一个类中多个方法具有相同的方法名,不同的______称为方法的重载.(参数列表)
2.在某个类中存在一个方法:void getSort(int x),以下能作为这个方法的重载的声明的是(C).
A)public getSort(float x) B)int getSort(int y)
C)double getSort(int x,int y) D)void get(int x,int y)
3.在某个类中存在一个方法:void sort(int x),以下不能作为这个方法的重载的声明的是(B).
A)public float sort(float x) B)int sort(int y)
C)double sort(int x,int y) D)void sort(double y)
4. 为了区分类中重载的同名的不同方法,要求( A).
A) 采用不同的形式参数列表 B) 返回值类型不同
C) 调用时用类名或对象名做前缀 D) 参数名不同
5. 重载的方法可以通过它们的返回值类型的不同来区分吗
答:
(不能)
6. 编译程序如何区分重载方法的调用
答:(根据参数列表不同来区分)
(二)数组
1. 在一个应用程序中定义了数组a:int[ ] a={1,2,3,4,5,6,7,8,9,10};,为了打印输出数组a的最后一个数组元素,下面正确的代码是( B).
A) System.out.println(a[10]); B) System.out.println(a[9]);
C) System.out.println(a[a.length]); D) System.out.println(a(8));
2.下面关于数组定义语句不正确的是( D ).
A)int[ ] a1,a2; B)int a0[ ]={11,2,30,84,5};
C)double[] d=new double[8]; D)float f[ ]=new {2.0f,3.5f,5.6f,7.8f};
3.设有定义语句int a[ ]={3,9,-9,-2,8}; 则以下对此语句的叙述错误的是(C ).
A) a数组有5个元素 B) 数组中的每个元素是整型
C) a的值为3(显然a为数组名,直接打印的话就是地址)
D) 对数组元素的引用a[a.length-1]是合法的
4.设有定义语句int a[ ]={66,88,99}; 则以下对此语句的叙述错误的是(C).
A) 定义了一个名为a的一维数组 B) a数组有3个元素
C) a数组的元素的下标为1~3 (坐标从0起) D)数组中的每个元素是整型
5. 为了定义三个整型数组a1,a2,a3,下面声明正确的语句是( B ).
A)intArray [ ] a1,a2; int a3[ ]={1,2,3,4,5};
B)int [ ] a1,a2; int a3[ ]={1,2,3,4,5};
C)int a1,a2[ ]; int a3={1,2,3,4,5};(a1不是数组)
D)int [ ] a1,a2; int a3=(1,2,3,4,5);
6.设 i,j 为int型变量名,a 为int型数组名,以下选项中,正确的赋值语句是(B).
A) i = i + 2 B) a[0] = 7; C) i++ - --j; D) a(0) = 66;(数组下标用[])
7. 若已定义byte[ ] x={11,22,33,-66};
其中0≤k≤3,则对x数组元素错误的引用是( C).
A) x[5-3] B) x[k] C) x[k+5] D) x[0]
坐标越界
8.设有定义 int[ ] a=new int[4]; ,a的所有数组元素是(B).
A) a0, a1, a2, a3 B) a[0], a[1], a[2], a[3]
C) a[1], a[2], a[2], a[4] D) a[0], a[1], a[2], a[3], a[4]
9.设有整型数组的定义:int a[ ]=new int[8]; ,则a.length的值为_____.(8)
10. 定义数组,需要完成以下三个步骤,即:________,_______和________ .
(声明数组;创建数组空间;初始化)
11. 在Java语言中,所有的数组都有一个_________属性,这个属性存储了该数组的元素的个数(数组长度).(length)
12. 若有定义 int[ ] a=new int[8]; 则a的数组元素中第7个元素和第8个元素的下标分别是____和____.(6 7)
13.定义一个整型数组y,它有5个元素分别是1,2,3,4,5.用一个语句实现对数组y的声明,创建和赋值:__________________;.
(int y[]={1,2,3,4,5};)
14. 数组一定占用连续的内存空间吗 (是)
15.下面程序的功能为计算数组各元素的和,完成程序填空.
import java.awt.Graphics;
import java.applet.Applet;
public class SumArray extends Applet
{
int a[] = { 1, 3, 5, 7, 9, 10 };
int total;
public void init(){
total = 0;
for ( int i = 0; ___________; i++ )
total=______________;
}
public void paint( Graphics g )
{
g.drawString( "Total of array elements: " +total, 25, 25 );
}
}
答:i<a.length a[i]+total;
16.下面程序的功能是输出数组各元素的和, 完成程序填空.
import java.awt.Graphics;
import java.applet.Applet;
public class SumArray extends Applet
{
float[] a= new _______[6];
float sum=0.0f;
public void init( )
{ for ( int j = 0; j < a.length; j++ ) a[j] = j+1;
for ( int i = 0 ; i < a.length; i++ ) sum+= a[i];
}
public void paint( Graphics g )
{
g.drawString( "Total of array elements: " + ________ , 25, 25 ); }
}
答:(float sum)
17.下面程序的功能为计算数组下标为奇数的各元素的和, 完成程序填空.
import java.awt.Graphics;
import java.applet.Applet;
public class SumOfArray _______ Applet
{
public void paint( Graphics g )
{
int a[] = { 1, 3, 5, 7, 9, 10 };
int total=0;
for ( int i = 1; i < a.length; _______ )
total+=a[i];
g.drawString( "Total of array elements: " + total, 25, 25 );
}
}
答:(extends i+=2)
18.下面程序的功能为计算数组各元素和的平均值,完成程序填空.
import java.awt.Graphics;
import java.applet.Applet;
public class SumOfArray extends Applet
{
public void paint( ___________ g )
{
int a[] = { 1, 3, 5, 7, 9, 10 };
int total=0; float ave;
for ( int i = 0; i < a.length; i++ )
total+=a[i];
ave=total/_______;
g.drawString( "ave= " + ave, 25, 25 );
}
}
答: (Graphics; (float)a.length)
21.下面是一个类的定义,请将其补充完整.
___________ A
{ String s;
_____ int a=666;
A(String s1) { s=s1; }
static int geta( ) { return a; }
}
答:(class static)
22.阅读程序,回答问题.
public class Test52
{
String static str1="Hello, Java world! \t";
String static str2="Hello, students! ";
public static void main(String args[])
{ System.out.print(str1);
System.out.println(str2); }
}
问题:1)这是哪种形式的 java 程序 。
2)程序的输出是什么 输出的结果在 Applet 窗口中吗。
答:1.(java应用程序) 2.Hello, Java world! Hello, students!
(继承:类,属性和方法的继承,属性隐藏和方法覆盖,构造函数的继承,父类对象和子类对象的关系)
1. Java语言的类间的继承关系是( B ).
A) 多重的 B) 单重的 C) 线程的 D) 不能继承
2. 以下关于Java语言继承的说法正确的是( C ).
A)Java中的类可以有多个直接父类 B)抽象类不能有子类
C)Java中的接口支持多继承 D)最终类可以作为其它类的父类
3. 下面是有关子类继承父类构造函数的描述,其中正确的是( B).
A) 如果子类没有定义构造函数,则子类无构造函数
B) 子类构造函数必须通过super关键字调用父类的构造函数
C)子类必须通过this关键字调用父类的构造函数
D)子类无法继承父类的构造函数
4. 现有两个类A,B,以下描述中表示B继承自A的是(D).
A) class A extends B B) class B implements A
C) class A implements B D) class B extends A
5. 子类可以继承父类的_______成员(非私有).构造函数也能被继承和重载.
6. 如果子类中的某个变量的变量名与它的父类中的某个变量完全一样,则称子类中的这个变量_____了父类的同名变量.(隐藏)
7. 属性的隐藏是指子类重新定义从父类继承来的_同名变量和属性_________. (同名变量或属性)
8. 如果子类中的某个方法的名字,返回值类型和_参数列表_与它的父类中的某个方法完全一样,则称子类中的这个方法覆盖了父类的同名方法.(参数列表)
9. 抽象,封装,__继承___和多态是Java语言的四大特性.(继承)
10. 在Java语言中,使用__封装___和多态等技术,实现软件重用.(封装)
11. Java 仅支持类间的单重继承。.(单。重)
12. 子类的成员变量能与其父类的成员变量同名吗 (能)
答:能
13. 什么是方法覆盖
答:子类重新定义继承自父类的同名方法,使之实
14. 一个子类可以重新定义从父类那里继承来的同名方法.但是,允许它们有不同类型的返回值吗 (不能)
答:
15. 子类对象如何引用被它隐藏了的父类的属性和调用被它覆盖了的父类的方法
答: (使用super关键字做前缀)
16. 子类的对象能直接向其父类对象赋值吗 反之呢 子类对象一定是父类的对象吗 (能;不能;是;)
17. Java语言中定义接口的关键字是什么 接口的继承应如何实现 接口支持多继承吗(interface;使用关键字extends实现;支持)
18. java中,一个子类可以有多个父类吗 可以为一个(父)类定义多个子类吗 (不能;可以)
19. 保留字 this 代表什么 (this表示类当前对象本身)
20.下面是一个小程序的主类myprogram的定义, 其中A,B是该主类所在源程序中已定义的另两个类的类名,完成程序填空.(void new)
import java awt.*;
import java applet.*;
public class myprogram extends Applet //定义小程序的主类
{
A a; B b;
public ________ init( )
{ a=new A( ); b=_____ B( ); }
}
21.下面是一个类的定义,完成程序填空.
public class Youwrite
{
int x;
_______( ) {x=0;}
Youwrite ( int x)
{ _____; }
}
答:(Youwrite this.x=x;)
22.现有类说明如下,请回答问题:
public class A
{
String str1=" Hello! \t";
String str2=" How are you ";
public String toString( )
{ return str1+str2; }
}
public class B extends A
{
String str1="\b\b,Bill.";
public String toString( )
{ return super.str1+str1; }
}
问题:
1)类A和类B是什么关系
2)类A和类B都定义了str1属性和方法toString( ), 这种现象分别称为什么
3)若a是类A的对象,则a.toString( )的返回值是什么
4)若b是类B的对象,则b.toString( )的返回值是什么
答: (继承关系);(属性的隐藏;方法的覆盖);(Hello! How are you );(Hello,Bill.)
23.现有一个类定义如下,请回答问题:
class Employee
{
String name;
int age;
double wage;
static int No=0;
Employee(String a1,int a2,double a3)
{
name=a1; age=a2; wage=a3;
No++;
}
}
在使用该类时,已使用下面语句生成了该类的对象:
Employee e1,e2;
e1=new Employee("王劲",26,6300);
e2=new Employee("张山",30,3800);
问题:
1)e2.name,e2.age,e2.wage的值各是什么
2)生成对象e1,e2后,e1.No值为多少 能否通过类名做前缀引用属性No
答: (张山;30;3800.0);(2; 能)
24.有如下源程序,请回答问题:
import java.awt.*;
import java.applet.*;
public class Javaapplet extends Applet
{
B b;
public void init( )
{ b=new B( 'f', 87.6f, 69.1f); }
public void paint(Graphics g)
{
g.drawString("序号 "+"性别 "
+"成绩1 "+"成绩2 ",20,50);
b.print(g);
}
}
class A
{
static int n=100;
char ch;
A( ) { n++; }
A( char c){ this( ); ch=c; }
void print(Graphics g)
{ g.drawString(" "+n+" "+ch,20,70); }
}
class B extends A
{
float s1, s2;
B(float r1,float r2){ s1=r1; s2=r2; }
B( char c, float r1, float r2)
{ super(c); s1=r1; s2=r2; }
void print(Graphics g)
{
super.print(g);
g.drawString(" "+s1+" "+s2,40,70);
}
}
问题: 该程序的输出是什么
答:
序号 性别 成绩1 成绩2
101 f 87.6 69.1
25.阅读程序,回答问题.
public class InheritTest1
{
public static void main (String[] args)
{
A aa; B bb;
aa=new A( ); bb=new B( );
aa.show( ); bb.show();
}
}
class A
{
int a=1;
double d=2.0;
void show( )
{ System.out.println("Class A: "+"\ta="+a +"\td="+d); }
}
class B extends A
{
float a=3.0f;
String d="Java program.";
int b=4;
void show( )
{
System.out.println("Class A: "+"\ta="+super.a +"\td="+super.d);
super.show( );
System.out.println("Class B: "+"\ta="+a +"\td="+d+"\tb="+b);
}
}
问题:1)这是哪一类java程序
2)类A和类B是什么关系
3)按程序输出的格式写出程序运行后的结果.
答: (java应用程序); (类B是类A的子类);
(程序运行结果如下:
Class A: a=1 d=2.0
Class A: a=1 d=2.0
Class A: a=1 d=2.0
Class B: a=3.0 d=Java program. b=4 );
26.现有类说明如下,请回答问题:
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()的返回值是什么
3)若b是类B的对象,则b.getA()的返回值是什么
4)类A和类B都定义了x属性,这种现象称为什么
答:能;100;10;(属性的隐藏)
27.有如下源程序,请回答问题:
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)
28.现有类说明如下,请回答问题:
public class A
{
int x=888;
String str="I like: ";
public String toString()
{ return str+x; }
}
public class B extends A
{
String x="java";
public String toString()
{ return str+x+" and "+super.x; }
}
问题:1)类A和类B是什么关系
2)类A和类B都定义了x属性和方法toString(),这种现象分别称为什么
3)若a是类A的对象,则a.toString( )的返回值是什么
4)若b是类B的对象,则b.toString( )的返回值是什么
答: (类B是类A的子类);(属性的隐藏和方法的覆盖);(I like: 888);
(I like: java and 888)
(多态:抽象类和抽象方法,最终类和最终方法,接口)
1. 下列选项中,用于定义接口的关键字是( A).
A)interface B) implements C) abstract D) class
2. 下列选项中,用于实现接口的关键字是( B).
A)interface B) implements C) abstract D) class
3. 抽象方法只有方法头,没有________. (方法体)
4. Java 语言的接口是特殊的类,其中包含______常量和_______方法.(static(静态) ; abstract(抽象))
5. 接口中所有属性均为_________,_________和________的.
(public,static,final)
6. 用那个关键字定义抽象类和抽象方法 (abstract)
7. 抽象类只能做为父类吗 (也可以包含抽象方法,做为抽象子类)
8. 可以定义抽象类的对象吗 (不能)
9. 抽象方法能被继承吗 (能)
10. 抽象方法只能存在于抽象类中吗 (是;也可以存在在接口中)
11. 声明为final的方法能在子类中重新定义吗 (不能)
12 用那个关键字定义最终类和最终方法 (final)
13. 最终类能做为父类吗 (不能)
14. 最终方法能被继承吗 (能)
15. 最终方法只能存在于最终类中吗 (不一定)
16. 声明为 static和private 的方法是final的吗 (实际上是)
17. 接口中所有方法均为抽象方法吗 (是)
18. 接口中所有方法均为public的吗 (是)
19. abstract 和 final能同时修饰一个类吗 (不能)
20.下面是定义一个接口的程序,完成程序填空.
public _______ ITF
{
public static final double PI=Math.PI;
public ______ double area(double a, double b);
}
答:(interface abstract )
21.下面是定义一个接口A的程序,完成程序填空.
public interface A
{
public static _______ double PI=3.14159;
public abstract double area(double a, double b)_____
}
答:(final ";" )
22.阅读下面的程序,回答以下问题:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class Applet1 extends Applet implements ActionListener
{
Label label;
TextField t1;
int i=0;
public void init()
{
label=new Label("请输入一个整数:");
add(label);
t1=new TextField(10);
add(t1);
t1.addActionListener(this);
}
public void paint(Graphics g)
{
int product=1;
for(int k=1;k<=i;k++)
product+=k;
g.drawString("product="+product,20,60);
}
public void actionPerformed(ActionEvent e)
{
i=Integer.parseInt(t1.getText());
repaint();
}
}
(1)ActionListener是类还是接口 程序中哪个方法是ActionListener中的方法,其功能为何
(2)若在文本域中输入3并回车,写出程序输出的结果
答:( ActionListener是接口;程序中actionPerformed()方法是ActionListener中的方法,它在程序中实现的功能是:在文本域中回车时,将文本域中输入的数字字符串转化为整数,并重新调用paint()方法输出结果.);(在小程序界面坐标为20,60处输出:product=7)