您的当前位置:首页正文

[0837]作业《面向对象程序设计》

2022-02-19 来源:星星旅游
 ..WORD完美格式..

1、阅读下面的程序:

该程序运行的输出结果是:( c )

1. 2. 3. 4.

A. eace B. PEACE C. ecaep D. ECAEP

2、阅读下面的程序:

该程序运行的输出结果是:(D )

1. 2. 3. 4.

A. 0123456789ABCDEF B. ABCDEF0123456789 C. 0123456789abcdef D. fedcba9876543210

..专业知识编辑整理..

..WORD完美格式..

3、阅读下面的程序:

该程序运行的输出结果是:( D )

1. 2. 3. 4.

A. 1 2 2 4 8 B. 2 2 4 8 32 C. 1 4 4 16 64 D. 1 2 6 24 120

4、阅读下面程序:

该程序运行的输出结果是:( B )

..专业知识编辑整理..

..WORD完美格式..

1. 2. 3. 4.

A. sum = 6 B. sum = 32 C. sum = 64 D. sum = 12

5、从开始执行到执行结束,小应用程序经历的3个状态分别是:( C )

1. A. 初始态、就绪态,结束态 2. B. 就绪态、运行态,停止态 3. C. 初始态、运行态,停止态 4.

D. 就绪态、运行态,休眠态

6、下列关于Java小应用程序(Applet)的说法中,正确的是:( 1. A. java.applet.Applet类是所有Java小应用程序的基类 2. B. Java小应用程序不需要编译 3. C. Java小应用程序也需要main()方法

4.

D. Java小应用程序必须实现ActionListener接口

7、Swing的三个顶层容器分别是:( B )

1. A. JApplet,JPanel,JWindow 2. B. JDialog,JApplet,JFrame 3. C. JApplet,JFrame 4. D. JMenu

5.

E. JFrame,JPanel,JTextArea

8、把容器划分为东、西、南、北、中5个区域的布局管理器是:( 1. A. BoxLayout 2. B. FlowLayout 3. C. ardLayout 4. D. BorderLayout

9、下列语句序列执行之后,b1,b2,b3,b4的值分别是:( C String s1 = \"peace\"; String s2 = new String(s1); String s3 = s2;

..专业知识编辑整理..

A )

D )

) ..WORD完美格式..

