String string = s;
我们是声明了另外一个只能指向String对象的引用,名为string,并没有第二个对象产生,string还是指向原来那个对象,也就是,和s指向同一个对象。 问题二:\和equals方法究竟有什么区别?
==操作符专门用来比较变量的值是否相等。比较好理解的一点是:
int a=10; int b=10;
则a==b将是true。 但不好理解的地方是:
String a=new String(\ String b=new String(\ 则a==b将返回false。
根据前一帖说过,对象变量其实是一个引用,它们的值是指向对象所在的内存地址,而不是对象本身。a和b都使用了new操作符,意味着将在内存中产生两个内容为\的字符串,既然是“两个”,它们自然位于不同的内存地址。a和b的值其实是两个不同的内存地址的值,所以使用\操作符,结果会是false。诚然,a和b所指的对象,它们的内容都是\,应该是“相等”,但是==操作符并不涉及到对象内容的比较。 对象内容的比较,正是equals方法做的事。 所以当你是用equals方法判断对象的内容是否相等,请不要想当然。因为可能你认为相等,而这个类的作者不这样认为,而类的equals方法的实现是由他掌握的。如果你需要使用equals方法,或者使用任何基于散列码的集合(HashSet,HashMap,HashTable),请察看一下java doc以确认这个类的equals逻辑是如何实现的。 问题三:String到底变了没有?
没有。因为String被设计成不可变(immutable)类,所以它的所有对象都是不可变对象。请看下列代码:
String s = \ s = s + \
s所指向的对象是否改变了呢?从本系列第一篇的结论很容易导出这个结论。我们来看看发生了什么事情。在这段代码中,s原先指向一个String对象,内容是\,然后我们对s进行了+操作,那么s所指向的那个对象是否发生了改变呢?答案是没有。这时,s不指向原来那个对象了,而指向了另一个String对象,内容为\,原来那个对象还存在于内存之中,只是s这个引用变量不再指向它了。 通过上面的说明,我们很容易导出另一个结论,如果经常对字符串进行各种各样的修改,或者说,不可预见的修改,那么使用String来代表字符串的话会引起很大的内存开销。因为String对象建立之后不能再改变,所以对于每一个不同的字符串,都需要一个String对象来表示。这时,应该考虑使用StringBuffer类,它允许修改,而不是每个不同的字符串都要生成一个新的对象。并且,这两种类的对象转换十分容易。
23) 在Java语言中,按“东,西,南,北,中”指定组件的位置的布局管理器是()。(选
择一项)
a) FlowLayout b) GridLayout c) BorderLayout d) CardLayout e) GridBagLayout
26
【解析】C Java中的布局方式:
BorderLayout 边界布局方式 :使用“东”、“西”、“南“、“北”、
“居中”来指定组件的位置
FlowLayout 流式(顺序)布局:按照从左到右由上到下的方式排列组件。 GridLayout 网格布局。把组件按照网格来放置。
CardLayout 卡片布局。 对象是容器的布局管理器。它将容器中的每个组件当作一个卡片来处理。在某 一时间,只有一个卡片是可见的,容器象一个卡片堆栈一样工作。 ... CardLayout 定义了 一系列方法,来允许一个应用顺序地翻动这些卡片,或显示一个指定的卡片。是最灵活的布局方案。
24) 在Java中允许创建多线程应用程序的接口是()。(选择一项)
a) Threadable b) Runnable c) Clonable d) 以上均不是 【解析】A
25) 在Java语言中,把组件放在BorderLayout的()区域时,它会自动垂直调整大小,但
不是水平调整。(选择一项) a) North或South b) East或West c) Center
d) North,South或Center 【解析】A
在BorderLayout布局方式时,当把组件放在North或South区域时,会自动
水平调整组件的大小。相反当在East或West方位时,会自动垂直调整组件的大小。当在Center方位时,垂直和水平方位都会自动调整。
26) 在JAVA编程中,以下()命令能够将Java源文件转换为类文件。(选择一项)
a) appletviewer b) java c) javac
d) 以上所有选项都不正确
【解析】C, Javac是用来编译java的源文件的命令。产生类文件,也就是字节文件。
Java执行经过编译后产生的类文件。
Appletviewer是用来查看java Applet程序的工具。
27) 在JAVA编程中,Java具有下列()特点。(选择三项)
a) 面向对象 b) 跨平台 c) 安全
d) 集中式体系结构 e) 可编译成机器代码
【解析】 A B C JAVA语言是完全面向对象的、能够跨平台、高安全性的分
布式体系结构。可以被虚拟机编译为字节码。
28) 在Java中,欲定义某类所在的包外的所有类都能访问这个类,则应用的关键字是()。
(选择一项)
a) Protected B. private C.public
27
【解析】C Public 访问修饰符,该类所在包内和包外的类都可以访问。最开放。
Protected访问修饰符,只有该类所在包内或它的派生类才能访问。
Private访问修饰符 ,只有该类所在包内的类才能访问。
29) 在Java中,根据你的理解,下列方法()可能是类Orange的构造函数。(选择三项)
a) Orange(){?} b) Orange(?){?}
c) Public void Orange(){?} d) Public Orange(){?}
e) Public OrangeConstuctor(){?} 【解析】A B D 构造方法要注意的几个地方:名字与类名一样。可以带参数重
载。不能带返回类型,包括void。
30) 在Java中,下列选项表示字符”a”值的是()。(选择一项)
a) ‘a’ B.“a” C.new Character(a) D.\\000a 【解析】A 字符应用单引号表示 ?a?;
new Character(a)表示创建一个字符对象a
\\000a 用ASCII表示应为 \\097
31) 在Java中,可以使线程运行的方法是()。(选择一项)
a) init(); B.start(); C.resume(); D.sleep(); 【解析】B
32) 在JAVA语言中,下面是main()方法的部分代码:
Frame f=new Frame(“My Frame”); f.setSize(100,100);
为在屏幕显示f,应增加的代码是()。(选择一项) a) f.appear();
b) f.setForeground(); c) f.setVisible(); d) f.enable();
【解析】C 框架Frame是一个顶层容器。在创建后,要在屏幕上显示只需将
其设为可见。故选C。调用setVisible方法。
A项错误,没有该方法 B项设置该窗体的前景色。D项使该窗体为可用。
33) JAVA中,对于drawImage(image,x,y,width,height,this)方法解释正确的是()。(选
择两项)
a) image是要绘制的图像 B.x,y是表示图像的中心的位置 C.width是源图像的宽度 D.this是容器 【解析】 A D
在指定位置并且按指定大小绘制指定的 Image。x,y是表示要画图像的位置坐标。 34) JAVA中,欲返回按钮的标签,其方法是()。(选择一项)
a) getActionCommand() b) setLabel(string str) c) button() d) getLabel() 【解析】A 欲返回按钮的标签使用getActionCommand()方法。
28
35) 在JAVA中,假设我们有一个实现ActionListener接口的类,以下方法,()能够为一
个Button类注册这个类。(选择一项) a) addListener()
b) addActionListener() c) addButtonListener() d) setListener() 【解析】B
Swing的事件模型中,组件可以发起(或\射出\事件[译注1]。各种事件都是类。当
有事件发生时,一个或多个\监听器(listener)\会得到通知,并做出反应。这样事件的来 源就同它的处理程序分隔开来了。一般说来,程序员是不会去修改Swing组件的,他们写的都是些事件处理程序,当组件收到事件[译注1]时,会自动调用这些代码,因此Swing的事件模型可称得上是将接口与实现分隔开来的绝好范例了。
事件监听器(event listener)就是一个实现listener接口的对象。所以,程序员要做的就是创建一个listener对象,然后向发起事件的组件注册这个对象。注册的过程就是调用组件的addXXXListener( )方法,这里\表示组件所发起的事件的类型。只要看一眼\方法的名字就能知道组件能处理哪种事件了,所以如果你让它听错了事件,那么编译就根本通不过。到后面你就会看到,JavaBean在决定它能处理哪些事件时,也遵循\的命名规范。
36) 在JAVA语言中,包pack1的类class1 中有成员方法:protected void
method_1(){?},private void method_2(){?},public void method_3(){?.}和void method_4(){?},在包pack2中的类class2 不是class1的子类,你在class2 中可以调用的方法有()。(选择一项) a) method_1 b) method_2 c) method_3 d) method_4
【解析】C 本题可以通过画出包中类的结构来分析:
pack1: class1 : 受保护的method_1 method_4 私有的method_2 公共的method_3();
pack2: class2:
由于class2和class1 之间没有继承关系;故 class2只能调用class1种的public修饰的方法: method_3().
37) JAVA中,使用()修饰符时,一个类能被同一包或不同包中的其他类访问。(选择一项)
a) Private B.protected C.public D.friendly 【解析】C
Public 访问修饰符,该类所在包内和包外的类都可以访问。最开放。
Protected访问修饰符,只有该类所在包内或它的派生类才能访问。 Private访问修饰符 ,只有该类所在包内的类才能访问。 Java中无friendly修饰符。
38) 在JAVA中,类Worker是类Person的子类,Worker的构造方法中有一句“super()“,
该语句()。(选择一项)
a) 调用类Worker中定义的super()方法 B.调用类Person中定义的super()方法 C.调用类Person的构造函数 D.语法错误
29
【解析】C 有些时候经常需要在子类中调用父类的构造方法,此时需用super方法来调用。 39) 在JAVA语言中,下列语言()可以画出一矩形框架,其距左边界为0像素,距上边界
为10像素,宽为30像素,高为40像素。(选择一项) a) Graphics g=new Graphics();
g.drawRect(10,0,30,40); b) Graphics g=new Graphics();
g.drawRect(0,10,30,40); c) Graphics g =new Graphics();
g.drawRect(30,40,10,0) d) Graphics g =new Grphics();
g.drawRect(30,40,0,10);
【解析】B
Graphics类的方法drawRect的语法如下: public void drawRect(int x, int y, int width, int height)
绘制指定矩形的轮廓。矩形的左边和右边分别为 x 和 x + width 。顶部边沿和底部边沿分别为 y 和 y + height 。该矩形是使用图形上下文的当前颜色绘制的。 参数:
x - 将被绘制的矩形的 x 坐标。 y - 将被绘制的矩形的 y 坐标。 width - 将被绘制的矩形的宽度。 height - 将被绘制的矩形的高度 故本题选 B
40) 在JAVA中,类Animal中的方法printA()定义如下:
public void printA(){
int a=10;
int result=10%3;
System.out.println(result); 在类Dog中方法printA()定义如下: public void printA(){
int a=10;
Systme.out.println(a/3); }
Dog类的定义如下:
Class Dog extends Animal{?} 若有语句:
Animal animal=new Dog(); animal.printA(); 则这段代码输出为()。(选择一项) a) 0 B.3.3333 C.2 D.3
【解析】B 本题关键要理解如何使父类的对象调用子类的方法。因为通常都是子类调用父类的方法。
30