System.out.println(\break; case 'y': case 'w':
System.out.println(\break;
default:System.out.println(\} } } }
2. 算法提示:一个数字的因子是1和本身,则这个数是素数。 源程序(javajc\\ch02\\FindPrime.java): package ch02; /**
*
Title:求素数
*
Description: 一个数字的因子是1和本身,则这个数是素数
*
Company: 学院信息技术系
*Address:杭州下沙4号大街
*Email:qinxueli@zj.com
*Postcode:310018
* @version 1.0 */public class FindPrime {
public static void main(String[] args) { next:for( int i=50;i<=100;i++){ for (int j=2;j
if (i % j == 0) //如果因子,不是素数,取下一个属判断 continue next; }
System.out.print(i+\输出因素 } } }
运行结果:
53 59 61 67 71 73 79 83 89 97
三、1. 答:在面向对象程序设计里,类是定义一个对象的属性和方法的蓝本。对象就是一组变量和相关方法的集合,其中变量表明对象
的状态,方法表明对象所具有的行为。类是对象的模板,对象是类的实例,可以从一个类中创建许多对象。
2. 答:方法重载,指的是在类中创建多个具有相同名称,但使用不同参数的方法,Java虚拟机根据传递给方法的参数个数和类型决定调
用哪个重载方法。方法的覆盖指在子类中重新定义父类中已有的方法,对于重写的
方法,运行时系统根据调用该方法的实例的类型来决定选 择哪个方法调用。
3.答:由static修饰的变量称为类变量,当系统在程序中第一次遇到一个类时,便会拷贝一份所有的类变量在内存里。然后那些由此类 产生的实例便可分享这些类变量。
实例变量指不是用static修饰的变量,可供实例方法使用。实例变量会复制于每一个从类产生的实例中。
4.答:① 一个抽象类里可以没有抽象方法,但含有抽象方法的类必定为抽象类。 ② 抽象类不能被实例化为对象,而只能作为其它类的超类,并且必须被继承。 ③ 若某子类继承自一个抽象类,而该子类不是抽象类,则子类需用覆盖的方式来实例化超类中的所有抽象方法。抽象方法可再与
public、protected复合使用,但不能与final、private和static复合使用。 ④ 抽象方法只有方法声明,不能有方法体。
第五单元 试题 一、填空题
1.在子类中使用关键字_______做前缀可调用被子类覆盖的父类中的方法。 2.Java中所有类都是_______类的子类。
3.通过_______运算符就能实现对对象成员变量的访问和对象方法的调用。 4.类的构造方法的名称必须与_______名相同。 5.类方法只能处理用关键字_______修饰的对象。 二、选择题
1.对象使用时,下面描述错误的是( )
A. 通过“.”运算符调用成员变量和方法
B. 通过成员变量的访问权限设定限制自身对这些变量方法的调用 C. 将一个对象申明为类的成员时,必须在使用前为其分配内存 D. 在方法中使用对象作为参数时,采用引用调用
2.定义一个名为“MyClass”的类,并且该类可被一个工程中的所有类访问,那么该类的正确声明应为:( )
A. private class MyClass extends Object B. class MyClass extends Object C. public class MyClass D. private class MyClass extends Object 3.Java中访问限定符不包括( )
A. public B. private C. default D. final 4.构造方法何时被调用( )
A.类定义时 B.创建对象时 C.调用对象方法时 D.使用对象的变量时
5.如果任何包中的子类都能访问超类中的成员,那么应使用哪个限定词( ) A.public B.private C.protected D.transient 三、程序阅读题
1.编译并运行下面的程序,运行结果为( ) public class T1 {
public static void main (String[] args) {
T1 a=new T1(); a.method(8); a.method(1.2f); }
void method(float i) {
System.out.println(\}
void method(long i) {
System.out.println(\} }
(2)定义类A和类B如下: class A {
int a=1;
double d=2.0; void show( ) {
System.out.println(\} }
class B extends A {
float a=3.0f;
String d=\void show( ) {
super.show( );
System.out.println(\} }
(1) 若在应用程序的main方法中有以下语句: A a=new A(); a.show(); 则输出的结果如何?
(2) 若在应用程序的main方法中定义类B的对象b: A b=new B(); b.show(); 则输出的结果如何? 答案:
一、1. super 2. Object 3. 圆点 4. 类 5. static 二、1.B 2.C 3.D 4.B 5.C
三、1.答:编译出错,Mine应声明为abstract类型。
2.答:程序可以编译运行,输出结果为: long: 8 float: 1.2
3.答: Class A: a=1 d=2.0 Class A: a=1 d=2.0
Class B: a=3.0 d=Java program. 第六单元 试题 一、判断题
1. 内部类可以访问外层类的任何变量,包括私有的。() 2.匿名类可以有构造器,声明时候不能带参数。() 3.抽象方法可以是static的。()
4.构造器没有任何返回类型,哪怕是void也不行。()
5.只要类中显式地定义一个,那么Java不会再为你定义一个默认的构造器。() 6.构造方法可以被继承。()
7.方法的参数变量不能是final的()
8.一个Java类可以有多个父类,这称作多继承.() 二、简答题
1.Java的成员变量修饰符有哪几种?其中哪种修饰符限定的范围最大? 2.写出下列关键字的意义和运用场合:①final;②finalize;③finally。 3.作用域public,private,protected,以及不写时的区别 三、编程题
请定义一个名为Card的扑克牌类,该类有两个private访问权限的字符串变量face和suit:分别描述一张牌的牌面值(如:A、K、Q、J、10、
9、?、3、2等)和花色(如:“黑桃”、“红桃”、“梅花”和“方块”)。定义Card类中的public访问权限的构造方法,为类中的变量赋
值;定义protected访问权限的方法getFace(),得到扑克牌的牌面值; 定义protected访问权限的方法getSuit(),得到扑克牌的花色; 定义方法
toString(),返回表示扑克牌的花色和牌面值字符串(如“红桃A”、“梅花10”)。 答案:
一、1. T 2. F 3. F 4. T 5. T 6. F 7. F 8.F
二、1. 答:成员变量的修饰符有public、protected、private、static、final、transient、volatile七种。Public修饰符的限定范围最大。 2. 答:final, finally, finalize的区别如下: final 用于声明属性、方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 finally是异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例 如关闭文件等。 3. 答:区别如下:
作用域 当前类 同一package 子孙 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × × 不写时默认为friendly 三、解题思路如下:
class Card {
private String face; private String suit;
public Card( String f, String s ) { face = f; suit = s; }
protected String getSuit(){ return suit; }
protected String getFace(){ return face; }
public String toString(){ return face + \} }
第七单元 试题 一、判断程序段
1. abstract class Name { private String name;
public abstract boolean isStupidName(String name) {} }
2. abstract class Something {
private abstract String doSomething (); }
3. public class Something { public int addOne(final int x) { return ++x; } }
4. public class Something {
public static void main(String[] args) { Other o = new Other();
new Something().addOne(o); }
public void addOne(final Other o) { o.i++; } }
class Other { public int i;