java题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二、编写程序题
1、按以下要求编写程序
(1) 创建一个Rectangle类,添加width和height两个成员变量
(2) 在Rectangle中添加两种方法分别计算矩形的周长和面积
(3) 编程利用Rectangle输出一个矩形的周长和面积
public class Rectangle{
double width;
double length;
public Rectangle(){
this.width=width;
this.length=length;
}
public double zhouzhang(){
return (width+length)*2;
}
public double mianji(){
return width*length;
}
public static void main(String[] args){
Rectangle R=new Rectangle();
System.out.println("周长为:"+R.zhouzhang());
System.out.println("面积为:"+R.mianji());
}
}
运行结果:
周长为:0.0
面积为:0.0
2、按以下要求编写程序
(1) 编写Animal接口,接口中声明run() 方法
(2) 定义Bird类和Fish类实现Animal接口
(3) 编写Bird类和Fish类的测试程序,并调用其中的run()方法
3、设计类A和A的派生类B,要求:
1)A有两个数据成员a和b(都为int型);B中继承了A中的a和b,又定义了自己的数据成员c(int型)。
2)为A添加含有两个参数的构造方法,对a和b初始化。
3)为B添加含有一个参数的构造方法,对c初始化。
4)完成主控方法,在主控方法中用B e1=new B
5)创建对象,把a、b、c分别初始化成3、4、5,最后输出它们的和。
三、简答题
1、简述Java中异常处理的机制?
1. try catch(先小后大) finally
2. 声明抛出异常:throws
3. 手动抛出异常:throw
4. 自定义异常
a) extends Exception或者他的子类
2、什么是继承?
通过继承实现代码复用。
Java中所有的类都是通过直接或间接地继承ng.Object类得到的。
继承而得到的类称为子类,被继承的类称为父类。
子类不能继承父类中访问权限为private的成员变量和方法。
子类可以重写父类的方法,及命名与父类同名的成员变量。
但Java不支持多重继承
3、请简述重载和重写的区别?
重写是子类的方法覆盖父类的方法,要求方法名和参数都相同
重载是在同一个类中的两个或两个以上的方法,拥有相同的方法名,但是参数却不相同,方法体也不相同,最常见的重载的例子就是类的构造函数
4、abstract class和interface有什么区别?
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。
不能创建abstract类的实例。
然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。
不能有抽象构造函数或抽象静态方法。
Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。
取而代之,在子类中实现该方法。
知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。
在接口中,所有方法都是抽象的。
多继承性可通过实现这样的接口而获得。
接口中的所有方法都是抽象的,没有一个有程序体。
接口只可以定义static final成员变量。
接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。
当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。
然后,它可以在实现了该接口的类的任何对象上调用接口的方法。
由于有抽象类,它允许使用接口名作为引用变量的类型。
通常的动态联编将生效。
引用可以转换到接口类型或从接口类型转换,instanceof运算符可以用来决定某对象的类是否实现了接口。
5、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类? 为什么?
接口可以继承接口。
抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。
抽象类是可以继承具体类。
抽象类中可以有静态的main方法。
6、启动一个线程是用run()还是start()?
启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。
这并不意味着线程就会立即运行。
run()方法可以产生必须退出的标志来停止一个线程。
7、数组有没有length()这个方法? String有没有length()这个方法?该方法的功能是什么?数组没有length()这个方法,有length的属性。
String有length()这个方法。
8、String是最基本的数据类型吗? String可以被继承吗?
String类是final类型的,因此不可以继承这个类、不能修改这个类
9、面向对象的特征有哪些方面?简述每个特征。
1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。
抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。
抽象包括两个方面,一是过程抽象,二是数据抽象。
2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。
对象的一个新类可以从现有的类中派生,这个过程称为类继承。
新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。
派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
3.封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。
面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
4. 多态性:多态性是指允许不同类的对象对同一消息作出响应。
多态性包括参数化多态性和包含多态性。
多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
10、int 和Integer 有什么区别?
int是JA V A的一个基本类型,而Integer是JA V A的一个类,对应int。
因为在某些地方不可以用int而要用Integer。
而且基本类型运算的速度也要快。
int 是变量的基本类型
Integer 是int的外覆类型
11、String 和StringBuffer的区别?
STRING的长度是不可变的,STRINGBUFFER的长度是可变的。
如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法
使用StringBuffer 主要就是在性能上的考虑。
String 是一种非常常用的数据类型,但由于String 是不可变对象,在进行String 的相关操作的时候会产生许多临时的String 对象。
而StringBuffer 在操作上是在一个缓冲中进行的,性能当然优越得多。
不过,一般做为简单的字符串传递和其它操作,只不要改变字符串内容的操作,用String 效率会高一些。
12、是否可以继承String类?
String类是final类故不可以继承。
13、简述Java多态性的概念,隐藏、覆盖和重载的概念及使用时应注意的问题。
答:多态性:在一个类中可以定义多个同名方法,有静态多态性和动态多态性。
隐藏:子类重新定义了父类中的同名成员变量。
被隐藏的父类成员变量在子类中仍然占有存储空间。
覆盖:子类重新定义了父类的同名成员方法,要求方法名、参数和返回类型都相同。
与隐藏不同,此时子类方法将替换掉同名的父类方法,清除父类方法在子类中占有的空间。
重载:在同一个类中定义多个同名但参数不同的方法,参数不同是指个数、类型或顺序不同。
注意事项:
不能覆盖父类的static方法和final方法。
可以隐藏父类的static方法,即在子类中声明同名static方法。
非Static方法不能隐藏,只能覆盖。
子类必须覆盖父类的abstract方法。
14、简述Java中接口的概念及接口的性质?
答:Java语言规定,类只能实现单继承,但接口可以实现多重继承。
接口中定义的方法都是抽象方法,定义的所有域都是常量。
因此接口可以看作是没有实现的方法和常量的集合。
使用接口主要是解决Java语言不支持多重继承的问题。
性质:①接口不提供代码重用性。
因为接口中的方法都是没有实现的方法,因此所有的方法体都要自己编写。
②接口可以通过多继承进行扩展。
③接口不能升级,即提供给用户的接口不能再改变
15、简述Java中构造方法的概念及特点。
答:构造方法:构造方法是一种特殊的方法,用于初始化对象。
特点:①构造方法与类同名,可以有参数,也可无参数。
②构造方法没有返回值,在方法前也不需要写void。
③创建对象时,系统自动调用构造方法。
④用户在程序中不能直接调用构造方法,只能通过new操作符调用。
⑤一个类可以有多个同名构造方法,但参数必须不同。
所谓参数不同是指:
⑥类中可以不定义构造方法,此时Java提供一个默认的无参数构造方法
16、数组有没有length()这个方法? String有没有length()这个方法?
17、String是最基本的数据类型吗?
18、面向对象的特征有哪些方面?简述每个特征。
19、int 和Integer 有什么区别?
20、String 和StringBuffer的区别?
21、是否可以继承String类?
22、简述Java多态性的概念,隐藏、覆盖和重载的概念及使用时应注意的问题。
23、简述Java中接口的概念及接口的性质?
24、简述Java中构造方法的概念及特点。
25、什么是重载,什么是覆盖,有什么区别和共同点?
override可以翻译为覆盖,从字面就可以知道,它是覆盖了一个方法并且对其重写,以求达到不同的作用。
对我们来说最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法进行了声明,而我们在实现时,就需要实现接口声明的所有方法。
除了这个典型的用法以外,我们在继承中也可能会在子类覆盖父类中的方法。
在覆盖要注意以下的几点:
1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;
2、覆盖的方法的返回值必须和被覆盖的方法的返回一致;
3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;
4、被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。
overload对我们来说可能比较熟悉,可以翻译为重载,它是指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法,然后再调用时,VM就会根据不同的参数
样式,来选择合适的方法执行。
在使用重载要注意以下的几点:
1、在使用重载时只能通过不同的参数样式。
例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是fun(int, float),但是不能为fun(int, int));
2、不能通过访问权限、返回类型、抛出的异常进行重载;
3、方法的异常类型和数目不会对重载造成影响;
4、对于继承来说,如果某一方法在父类中是访问权限是priavte,那么就不能在子类对其进行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果
26、比较接口与抽象类的共同点和不同点.什么情况下应采用接口,什么情况下应采用抽象类
相同点:都不能被直接实例化,都可以通过继承实现其抽象方法。
都是面向抽象编程的技术基础,实现了诸多的设计模式。
不同点:接口支持多继承;抽象类不能实现多继承。
接口只能定义抽象规则;抽象类既可以定义规则,还可能提供已实现的成员。
接口是一组行为规范;抽象类是一个不完全的类,着重族的概念。
接口可以用于支持回调;抽象类不能实现回调,因为继承不支持。
接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法;抽象类可以定义字段、属性、包含有实现的方法。
接口可以作用于值类型和引用类型;抽象类只能作用于引用类型。
例如,Struct就可以继承接口,而不能继承类。
四、判断题
1、Unicode码与ASCII码不同, Unicode码是16位的,而ASCII码是8位的.. (√)
2、Java语言是编译解释型语言(√)
3、Java语言支持类的继承,但不支持类的多重继承(√)
4、在Java语言中,允许一个类继承一个父类的内容,但不允许继承多个父类的内容(√)
5、方法的重载是指子类和父类具有相同的名字、相同的参数表,但返回类型可以不相同。
(×)6、如果在类中未给成员变量赋予初值,,则在系统执行时,不会自动对类中的成员进行初始化.
(×)
7、定义类时,抽象类中的方法必须是空的方法,不能有任何代码. (×)
8、在Java语言中即支持一维数组,也支持多维数组。
(√)
9、Java程序是由若干类定义组成的,类定义包括定义类头和定义类体。
(√)
10、有的类定义时可以不定义构造函数,所以构造函数不是必需的。
(√)
11、抽象类中的抽象方法必需在该类的子类中具体实现。
(×)
12、最终类不能派生子类,最终方法不能被覆盖。
(√)
13、一个Java类可以有多个父类。
(×)
14、一个Java类可以有一个父类,并实现多个接口。
(√)
15、接口是特殊的类,所以接口也可以继承,子接口将继承父接口的所有常量和抽象方法。
(√)16、设String对象s="Hi",则语句System.out.println(s.concat("Yohaoo!"))的输出是Hi,Yohaoo!
(×)
17、在Java中一个类不能同时继承一个类和实现一个接口。
(×)
18、Java中数组的元素可以是简单数据类型的量,也可以是某一类的对象。
(√)
19、构造方法是类的一种特殊方法,它的方法名必须与类名相同。
(√)
20、在一个Java源程序文件中,可以有多个public类。
(×)
21、Java语言含有指针。
(×)
22、Java程序编译之后所生成文件的扩展名为“.java”。
(×)
23、假设有一个Java源程序文件,它只定义了一个具有public属性的类Hello,那么编译该文件的命令是“javac Hello”。
(×)
24、构造方法一般不允许返回任何值,但也不允许标注void。
(√)
25、要启动一个线程需要调用Thread的方法start.在运行完start之后,该线程就处于运行态了。
(×)
26、抽象类可以实例化,但不能被继承;最终类不能实例化,可以被继承。
(×)
27、Java语言是不区分大小写的。
(×)
28、Java程序源文件的扩展名为“.jar”。
(×)
29、以//开始的是多行注释语句。
(×)
30、在Java中一个类只能实现一个接口。
(×)
31、在同一个类中,允许存在具有相同方法名和相同参数列表的方法,只要这些方法的返回类型不相同。
(×)32、对于数组int [][]t={{1,2,3},{4,5,6}};来说,t.length等于3,t[0].length等于3。
(×)//数组名后直接加上length(如arr.length),所指的是有几行(Row);
//指定索引后加上length(如arr[0].length),指的是该行所拥有的元素,也就是列(Column)数目
33、抽象方法不能含有方法体,并且必须在抽象类中。
(×)
34、Math类中的方法round()的功能是返回与参数最近的整数即:四舍五入后取整。
(√)
35、ng包是Java程序自动导入的,因此可以直接用其中的类和接口;位于类继承关系层次结构的根部的类Object就在此包中。
(√)
36、有时候为了避免引起混淆,构造方法名可以不与所属的类名同名。
(×)
37、以/*开始,*/结束的是单行注释。
(×)
38、(×) Java语言没有自动收集无用内存的功能。
39、(√) 当一个文件使用完后,必须调用close()方法关闭。
40、(×) 在定义类时,抽象类中的方法必须是空的方法,不能有任何代码.
41、(√)在Java中,add()方法是向容器组件中添加控件的方法。
42、(√)所有的鼠标事件都由MouseListener监听接口的监听者来处理。
43、( ×)如果p是父类Parent的对象,而c是子类Child的对象,则语句p=c是正确的。
44、(√)Java程序里,创建新的类对象用关键字new,回收无用的类对象使用关键字free。
45、(×)由继承性可知,程序中子类拥有的成员数目一定大于等于父类拥有的成员数目。
46、(√)Applet是一种特殊的Panel,它是Java Applet程序的最外层容器。
47、(×)注释的作用是使程序在执行时在屏幕上显示//之后的内容。
48、(√)在异常处理中,若try中的代码可能产生多种异常则可以对应多个catch语句,若catch中的参数类型有父类子类关系,此时应该将父类放在后面,子类放在前面。
49、(√)Java程序是由若干类定义组成的,类定义包括定义类头和定义类体。
五、填空题
1、如果将类MyClass声明为public,它的文件名称必须是(MyClass.java)才能正常编译。
2、Java程序中的单行注释符是(//),多行注释符是(/* */)。
3、Java中布尔类型的常量有两种,它们是(true)和(false)。
4、Java中用于定义小数的关键字有两个:(float)和(double),后者精度高于前者。
5、Java中用于两个数相等比较的运算符是:(= =),用于不相等比较的运算符是(!=)。
6、在Java中定义一个字符串类型的变量str语句是:(String str),定义一个具有10个元素的整型数组a的语句是:(int[] a=new int [10])。
7、导入mypackage包中的所类的命令是(import mypackage.*;)。
8、当声明一个数组int arr[] = new int[5]; 时,这代表这个数组所保存的变量类型是(int),数组名是(arr),数组的大小为(5),数组元素下标的使用范围是(0-4)。
9、假设x=13,y=4,则表达式x%y != 0的值是(ture),其数据类型是(boolean)。
10、异常处理是由(try)、(catch)和finally块三个关键所组成的程序块。
11下程序段的输出结果是(三角形) int x = 5, y = 6, z = 4; if (x + y > z && x + z > y && z + y > x) System.out.println("三角形"); else System.out.println("不是三角形")
12、下面程序段的执行结果是( 6 5 4 3 2) int a[] = { 2, 3, 4, 5, 6 }; for (int i = a.length - 1; i >= 0; i--) System.out.print(a[i] + "");
13、如果一个java源程序文件中定义有4个类,使用sun公司的JDK编译器javac编译该源程序文件将产生(1)个文件名与类名相同扩展名为(.class)的字节码文件。
14、Java中所有类都是类(object)的子类。
15、被关键字(final)修饰的方法是不能被当前类的子类重新定义的方法
16、线程的5种状态是(新生)(就绪)(运行)(堵塞)(死亡)
17、java语言中(object)是所有类的根。
18、在java语言中,boolean型常量只有true和(false)两个值。
19、标识符是以(数字)、下划线、美元符号作为首字母的字符串序列。
20、下面的语句是声明一个变量并赋值:boolean b1=5!=8;b1的值是(true)。
21、在java程序中,用关键字(final)修饰的常量对象创建后就不能再修改了。
22、数据类型包括简单数据类型和复合数据类型。
复合数据类型又包括类、数组、(字符串)
23、浮点型数据属于实型数据,分为float和(double)两种类型。
24、类变量在类中声明,而不是在类的某个方法中声明,它的作用域是(类).
25、下列程序输出结果为()public class test { public static void main(String args[]) { String s=”I am a string!”; Int n=s.length(); Char c=s.charAt(7); System.out.println(n); System.out.println(c); } }
26、把对象实例化可以生成多个对象,使用(new)运算符为对象分配内存空间。
27、java程序引入接口的概念,是为了弥补只允许类的(单继承)的缺憾。
28、抽象方法只能存在于抽象类中。
抽象方法用关键字(abstract)来修饰。
29、java语言中(object)是所有类的根.
30、在java中有一种叫做(构造方法)特殊方法,在程序中用它来对类成员进行初始化.
31、我们在java程序中,把关键字(super)加到方法名称的前面,来实现子类调用父类的方法
32、定义一个类包括定义类头和定义(类体)两个部分
33、在java程序里,同一类中重载的多个方法具有相同的方法名和(不相同)的参数列表.重载的方法可以有不同的返回值类型
34、java语言通过接口支持(多重)继承,使类继承具有更灵活的扩展性
35、接口是一种只含有抽象方法或(常量)的一种特殊抽象类
36、创建一个类就是创建一个新的数据类型,而类在java中属于(引用)数据类型。
37、abstract方法(不能)(不能或能)与final并列修饰同一个类
38、如果一个类中定义了几个名为method的方法,这些方法的参数都是整数,则这些方法的(参数个数)必须是不同的,这种现象称为方法的重载。
39、线程调用了sleep()方法后,该线程将进入(堵塞)状态。
40、new是(初始化)对象的操作符. 类名对象名;(声明)new 构造方法:创建或初始化
41、捕获异常要求在程序的方法中预先声明,在调用方法时用try-catch-(finally)语句捕获并处理。
42、String类和StringBuffer类都被定义为(final),不能有子类。
43、在Java程序中,每一行(//)之后的内容是程序的注释,另外介于(/*)和(*/)之间的内容也是注释。
44、设有一个Java应用程序,其源程序文件名为J_Test.java,则编译该源程序的命令为(javac J_Test.java),运行该应用程序的命令为(java J_Test).
45、接口中定义的常量默认具有(public )(final)的属性接口中定义的方法默认具有(public)(abstract)的属性
46、Java语言中,有一个类是所有类或接口的父类,这个类的名称是(object)。
47、在一个合法的Java源程序文件中定义了3个类,则其中属性为public的类可能有(1)个。
48、编译一个定义了两个类和三个方法的Java源文件,总共会产生(1)个字节码文件,这些字节码文件的扩展名是(.class)
49、Java标识符是由字母、(下划线)、(数字)和(美元符号)组成,其中(数字)不能放在开头
50、构造方法是一种特殊的成员方法,构造方法名与(类名) 相同。
51、定义类的保留字是( class),定义接口的保留字是(interface)。
52、Java语言只允许单继承,指每个类只能有一个(派生类)。
53、Java源程序的扩展名是(.Java),经过编译后的程序的扩展名是(.class)。