试题练习:
阅读下面程序:
public class Cycle {
public static void main(String args[]) {
System.out.println(args[0]);
}
}
在命令行中输入java Cycle one two,该程序输出结果是___。
A.Cycle B.one C.two D.上述A、B、C均不对
下列关键字中可以表示常量的是___。
A.final B.default C.private D.transient
在Java Applet程序用户自定义的Applet子类中,常常重载___方法在Applet的界面中显示文字、图形和其它界面元素。
A.start() B.stop() C.init() D. paint() StringBuffer类字符串对象的长度是___。
A.固定B.必须小于16个字符C.可变D.必须大于16个字符
下列语句中哪个是正确的语句___。
A.RandomAccessFile raf = new RandomAccessFile("","rw");
B.RandomAccessFile raf = new RandomAccessFile(new DataInputStream());
C.RandomAccessFile raf = new RandomAccessFile(new File(""));
D.RandomAccessFile raf = new RandomAccessFile("");
如果在子类中使用被子类隐藏的父类的成员变量或方法,应使用关键字___。
A.this B.class C.super D.super class MouseEvent对应的是___。
A.键盘事件B.窗口事件C.按钮事件D.鼠标事件
运行下列程序,会产生什么结果是___。
public class X extends Thread implements Runnable {
public void run() {
static修饰的变量System.out.println("this is run()");
}
public static void main(String args[]) {
Thread t=new Thread(new X());
t.start();
}
}
A.第一行会产生编译错误B.第六行会产生编译错误
C.第六行会产生运行错误D.程序会运行和启动
12.在编写Java Application程序时,若需要使用标准输入输出语句,必须在程序
的开头写上___语句。
A.import java.awt.* ; B.import java.applet.Applet;
C.import java.io.* ; D.import java.awt.Graphics;
TextField t = new TextField("they are good",40);是关于一个使用适当的字符间距的字体的TextField 的表达式,___叙述是对的?
A.被显示的字符串可以使用多种字体
B.一行中最大的字符数是40
C.显示的宽度正好是40 个字符宽
D.用户可以编辑字符
有关线程的叙述___是对的。
A.一旦一个线程被创建,它就立即开始运行。
B.使用start()方法可以使一个线程成为可运行的,并且会立即开始运行。
C.当一个线程因为抢先机制而停止运行,它被放在可运行队列的前面。
D.一个线程可能因为不同的原因停止(cease)并进入就绪状态。
下列哪个选项是创建一个标识有“打开”按钮的语句。
A.TextField network11 = new TextField("打开");
B.TextArea network11 = new TextArea("打开");
C.Checkbox network11 = new Checkbox("打开");
D.Button network11 = new Button("打开");
关于垃圾收集的叙述___是对的。
A.程序开发者必须自己创建一个线程进行内存释放的工作。
B.垃圾收集将检查并释放不再使用的内存。
C.垃圾收集允许程序开发者明确指定并立即释放该内存。
D.垃圾收集能够在期望的时间释放被java 对象使用的内存。
以下___类不可以作为FileInputStream 类的构造方法的参数。
A.InputStream
B.File
C.FileDescriptor
D.String
二、填空
一个Java源程序是由若干个语句组成的。
Java中类成员的访问控制符有:private、public、_protected__、缺省,其中_public__是类成员的缺省访问控制符。
Java中的_String__类用于处理字符串常量,而_StringBuffer__类用于处理字符串变量。
线程的创建方式有两种,一种是扩展__Thread_类,一种是实现Runnable___类。
在java中,__this_代表了当前对象的引用,_super__代表了当前对象的父类对象的引用。
在运行java程序时,由java解释器自动引入,而不用import语句引入的包是
_java.lang__。
三、
1.垃圾收集机制
答:java的堆是一个运行时数据区,类的实例(对象)从中分配空间。Java虚拟机(JVM)的堆中储存着正在运行的应用程序所建立的所有对象,这些对象通过new、newarray、anewarray和multianewarray等指令建立,但是它们不需要程序代码来显式地释放。一般来说,堆的是由垃圾回收来负责的,尽管java规范并不要求特殊的垃圾回收技术,甚至根本就不需要垃圾回收,但是由于内存的有限性,java在实现的时候都有一个由垃圾回收所管理的堆。垃圾回收是一种动态存储管理技术,它自动地释放不再被程序引用的对象,按照特定的垃圾收集算法来实现资源自动回收的功能。
垃圾回收可以简单的理解为:虚拟机自动回收你曾经声明过,但不使用了的那些变量。一般来说垃圾回收是不需要人工干预的,虚拟机会自动的操作这个过程。有的时候可以通过gc对象来手工通知虚拟机来回收垃圾。但并不能保证垃圾回收器会立马回收内存。
2.抽象类与接口
(1)、抽象类里面可以有非抽象方法
但接口里只能有抽象方法
声明方法的存在而不去实现它的类被叫做抽像类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽像类,并让它指向具体子类的一个实例。不能有抽像构造函数或抽像静态方法。
Abstract 类的子类为它们父类中的所有抽像方法提供实现,否则它们也是抽像类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
(2)接口(interface)是抽像类的变体。在接口中,所有方法都是抽像的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽像的,没有一个有程序体。接口只可以定义static final成员变
量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对像上调用接口的方法。由于
有抽像类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口
答:包含一个抽象方法的类是抽象类,只包含抽象方法和全局常量的类称为接口。3.String中的方法
答:从一个byte数组里,从第offset位置开始取,取length长度,按照规定的Charset 字符编码集来获取byte里的数据简单示例:public static void main(String[] args) { byte[] a = {'a','b','c','d','e','f','g','h','i'}; String aa = new String(a,5,3,Charset.defaultCharset()); String bb = new String(a,5,3,Charset.forName("US-ASCII")); System.out.println(aa);
System.out.println(bb); }当然,如果byte数组内存放的用中文字符或者其他字符,测试起来更有意义~
4.Applet与application的异同
答:1、application是个完整的j编译程序,而applet是半编译半执行的,他要通过html的web页面执行,一般叫做小应用程序,主要是web页面的特效。
2、程序的结构不同,application执行有main()方法,而applet没有main()方法。
3、application可读可写,而applet不能读不能写
5.抽象类与接口的区别
答:接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的,
另外,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。
还有,接口可以实现多重继承,而一个类只能继承一个超类,但可以通过继承多个接口实现多重继承,接口还有标识(里面没有任何方法,如Remote接口)和数据共享(里面的变量全是常量)的作用.
6.堆与栈的区别
答:第一,从软件设计的角度看,栈代表了处理逻辑,而堆代表了数据。这样分开,使得处理逻辑更为清晰。分而治之的思想。这种隔离、模块化的思想在软件设计的方方面面都有体现。
第二,堆与栈的分离,使得堆中的内容可以被多个栈共享(也可以理解为多个线程访问同一个对象)。这种共享的收益是很多的。一方面这种共享提供了一种有效的数据交互方式(如:共享内存),另一方面,堆
中的共享常量和缓存可以被所有栈访问,节省了空间。
第三,栈因为运行时的需要,比如保存系统运行的上下文,需要进行地址段的划分。由于栈只能向上增长,因此就会限制住栈存储内容的能力。而堆不同,堆中的对象是可以根据需要动态增长的,因此栈和堆的拆分,使得动态增长成为可能,相应栈中只需记录堆中的一个地址即可。
第四,面向对象就是堆和栈的完美结合。其实,面向对象方式的程序与以前结构化的程序在执行上没有任何区别。但是,面向对象的引入,使得对待问题的思考方式发生了改变,而更接近于自然方式的思考。
当我们把对象拆开,你会发现,对象的属性其实就是数据,存放在堆中;而对象的行为(方法),就是运行逻辑,放在栈中。我们在编写对象的时候,其实即编写了数据结构,也编写的处理数据的逻辑。不得不承认,面向对象的设计,确实很美。
7.重写与重载
答:方法重载是指一个类里面可以有多个方法,而且方法名称相同,但是方法的参数类型或者参数个数不同,功能也可以不同。
成员覆写是指子类继承父类后,可以覆盖掉父类的方法和属性。子类的方法和属性名称类型与父类的一样,就覆盖掉父类的属性和方法。
重载只能是方法,在同一个类中。
覆写是子类与父类之间,属性与方法都可以覆写。
其实重写就是重载,而令一个是覆写。
8.static 与final
答:static是静态修饰关键字,可以修饰变量和程序块以及类方法:当你定义一个static的变量的时候jvm会将将其分配在内存堆上,所有程序对它的引用都会指向这一个地址而不会重新分配内存;修饰一个程序块的时候(也就是直接将代码写在static{...}中)时候,虚拟机就会优先加载静态块中代码,这主要用于系统初始化;当修饰一个类方法时候你就可以直接通过类来调用而不需要新建对象。
final可以修饰变量、方法及类,当你定义一个final变量时,jvm会将其分配到常量池中,程序不可改变其值;当你定义一个方法时,改方法在子类中将不能被重写;当你修饰一个类时,该类不能被继承。
9.异常定义、
答:Java程序在执行过程中如出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程称为抛出(throw)异常。
10.Java中的异常处理机制的简单原理和应用。
答:当JA V A程序违反了JA V A的语义规则时,JA V A虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JA V A类库内臵的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException.另一种
情况就是JA V A允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。
以下程序的运行结果是:_1518__。
public class TestPrivate {
int a, b;
private void fun() {
a=100; b=200;
}
public static void main(String args[]) {
int a=15, b=18;
TestPrivate x=new TestPrivate ();
x.fun();
System.out.println(" "+a+b);
}
}
以下程序的运行结果是:true s1==s2___。
class StringTest1 {
public static void main(String[] args) {
String s1="hello";
String s2= "hello";
if(s1==s2)
System.out.println("true");
if(s1.equals(s2))
else
System.out.println("s1!=s2");
}
}
四.九九乘法表素数(判断一个数是否是素数,1000-1500所有素数)闰年(2000到3000年)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论