String s4 = new String(\"PEACE\"); boolean b1 = (s1 == s2); boolean b2 = s1.equals(s2); boolean b3 = (s3 == s2); boolean b4 = s4.equals(s3);

1. A. true,true,false,false 2. B. false,true,true,true 3. C. false,true,true,false 4.

D. false,true,false,false

10、下列构造String的语句中,不正确的是:( D 1. A. String str2 = \"\" ;

2. B. String str1 = new String( ); 3. C. String str4 = \"\" + 123; 4.

D. String str3 = new String(123);

11、下列关于构造方法的说法中,不正确的是:(B 1. A. 构造方法用于创建类的实例 2. B. 构造方法不可以重载 3. C. 构造方法不具有返回值类型 4.

D. 构造方法名必须和类名相同

12、既能作为类的修饰符, 也能作为类成员的修饰符的是(1. A. public 2. B. extends 3. C. void 4.

D. static

13、执行完下列语句后,变量x的值是( D ) int x=7, y=10; switch( x/y ) { case 0: x++;

..专业知识编辑整理..

A )

..WORD完美格式..

case 7: x*=y; case 14: x+=y; break; default: x%=y; }

1. A. 8 2. B. 70 3. C. 80 4.

D. 90

14、以下由for语句构成的循环的执行次数是:( D ) for (int i=0; i<=0; i=i) ;

1. A. 有语法错,不能执行 2. B. 一次也不执行 3. C. 执行1次 4.

D. 无限次

15、设有定义 int i=7;char ch=\"b\"; 下面赋值语句中不正确是:( B )

1. A. i = ch; 2. B. ch = i; 3. C. ch = (char)i; 4.

D. i = (int)ch;

16、设有定义 int i=80, j=7; double d=80.7; 则下列语句中正确的赋值语句是:( C 1. A. i + j = (int)d; 2. B. i = d;

3. C. i = (int)d + j; 4.

D. j = (int)i - d;

17、以下关于Java语言的叙述错误的是:( B )

1. A. Java是最纯粹的面向对象语言,对面向对象方法学的支持也最全面

2. B. Java是解释执行的语言,由Java解释器负责将Java源文件解释为机器码执行 3. C. Java是平台无关的,即Java程序不用修改就可以在不同类型的计算机平台上运行 4.

D. Java提供了大量功能丰富的可重用类库,有效减少了编程的工作量

18、Java语言具有许多优点和特点,下列选项中,哪个反映了Java程序“一次编写,到处运行” ..专业知识编辑整理..

..WORD完美格式..

的特点:( B )

1. 2. 3. 4.

A. 多线程 B. 与平台无关 C. 面向对象 D. 分布式

19、下列选项中,用于声明实现一个接口关键字是:( B )

1. 2. 3. 4.

A. interface B. implements C. import D. abstract

20、下列不属于Java语言关键字的是( A )

1. 2. 3. 4.

A. repeat B. try C. break D. new

21、下列字符序列中可以作为Java语言标识符的是( D )

1. 2. 3. 4.

A. true B. 123_xyz C. x.y D. _x123

22、下列字符序列中不能作为Java语言标识符的是( C )

1. 2. 3. 4.

A. abc_123 B. 圆周率PI C. false D. _123abc

23、问:阅读下面的Java代码,写出打印语句的输出结果(即类的初始化顺序)。 public class InitialOrderTest { // 静态变量

public static String staticField = \"静态变量\"; // 变量

public String field = \"变量\";

// 静态初始化块 static {

System.out.println(staticField);

..专业知识编辑整理..

..WORD完美格式..

}

System.out.println(\"静态初始化块\"); }

// 初始化块 {

System.out.println(field);

System.out.println(\"初始化块\"); }

// 构造器

public InitialOrderTest() {

System.out.println(\"构造器\"); }

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

答:输出结果是: 静态变量

静态初始化块 变量

初始化块 构造器

24、问:Math.round(11.5)返回多少? Math.round(-11.5)返回多少?

答:Math.round(11.5)返回12,Math.round(-11.5)返回-11。

25、问:下面的Java程序,编译时会报什么错误? import java.io.*; class SuperClass {

public void fun() throws IOException { } }

class SubClass1 extends SuperClass {

public void fun() throws Exception {

System.out.println(\"SubClass::fun()\"); } }

class SubClass2 extends SuperClass {

public void fun() throws FileNotFoundException,ArithmeticException { System.out.println(\"B6::method()\");

throw new ArithmeticException(\"被除数为0\"); } }

答:错误之处:

SubClass1 中的 fun() 无法覆盖 SuperClass 中的 fun();被覆盖的方法不抛出

..专业知识编辑整理..

..WORD完美格式..

java.lang.Exception

public void fun() throws Exception {

26、问:下面的TestStaticMain.java程序能否通过编译?哪条语句会报错? public class TestStaticMain {

public static void main(String[] args) {

Person p = new Person(10, \"wangke\"); p.print(); } class Person {

private int ID; private String name; Person(int ID, String name) { this.ID = ID; this.name = name; } public void print() {

System.out.println(\"ID = \" + ID); System.out.println(\"name = \" + name); } } }

答:不能通过编译。Person p = new Person(10, \"wangke\");这一句会报错:无法从静态上下文中引用非静态变量this。

27、问:阅读下面的Java代码,写出打印语句(1)、(2)、(3)的输出结果,并解释原因。 String str1 = new String(\"wangke\"); String str2 = new String(\"wangke\"); System.out.println(str1 ==

str2); // (1) System.out.println(str1.equals(str2));

..专业知识编辑整理..

..WORD完美格式..

// (2)

System.out.println(str1.hashCode()==str2.hashCode()); // (3)

答:

(1) false。因为==比较的是对象句柄,而对象str1,str2是完全独立的两个对象,它们的句柄是不同的。

(2) true。因为String类的equals()源码实现中重写了Object中的equals()方法:只要两个String对象的字符数组内容相同,就认为两个对象相等。

(3) true。因为String类的hashCode()源码实现中重写了Object类中的hashCode()方法:只要String的字符数组内容相同,hashCode就相同。

28、问:阅读下面的Java GUI Application。在点击“测试”按钮后,控制台的输出信息是什么?

import java.awt.*; import javax.swing.*; import java.awt.event.*;

public class Test {

public static void main(String[] args) { new MyFrame().launchFrame(); } }

class MyFrame extends JFrame { JButton btn = new JButton(\"测试\"); Container ctp = getContentPane();

public void launchFrame() {

setBounds(200,200,250,160); setResizable(false);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ctp.setLayout(new BorderLayout(10,10)); ctp.add(\"North\ btn.addActionListener(new

MyActionListener()); // btn注册监听器1 btn.addActionListener(new

YourActionListener()); // btn注册监听器2 setVisible(true); }

class MyActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { if(e.getSource() == btn) {

System.out.println(\"in MyActionListener\"); } } }

..专业知识编辑整理..

..WORD完美格式..

}

class YourActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { if(e.getSource() == btn) {

System.out.println(\"in YourActionListener\"); } } }

答:控制台输出:

in YourActionListener in MyActionListener

因为点击事件首先被后注册的监听器new YourActionListener()处理,然后再被先注册的new MyActionListener()处理。

29、问:数组有没有length()这个方法? String有没有length()这个方法?

答:

数组没有length()方法,但有length属性。 String有length()方法。

30、问:&与&&的区别是什么?

答:&是位运算符;&&是布尔逻辑运算符。

31、问:有一个程序IO.java,代码如下。发现输入1之后,还没等到输入宽,程序就直接输出了637。为什么? import java.io.*; class IO {

public static void main(String args[]) throws IOException { System.out.println(\"计算矩形面积\"); System.out.print(\"请输入长:\"); int a, b;

a = System.in.read();

System.out.print(\"请输入宽:\"); b = System.in.read();

System.out.println(\"计算矩形面积是:\" + a * b); } }

运行:

C:\emp>java IO 计算矩形面积 请输入长:1

请输入宽:计算矩形面积是:637

答:

因为System.in.read()接收的是字节0-255。

当输入字符1以后,其实返回的是ASCII码,也就是49。然后你又按了个回车,回车的ASCII码是13。

所以,结果相当于 a=49 b=13 49*13=637

..专业知识编辑整理..

..WORD完美格式..

32、问:下面的Java程序,打印结果是什

么? public class Test {

public static void changeStr(String str) { str = \"welcome\"; }

public static void main(String[] args) { String str = \"1234\"; changeStr(str);

System.out.println(str); } }

答:1234

33、问:下面的Java程序,编译时会报什么错误? class SuperClass {

public void fun() { } }

class SubClass extends SuperClass { private void fun() {

System.out.println(\"SubClass::fun()\"); } }

答:错误之处:

SubClass中的fun()无法覆盖 SuperClass 中的 fun();正在尝试指定更低的访问权限;为 public

private void fun() {

34、问:下面的代码是否能输出wangke? try {

System.exit(0); } finally {

System.out.println(\"wangke\"); }

答:不会输出wangke。

在try-catch-finally结构中,

如果执行到try代码段或catch代码段中的return语句,则先运行finally代码段,再运行return语句;

如果执行到try代码段或catch代码段中的System.exit(0)语句,则直接退出程序,即这时finally代码段不会被执行到。

35、问:String s = new String(\"xyz\"); 创建了几个String Object?

答:两个对象。一个是“xyx”,一个是指向“xyx”的引用对象s。

36、问:下面的Test.java程序,有哪两处错误? Class Test {

void f() {

public int i;

..专业知识编辑整理..

..WORD完美格式..

} }

答:

错误1:Class应改为class

错误2:public int i; 应改为int i; // 局部变量不能用权限修饰符、static修饰

37、问:int count = 10; count += ++count; System.out.println(count); 能否通过编译?打印输出是多少?

答:可以通过编译。打印输出21。 int count = 10;

count += ++count; // 相当于count = count + (++count); System.out.println(count); // 输出21

38、问:下面的Test.java程序,输出结果是derive吗? class base {

private void print() { // 注意:private修饰

System.out.println(\"base\"); }

public void doprint() { print(); } }

class derive extends base {

private void print() { // 注意:private修饰

System.out.println(\"derive\"); } }

class Test {

public static void main(String[] args) { base b = new derive();

b.doprint(); } }

答:不是。输出结果是base。

39、阅读下面的程序,写出程序运行的输出结果。 public class Test2 {

public static char method(char ch) { if((ch>='A') && (ch<='Z')) return (char)(ch + 32);

..专业知识编辑整理..

..WORD完美格式..

else return ch; }

public static void main(String[] args) {

String s= \"0123456789ABCDEF\ for (int i=s.length()-1; i>=0; i--) s1 = s1 + method(s.charAt(i)); System.out.println(s1); } }

答:程序运行的输出结果是:fedcba9876543210

40、阅读下面程序,并回答问题。

(1)try块中包含的哪些语句或表达式可能抛出异常?

(2)流DataOutputStream和DataInputStream常被用于何种操作?

(3)假定文件out.txt中原本没有任何数据,这段程序执行完成后,文件out.txt的内容是什么?程序在控制台窗口输出什么?

import java.io.*; public class Test4 {

public static void main(String args[]) { try {

DataOutputStream dout = new DataOutputStream(

new FileOutputStream(\"out.txt\"));

..专业知识编辑整理..

..WORD完美格式..

for (int i = 0; i < 10; i++) dout.writeInt(\"0\" + i);

dout.close();

DataInputStream din = new DataInputStream(

new FileInputStream(\"out.txt\"));

for (int i = 0; i < 10; i++) System.out.print(din.readInt() - \"0\" + \

din.close(); } catch (IOException e) {

System.err.println(\"发生异常:\" + e);

e.printStackTrace(); } } }

答:

问题(1):

new FileOutputStream(“out.txt”) dout.writeInt( ‘0’ + i); dout.close( );

new FileInputStream(“out.txt”) din.readInt( ) din.close( );

问题(2):常被用于读取与存储(读写或输入/输出)基本数据类型的数据。 问题(3):

..专业知识编辑整理..

..WORD完美格式..

文件out.txt的内容是:0 1 2 3 4 5 6 7 8 9

程序在控制台窗口输出:0,1,2,3,4,5,6,7,8,9,

41、Java AWT程序设计:在窗口中画出三个TextField(前两个用于接收用户输入的两个整数,第三个用于显示相加和),一个加号Label,一个等于号Button. 当按下Button时,将相加之和放到第三个TextField中。注意:不允许使用内部类。

import java.awt.*;

import java.awt.event.*;

public class TFMath {

public static void main(String[] args) { new TFFrame().launchFrame(); } }

class TFFrame extends Frame { TextField num1, num2, num3; public void launchFrame() { num1 = new TextField(10); num2 = new TextField(10); num3 = new TextField(15);

Label lblPlus = new Label(\\\"+\\\"); Button btnEqual = new Button(\\\"=\\\");

btnEqual.addActionListener(new MyMonitor(this)); setLayout(new FlowLayout()); add(num1); add(lblPlus); add(num2);

add(btnEqual); add(num3); pack();

setVisible(true); } }

class MyMonitor implements ActionListener { TFFrame tf = null;

public MyMonitor(TFFrame tf) { this.tf = tf; }

public void actionPerformed(ActionEvent e) { int n1 = Integer.parseInt(tf.num1.getText()); int n2 = Integer.parseInt(tf.num2.getText()); tf.num3.setText(\\\"\\\" + (n1+n2)); } }

..专业知识编辑整理..

..WORD完美格式..

42、阅读下面的程序,写出输出结果。 public class MyException {

public static void throwException() {

System.out.println(\"产生并抛出ArithmeticException类型的异常\"); throw new ArithmeticException(); }

public static void catchArrayException() { try {

throwException();

System.out.println(\"在try语句块中的多余语句\"); } catch(ArrayIndexOutOfBoundsException e) {

System.err.println(\"方法catchArrayException捕捉到异常\");

} finally {

System.out.println(\"方法catchArrayException的finally语句块\");

}

System.out.println(\"方法catchArrayException运行结束\"); }

public static void main(String[] args) { try {

catchArrayException(); } catch(ArithmeticException e) {

System.err.println(\"方法main捕捉到异常\"); } finally {

System.out.println(\"方法main的finally语句块\"); }

System.out.println(\"异常处理结束\"); } }

答:输出为

产生并抛出ArithmeticException类型的异常 方法catchArrayException的finally语句块 方法main捕捉到异常

方法main的finally语句块 异常处理结束

43、问:下面语句中的错误都是在Java数据类型转换中的易错点。分析语句的错误原因并改正。

(1) float f1 = 0.1;

(2) long l1 = 12345678, l2 = 8888888888; (3) byte b1 = 1, b2 = 2, b3 = 129; (4) byte b = b1 - b2; (5)

int i = 1;

..专业知识编辑整理..

..WORD完美格式..

i = i * 0.1; // 有错 (6)

char c1 = 'a', c2 = 125;

char c = c1 + c2 - 1; // 有错 (7)

float f1 = 0.1f, f2 = 123;

float f3 = f1+f2*0.1; // 有错

答:

(1) float f1 = 0.1;

错误原因:0.1缺省为double类型

改正办法:float f1 = (float)0.1; 或改为 float f1=0.1f;

(2) long l1 = 12345678, l2 = 8888888888;

错误原因:8888888888已经超出缺省int型的最大表示范围,必须加字母L。 改正办法:long l1 = 12345678, l2 = 8888888888L;

(3) byte b1 = 1, b2 = 2, b3 = 129; 错误原因:129在自动转换中超出范围

改正办法:byte b1 = 1, b2 = 2, b3 = 127;

(4) byte b = b1 - b2;

错误原因:b1、b2在作运算前首先转换为int型,因此减法结果就是int型,不能直接赋值给byte型的b来保存,需要强制类型转换 改正办法:byte b = (byte)(b1-b2);

(5)

int i = 1; i = i*0.1;

错误原因:0.1是double型,i在乘法前会自动转换为double型,乘法结果也是double型,不能直接赋值为int型的i来保存,需要强制类型转换 改正办法:i = (int)(i*0.1);

(6)

char c1='a', c2=125; char c = c1 + c2 - 1;

错误原因:c1、c2在作运算前首先转换为int型,因此计算结果就是int型,不能直接赋值给char型的c来保存,需要强制类型转换

改正办法:char c = (char)(c1 + c2 - 1);

(7)

float f1 = 0.1f, f2 = 123; float f3 = f1+f2*0.1;

错误原因:由于0.1是double型,在运算前首先全部要转换为double型,因此计算结果就是double型,不能直接赋值给float型的f4来保存,需要强制类型转换 改正办法:float f4 = (float)(f1+f2*0.1);

..专业知识编辑整理..

..WORD完美格式..

44、阅读下面的程序,写出输出结果。 class Parent { // 静态变量

public static String p_StaticField = \"父类--静态变量\"; // 变量

public String p_Field = \"父类--变量\";

// 静态初始化块 static {

System.out.println(p_StaticField); System.out.println(\"父类--静态初始化块\"); }

// 初始化块 {

System.out.println(p_Field);

System.out.println(\"父类--初始化块\"); }

// 构造器

public Parent() {

System.out.println(\"父类--构造器\"); } }

..专业知识编辑整理..

..WORD完美格式..

public class SubClass extends Parent { // 静态变量

public static String s_StaticField = \"子类--静态变量\"; // 变量

public String s_Field = \"子类--变量\"; // 静态初始化块 static {

System.out.println(s_StaticField); System.out.println(\"子类--静态初始化块\"); }

// 初始化块 {

System.out.println(s_Field);

System.out.println(\"子类--初始化块\"); }

// 构造器

public SubClass() {

System.out.println(\"子类--构造器\"); }

// 程序入口

public static void main(String[] args) {

..专业知识编辑整理..

..WORD完美格式..

new SubClass(); } }

答:1、父类--静态变量 2、父类--静态初始化块 3、子类--静态变量 4、子类--静态初始化块 5、父类--变量 6、父类--初始化块 7、父类--构造器 8、子类--变量 9、子类--初始化块 10、子类--构造器

45、请按下面的要求编写程序。

(1)定义一个接口Shapes,它至少包含一个可以计算面积的成员方法。 (2)编写实现该Shapes接口的两个类:正方形类和圆形类。

(3)编写一个具有泛型特点的类Map,要求该类可以在控制台窗口输出某种图形的面积,而且这个类的类型变量所对应的实际类型就是(2)编写的正方形类和圆形类。 (4)利用具有泛型特点的类Map在控制台窗口分别输出给定边长的正方形的面积和给定半径的圆的面积。

// 定义接口

interface Shapes {

abstract double getArea(); }<\\/P>

// 定义Square类

class Square implements Shapes { public double edge;

public Square(double edge) { this.edge = edge; }

public double getArea() {

..专业知识编辑整理..

..WORD完美格式..

return (edge * edge); } }<\\/P>

// 定义Circle类

class Circle implements Shapes { public double radius; public Circle(double radius) { this.radius = radius; }

public double getArea() {

return (radius * radius * Math.PI); } }<\\/P>

class Map { // 使用泛型T,T应当是Shapes的子类 T t;<\\/P>

public Map(T t) { this.t = t; }

public double getArea() { return t.getArea(); } }<\\/P>

// 测试程序 class Test {

public static void main(String[] args) {

Map m1 = new Map(new Square(15.0));

System.out.println(\\\"正方形的面积是: \\\" + m1.getArea());<\\/P> Map m2 = new Map(new Circle(15.0));

System.out.println(\\\"圆形的面积是: \\\" + m2.getArea()); } }

46、

阅读下面程序,写出程序的输出结果。 class SuperClass { int data;

SuperClass() {

..专业知识编辑整理..

..WORD完美格式..

System.out.println(\"SuperClass::constructor: data=\" + data); add(1);

System.out.println(\"SuperClass::constructor: data=\" + data); }

public void add(int i) { data += i; }

public void print() {

System.out.println(data); } }

class SubClass extends SuperClass { SubClass() {

System.out.println(\"SubClass::constructor: data=\" + data); add(2);

System.out.println(\"SubClass::constructor: data=\" + data); }

public void add(int i) { data += i*2; } }

..专业知识编辑整理..

..WORD完美格式..

class Test {

public static void method(SuperClass a) { a.add(6); a.print(); }

public static void main(String[] args) { method(new SubClass()); } }

SuperClass::constructor: data=0 SuperClass::constructor: data=2 SubClass::constructor: data=2 SubClass::constructor: data=6 18

47、编写一个简单的乘法器,界面如下图所示,在第一个文本框中输入第一个乘数;在第二个文本框中输入第二个乘数;当单击“=”按钮时,在第三个文本框中输出其乘积。

// import语句

import javax.swing.*; import java.awt.*;

import java.awt.event.*;<\\/P>

public class Multiply extends JFrame implements ActionListener{ // 组件声明及创建

private JButton operator = new JButton(\\\" * \\\"); private JTextField input1 = new JTextField(5); private JTextField input2 = new JTextField(5); private JButton equal = new JButton(\\\" = \\\"); private JTextField result = new JTextField(5);

// 添加组件

public Multiply () {

Container c = getContentPane();

..专业知识编辑整理..

..WORD完美格式..

c.setLayout(new FlowLayout()); c.add(input1); c.add(operator); c.add(input2); c.add(equal); c.add(result);

equal.addActionListener(this); } <\\/P>

// 处理按钮动作事件

public void actionPerformed(ActionEvent e) {

double operand1 = Double.valueOf(input1.getText()).doubleValue(); double operand2 = Double.valueOf(input2.getText()).doubleValue(); result.setText(String.valueOf(operand1*operand2)); } <\\/P>

// 设置框架属性

public static void main(String args[ ]) { Multiply f = new Multiply();

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(320, 80); f.setVisible(true); }

}

48、请设计一个软件包。要求该软件包至少拥有正方形类、圆类。要求每个类都具有构造方法、计算该图形的周长的成员方法和计算该图形的面积的成员方法。然后编写一个测试程序,分别创建这些类的实例对象,并输出这些实例对象的周长和面积。在创建这些实例对象时,构造方法的调用参数值分别是:

正方形:左上定点的坐标为(5,10),边长为15。

圆形:圆心的坐标为(0,0),圆心为15。

interface Shapes { abstract double getArea();

abstract double getPerimeter(); }

// 定义接口

class Square implements Shapes { // 定义Square类 public int x, y;

public int width, height; public double getArea() {

return (width * height); }

public double getPerimeter() {

return (2 * width + 2 * height); }

..专业知识编辑整理..

..WORD完美格式..

public Square(int x, int y, int width, int height) { this.x = x; this.y = y;

this.width = width; this.height = height; } }

class Circle implements Shapes { // 定义Circle类 public int x, y;

public double radius;

public double getArea() {

return (radius * radius * Math.PI); }

public double getPerimeter() {

return (2 * Math.PI * radius); }

public Circle(int x, int y, double r) { this.x = x; this.y = y;

this.radius = r; } }

public class TestShape

{ // 测试程序 public static void main(String[] args) {

Shapes s1 = new Square(5, 10, 15, 15); Shapes s2 = new Circle(0, 0, 6.0);

System.out.println(\\\"正方形的面积是: \\\" + s1.getArea());

System.out.println(\\\"正方形的周长是: \\\" + s1.getPerimeter());

System.out.println(\\\"圆形的面积是: \\\" + s2.getArea());

System.out.println(\\\"圆形的周长是: \\\" + s2.getPerimeter()); } }

49、编写一个程序,要求随机生成61个学生的成绩(从0到100的整数),在将成绩排序(由高到低)后保存到文件“score.txt”中。

import java.io.DataOutputStream; import java.io.FileOutputStream; import java.io.IOException;<\\/P>

public class TestSort {

public static int MAXSIZE = 61;<\\/P>

..专业知识编辑整理..

..WORD完美格式..

public static void sortInt(int[] arr) { // 采用选择法对一维数组进行排序

for (int i = 0; i < arr.length - 1; i++) { int k = i;

for (int j = i + 1; j < arr.length; j++)

if (arr[j] < arr[k]) k = j; // 用k记录最小值的下标

if (k > i) { // 在外循环中实施交换 arr[i] = arr[i] + arr[k];

arr[k] = arr[i] - arr[k];

arr[i] = arr[i] - arr[k];

} } }<\\/P>

public static void main(String args[]) {

int score[] = new int[MAXSIZE]; try {

for (int i = 0; i < MAXSIZE; i++) score[i] = (int) (Math.random() * 100 + 0.5);

sortInt(score);

DataOutputStream dout = new DataOutputStream(

new FileOutputStream(\\\"score.txt\\\"));

for (int i = 0; i < MAXSIZE; i++) { dout.writeInt(score[i]);

System.out.println(score[i]);

}<\\/P> e);

dout.close();

// 结果保存到文件 } catch (IOException e) {

System.err.println(\\\"发生异常:\\\" +

e.printStackTrace(); }

// try-catch结构处理异常

..专业知识编辑整理..

..WORD完美格式..

} }

50、

阅读下面程序,并回答问题。

(1)Java程序分为哪两种类型,这段程序是哪一类Java程序? (2)这个图形用户界面上包含那几类组件?点击按钮后程序显示什么?

(3)ActionListener是什么?程序中哪个方法是ActionListener中的方法?其功能是什么?

import javax.swing.*;

import java.awt.*; import java.awt.event.*;

public class Test4 extends JApplet implements ActionListener{ private Container cp = getContentPane();; private JLabel prompt = new JLabel(\"请点击按钮\");

private JButton start = new JButton(\"开始\"); private JTextField output = new JTextField(20); public void init( ){

cp.setLayout(new FlowLayout()); cp.add(start); cp.add(prompt); cp.add(output);

output.setEditable(false); start.addActionListener(this);

..专业知识编辑整理..

..WORD完美格式..

}

public void actionPerformed(ActionEvent e){

if ((JButton)e.getSource( ) == start ) output.setText(\"好好学习,天天向上\"); } }

问题(1):Java程序分为Java应用程序(或Java application)和Java小应用程序(或Java applet);这段程序是Java小应用程序。

问题(2):界面上包含一个标签(JLabel),一个按钮(JButton)和一个文本框(JTextField);点击按钮后,文本框内显示“好好学习,天天向上”。

问题(3):ActionListener是动作事件监听器接口;方法actionPerformed()是ActionListener中的方法;其功能是处理applet界面里发生的动作事件。

51、阅读下面程序,并回答问题。

(1)类Test3和类SuperTest之间是什么关系? (2)关键字super和this分别是什么含义? (3)这段程序的输出是什么? class SuperTest {

public int age;

public SuperTest(String s) {

System.out.println(\"Hi, I am \" + s); age = 35; } }

public class Test3 extends SuperTest { public int age;

..专业知识编辑整理..

..WORD完美格式..

public Test3(String s) { super(s);

System.out.println(\"Nice to meet you!\"); age = 7; }

public void print() {

System.out.println(\"Age is \" + age);

System.out.println(\"My age is \" + this.age); System.out.println(\"My parent\"s age is \" + super.age); }

public static void main(String args[]) { Test3 test = new Test3(\"Olive\"); test.print(); } }

问题(1):Test3是SuperTest的子类(或SuperTest是Test3的父类,或继承关系)。 问题(2):super指对象的父类(或超类);this指使用它的对象本身(或对对象自己的引用)。

问题(3):程序的输出是: Hi, I am Olive Nice to meet you! Age is 7 My age is 7

My parent\"s age is 35

52、程序设计:在命令行中以树状结构展现给定的文件夹及其子文件(夹)中的文件。测试文件夹为C:Windows,层次用缩进4个空格表示。

答:

import java.io.*;

public class FileList {

..专业知识编辑整理..

..WORD完美格式..

public static void main(String[] args) {

File f = new File(\"C:\" + File.separator + \"Windows\"); listFiles(f,0); }

static void listFiles(File f, int level) { String preStr = \"\";

for(int i=0; iSystem.out.println(preStr + f.getName()); // 先序遍历

File[] files = f.listFiles(); // 取出所有儿子节点 for (int i=0; iSystem.out.println(preStr + \" \" + files[i].getName()); }

if (files[i].isDirectory()) {

listFiles(files[i], level + 1); }

53、写出下面程序的执行结果。 public class Intern {

public static void main(String[] args) {

String s1 = \"123456\"; // 字符串直接量 String s2 = \"123456\"; // 字符串直接量 String s3 = \"123\" + \"456\"; String a0 = \"123\";

String s4 = a0 + \"456\"; // 这不是字符串直接量

String s5 = new String(\"123456\"); // 这不是字符串直接量 String s6 = s5.intern( );

System.out.println(\"s2\" + ((s2==s1) ? \"==\" : \"!=\") +\"s1\"); System.out.println(\"s3\" + ((s3==s1) ? \"==\" : \"!=\") +\"s1\"); System.out.println(\"s4\" + ((s4==s1) ? \"==\" : \"!=\") +\"s1\"); System.out.println(\"s5\" + ((s5==s1) ? \"==\" : \"!=\") +\"s1\"); System.out.println(\"s6\" + ((s6==s1) ? \"==\" : \"!=\") +\"s1\"); } }

答:输出为 s2==s1 s3==s1 s4==s1 s5==s1 s6==s1

54、问:下面程序的执行结果是什么? class Test {

..专业知识编辑整理..

..WORD完美格式..

}

public static void main(String[] args) { int sum = 0; outer:

for(int i=1; i<10; i++) { inner:

for(int j=1; j<3; j++) { sum += j;

if (i+j > 6)

continue inner; } }

System.out.println(\"sum=\" + sum); }

答:sum=27

55、下面程序的执行结果是什么? class SuperClass { void method() {

System.out.println(\"SuperClass::method\"); }

void fun() {

System.out.println(\"SuperClass::fun\"); this.method(); } }

class SubClass extends SuperClass { void method() {

System.out.println(\"SubClass::method: Begin\"); super.fun();

System.out.println(\"SubClass::method: End\"); } }

class Test {

public static void main(String[] args) { SubClass a = new SubClass(); a.method(); } }

答:会陷入死循环,直到栈溢出报错! SubClass::method: Begin SuperClass::fun

56、下面的程序错在哪里?如何修改? class SuperClass {

..专业知识编辑整理..

..WORD完美格式..

}

class SubClass extends SuperClass { }

class Test {

public static void main(String[] args) { SuperClass a = new SuperClass(); SubClass b = new SubClass(); b = (SubClass)a; } }

答:b = (SubClass)a;这一句无法通过编译。报错信息为:

Exception in thread \"main\" java.lang.ClassCastException: SuperClass cannot be cast to SubClass

原因在于向下转型(downcasting)是有前提的。

改正:将SuperClass a = new SuperClass();改为SuperClass a = new SubClass();就可以了。

57、下列语句序列给出了k,myArr和myMethod()的声明。当调用方法myMethod(myArr, k)之后,存储在myArr和k里的值分别是什么? int k = 7;

String myArr[] = {“love”,“peace”,”and”}; void myMethod(String a[], int m) { String temp = a[1]; a[1] = a[2]; a[2] = temp; m = a[2].length(); }

答:

myArr中的值是{“love”,“and”,”peace”} k的值是7

58、阅读下面程序,并回答问题。

..专业知识编辑整理..

..WORD完美格式..

(1)类Child和类Parent之间是什么关系? (2)关键字super和this分别是什么含义? (3)这段程序的输出是什么? class Parent{

public void printMe( ){

System.out.println(\"parent\"); } }

class Child extends Parent{

public void printMe( ){

System.out.println(\"child\"); }

public void printAll( ){ super.printMe( ); this.printMe( );; } }

public class Test3{

public static void main(String args[ ]){ Child myC = new Child( ); myC.printAll( ); } }

..专业知识编辑整理..

..WORD完美格式..

问题(1):Child是Parent的子类(或Parent是Child的父类,或继承关系)。

问题(2):super指对象的父类(或超类);this指使用它的对象本身(或对对象自己的引用)。

问题(3):程序的输出是: parent child

59、阅读下面的程序,写出程序运行的输出结果。 public class Test1 {

public int method(int n) { int result = 1;

for (int i=1; i<=n; i++) { result *= i; }

return result; }

public static void main(String args[]{ Test1 test = new Test1( ); int sum[] = new int[6]; for (int i=1; i<=5; i++) {

sum[i] = test.method(i) ; System.out.print(sum[i] + \" \"); } } }

答:程序运行的输出结果是:1 2 6 24 120

60、写一个Java Application。让用户在文本框中输入一个字符串,程序会将其中的大写字母变为小写字母,小写字母为变大写字母(其余字符不变),并按照逆序将它们显示在一个文本域中。(例如:用户输入“abc123XYZ”,点击按钮或按下回车,程序会输出“zyx321CBA”)

..专业知识编辑整理..

..WORD完美格式..

// import语句

import javax.swing.*; import java.awt.*;

import java.awt.event.*;

public class StringConvert extends JFrame implements ActionListener{ // 组件声明及创建

private JTextField input = new JTextField(15);

private JButton convert = new JButton(\" 大<->小 + 逆序 \"); private JTextField display = new JTextField(15);

// 添加组件

public StringConvert () {

Container c = getContentPane(); c.setLayout(new FlowLayout()); c.add(input); c.add(convert);

c.add(display);

convert.addActionListener(this); }

// 处理按钮动作事件

public void actionPerformed(ActionEvent e) {

display.setText(convert(input.getText()) + \"\\n\"); }

// 实现逆序

public String convert(String str) {

StringBuffer resultStr = new StringBuffer(); char ch;

for (int i = str.length() - 1; i >= 0; i--) { ch = str.charAt(i);

if ((ch >= 'A') && (ch <= 'Z'))

resultStr.append((char) (ch + 32)); // 实现大写字母变小写字母

else if ((ch >= 'a') && (ch <= 'z'))

resultStr.append((char) (ch - 32)); // 实现小写字母变大写字母 else

resultStr.append(ch); }

return resultStr.toString(); }

// 设置框架属性

public static void main(String args[]) {

..专业知识编辑整理..

..WORD完美格式..

}

}

StringConvert f = new StringConvert();

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(640, 160); f.setVisible(true);

..专业知识编辑整理..

因篇幅问题不能全部显示,请点此查看更多更全内容