本文目錄一覽:
- 1、JAVA試卷
- 2、java試卷
- 3、幫忙做一份JAVA試卷 後天就要拉
JAVA試卷
1b 2c 3b 4c 5a 6d 7d 8a 9c 10d 11c 12a 13a 14a 15c 16a 17d 18b 19d 20c
如有錯誤,請多指教
java試卷
第一,談談final,
finally,
finalize的區別。
final
修飾符(關鍵字)如果一個類被聲明為final,意味着它不能再派生出新的子類,不能作為父類被繼承。因此一個類不能既被聲明為
abstract的,又被聲明為final的。將變量或方法聲明為final,可以保證它們在使用中不被改變。被聲明為final的變量必須在聲明時給定初值,而在以後的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載
finally
再異常處理時提供
finally
塊來執行任何清除操作。如果拋出一個異常,那麼相匹配的
catch
子句就會執行,然後控制就會進入
finally
塊(如果有的話)。
finalize?方法名。java
技術允許使用
finalize()
方法在垃圾收集器將對象從內存中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的。它是在
object
類中定義的,因此所有的類都繼承了它。子類覆蓋
finalize()
方法以整理系統資源或者執行其他清理工作。finalize()
方法是在垃圾收集器刪除對象之前對這個對象調用的。
第二,anonymous
inner
class
(匿名內部類)
是否可以extends(繼承)其它類,是否可以implements(實現)interface(接口)?
匿名的內部類是沒有名字的內部類。不能extends(繼承)
其它類,但一個內部類可以作為一個接口,由另一個內部類實現。
第三,static
nested
class
和
inner
class的不同,說得越多越好(面試題有的很籠統)。
nested
class
(一般是c++的說法),inner
class
(一般是java的說法)。java內部類與c++嵌套類最大的不同就在於是否有指向外部的引用上。具體可見http:
//
;page=1
註:
靜態內部類(inner
class)意味着1創建一個static內部類的對象,不需要一個外部類對象,2不能從一個static內部類的一個對象訪問一個外部類對象
第四,和的區別。
是位運算符。是布爾邏輯運算符。
第五,hashmap和hashtable的區別。
都屬於map接口的類,實現了將惟一鍵映射到特定的值上。
hashmap
類沒有分類或者排序。它允許一個
null
鍵和多個
null
值。
hashtable
類似於
hashmap,但是不允許
null
鍵和
null
值。它也比
hashmap
慢,因為它是同步的。
第六,collection
和
collections的區別。
collections是個java.util下的類,它包含有各種有關集合操作的靜態方法。
collection是個java.util下的接口,它是各種集合結構的父接口。
第七,什麼時候用assert。
斷言是一個包含布爾表達式的語句,在執行這個語句時假定該表達式為
true。如果表達式計算為
false,那麼系統會報告一個
assertionerror。它用於調試目的:
assert(a
0);
//
throws
an
assertionerror
if
a
=
斷言可以有兩種形式:
assert
expression1
;
assert
expression1
:
expression2
;
expression1
應該總是產生一個布爾值。
expression2
可以是得出一個值的任意表達式。這個值用於生成顯示更多調試信息的
string
消息。
斷言在默認情況下是禁用的。要在編譯時啟用斷言,需要使用
source
1.4
標記:
javac
-source
1.4
test.java
要在運行時啟用斷言,可使用
-enableassertions
或者
-ea
標記。
要在運行時選擇禁用斷言,可使用
-da
或者
-disableassertions
標記。
要系統類中啟用斷言,可使用
-esa
或者
-dsa
標記。還可以在包的基礎上啟用或者禁用斷言。
可以在預計正常情況下不會到達的任何位置上放置斷言。斷言可以用於驗證傳遞給私有方法的參數。不過,斷言不應該用於驗證傳遞給公有方法的參數,因為不管是否啟用了斷言,公有方法都必須檢查其參數。不過,既可以在公有方法中,也可以在非公有方法中利用斷言測試後置條件。另外,斷言不應該以任何方式改變程序的狀態。
第八,gc是什麼?
為什麼要有gc?
(基礎)。
gc是垃圾收集器。java
程序員不用擔心內存管理,因為垃圾收集器會自動進行管理。要請求垃圾收集,可以調用下面的方法之一:
system.gc()
runtime.getruntime().gc()
第九,string
s
=
new
string(“xyz”);創建了幾個string
object?
兩個對象,一個是“xyx”,一個是指向“xyx”的引用對象s。
第十,math.round(11.5)等於多少?
math.round(-11.5)等於多少?
math.round(11.5)返回(long)12,math.round(-11.5)返回(long)-11;
第二十一,abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized?
都不能
幫忙做一份JAVA試卷 後天就要拉
三、填空題
1、Java 2 platform分成三個版本套件____51_J2SE_____、_____52____J2EE__、_______53___J2ME______。
4、Arrays類的_______54__sort____方法可以對數組進行排序。
5、______55____Interface___關鍵字用來定義一個接口。
6、在java中,把數據類型分為兩大類為_______56____基本類型_______和__________57______對象類型___。
8、若在java程序中設置包語句,則使用關鍵字_______58___package______。若要導入其他包中的類則需要使用關鍵字_________59______import_______。
9、設x、k均為int型變量,x已經賦值。用三目條件運算符,求變量x的絕對值,並賦給變量k的賦值語句是__60___k=x0?x:(-1)*x__________。
10、(在同一包中)子類不能繼承父類中的 61____private__ 成員,除此之外,其它所有的成員都可以通過繼承變為子類的成員。
11、下面是以命令行參數形式輸入double型數據的程序,並對出現的數組越界異常(IndexOutOfBoundsException異常)和數據格式錯誤異常(NumberFormatException異常)進行捕獲處理。請將程序補
充完整。
class Catch2Demo{
public static void main(String args[]){
(_______62_ throws __IndexOutOfBoundsException,__NumberFormatException____){
String s=args[0];
double d=Double.parseDouble(s);
System.out.println(“d的平方為:”+d*d);
}
catch(IndexOutOfBoundsException e){
System.out.println(“沒有輸入命令行參數”);
e.printStackTrace();
}
( ______63____catch(NumberFormatException e)______){
System.out.println(“沒有輸入正確的數據”);
e.printStackTrace();return;
}
}
}
五、編程題
一)按照以下要求編寫程序
1、編寫一個矩形類Rect,包含:
兩個protected屬性:矩形的寬width;矩形的高height。
兩個構造器方法:
(1)一個帶有兩個參數的構造器方法,用於將width和height屬性初化;
(2)一個不帶參數的構造器,將矩形初始化為寬和高都為10。
兩個方法:
(1)求矩形面積的方法area()
(2)求矩形周長的方法perimeter()
答:
public class Rect{
protected double width;
protected double height;
public Rect(double width,double height){
this.width=width;
this.height=height;
}
public Rect(){
this.width=10;
this.height=10;
}
public double area(){
return width*height;
}
public double perimeter() {
return 2*(width+height);
}
}
2、通過繼承Rect類編寫一個具有確定位置的矩形類PlainRect,其確定位置用矩形的左上角坐標來標識,包含:
添加兩個屬性:矩形左上角坐標startX和startY。
兩個構造器方法:
(1)帶4個參數的構造器方法,用於對startX、startY、width和height屬性初始化;
(2)不帶參數的構造器方法,將矩形初始化為左上角坐標、長和寬都為0的矩形;
添加一個方法:
判斷某個點是否在矩形內部的方法isInside(double x,double y)。如在矩形內,返回true, 否則,返回false。
提示:點在矩形類是指滿足條件:
x=startXx=(startX+width)ystartYy=(startY+height)
答:
public class PlainRect extends Rect{
private double startX;
private double startY;
public PlainRect(double startX,double startY,double width,double height){
this.width=width;
this.height=height;
this.startX=startX;
this.startY=startY;
}
public PlainRect(){
this.width=0;
this.height=0;
this.startX=0;
this.startY=0;
}
public isInside(double x,double y){
if(x=startXx=(startX+width)ystartYy=(startY+height) ){
return true;
}else{
return false;
}
}
}
3、編寫PlainRect類的測試程序
(1)創建一個左上角坐標為(10,10),長為20,寬為10的矩形對象;
(2)計算機並打印輸出矩形的面積和周長;
(3)判斷點(25.5,13)是否在矩形內,並打印輸出相關信息。
public class TestPlainRect{
public static void main(String[] args){
PlainRect plainRect=new PlainRect(10,10,20,10);
System.out.println(“矩形面積:”+area());
System.out.println(“矩形周長:”+perimeter());
System.out.println(“判斷點(25.5,13)是否在矩形內:”+isInside(25.5,13));
}
}
二)按照以下要求編寫程序
定義一個類A,類中有一個private的整型變量data;一個private的字符串對象str。類中有兩個構造函數,一個不含參數,初始化data 和str為其缺省值;另一個有兩個參數,分別用來初始化data 和str
。類中還定義三個方法,方法頭的定義和其功能如下:
1)public A add(int k,String s):該方法把data和str的值分別加上k和s。
2)public A clearA():該方法把data和str的值分別清除為其缺省值。
3)public String toString():該方法把data和str的值轉變為字符串返回,便於顯示。
編寫測試類TestA,創建類A對象並使用類A中的三個方法。並寫出輸出結果。
答:
public class A{
private int data;
private String str;
public A(){
this.data=0;
this.str=””;
}
public A(int data,String str){
this.data=data;
this.str=str;
}
public A add(int k,String s){
this.data+=k;
this.str+=s;
}
public A clearA(){
this.data=0;
this.str=””;
}
public String toString(){
retrun “整型值:”+data+”,字符串值:”+str;
}
}
public class TestA{
public static void main(String[] args){
A a=new A(123,”Java”);
// 輸出結果為:整型值:123,字符串值:Java
System.out.println(a.toString());
a.add(456,”World”);
// 輸出結果為:整型值:579,字符串值:JavaWorld
System.out.println(a.toString());
a.clearA();
// 輸出結果為:整型值:0,字符串值:
System.out.println(a.toString());
}
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/197308.html