Posted on 2006-05-21 10:04
橘子 閱讀(95)
評(píng)論(0) 編輯 收藏
答:區(qū)別如下:
作用域 當(dāng)前類 同一package 子孫類 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
不寫時(shí)默認(rèn)為friendly
56、ArrayList和Vector的區(qū)別,HashMap和Hashtable的區(qū)別
答:就ArrayList與Vector主要從二方面來(lái)說(shuō).
一.同步性:Vector是線程安全的,也就是說(shuō)是同步的,而ArrayList是線程序不安全的,不是同步的
二.數(shù)據(jù)增長(zhǎng):當(dāng)需要增長(zhǎng)時(shí),Vector默認(rèn)增長(zhǎng)為原來(lái)一培,而ArrayList卻是原來(lái)的一半
就HashMap與HashTable主要從三方面來(lái)說(shuō)。
一.歷史原因:Hashtable是基于陳舊的Dictionary類的,HashMap是Java 1.2引進(jìn)的Map接口的一個(gè)實(shí)現(xiàn)
二.同步性:Hashtable是線程安全的,也就是說(shuō)是同步的,而HashMap是線程序不安全的,不是同步的
三.值:只有HashMap可以讓你將空值作為一個(gè)表的條目的key或value
57、char型變量中能不能存貯一個(gè)中文漢字?為什么?
答:是能夠定義成為一個(gè)中文的,因?yàn)閖ava中以u(píng)nicode編碼,一個(gè)char占16個(gè)字節(jié),所以放一個(gè)中文是沒(méi)問(wèn)題的
58、多線程有幾種實(shí)現(xiàn)方法,都是什么?同步有幾種實(shí)現(xiàn)方法,都是什么?
答:多線程有兩種實(shí)現(xiàn)方法,分別是繼承Thread類與實(shí)現(xiàn)Runnable接口
同步的實(shí)現(xiàn)方面有兩種,分別是synchronized,wait與notify
59、垃圾回收機(jī)制,如何優(yōu)化程序?
希望大家補(bǔ)上,謝謝
60、float型float f=3.4是否正確?
答:不正確。精度不準(zhǔn)確,應(yīng)該用強(qiáng)制類型轉(zhuǎn)換,如下所示:float f=(float)3.4
61、介紹JAVA中的Collection FrameWork(包括如何寫自己的數(shù)據(jù)結(jié)構(gòu))?
答:Collection FrameWork如下:
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
Collection是最基本的集合接口,一個(gè)Collection代表一組Object,即Collection的元素(Elements)
Map提供key到value的映射
62、Java中異常處理機(jī)制,事件機(jī)制?
11、JAVA中的多形與繼承?
希望大家補(bǔ)上,謝謝
63、抽象類與接口?
答:抽象類與接口都用于抽象,但是抽象類(JAVA中)可以有自己的部分實(shí)現(xiàn),而接口則完全是一個(gè)標(biāo)識(shí)(同時(shí)有多重繼承的功能)。
編程題:
1.現(xiàn)在輸入n個(gè)數(shù)字,以逗號(hào),分開(kāi);
然后可選擇升或者降序排序;
按提交鍵就在另一頁(yè)面顯示
按什么 排序,結(jié)果為, ,
提供reset
答案(1) public static String[] splitStringByComma(String source){
if(source==null||source.trim().equals(""))
return null;
StringTokenizer commaToker = new StringTokenizer(source,",");
String[] result = new String[commaToker.countTokens()];
int i=0;
while(commaToker.hasMoreTokens()){
result[i] = commaToker.nextToken();
i++;
}
return result;
}
循環(huán)遍歷String數(shù)組
Integer.parseInt(String s)變成int類型
組成int數(shù)組
Arrays.sort(int[] a),
a數(shù)組升序
降序可以從尾部開(kāi)始輸出
2.金額轉(zhuǎn)換,阿拉伯?dāng)?shù)字的金額轉(zhuǎn)換成中國(guó)傳統(tǒng)的形式如:
(¥1011)->(一千零一拾一元整)輸出。
3、繼承時(shí)候類的執(zhí)行順序問(wèn)題,一般都是選擇題,問(wèn)你將會(huì)打印出什么?
答:父類:
package test;
public class FatherClass
{
public FatherClass()
{
System.out.println("FatherClass Create");
}
}
子類:
package test;
import test.FatherClass;
public class ChildClass extends FatherClass
{
public ChildClass()
{
System.out.println("ChildClass Create");
}
public static void main(String[] args)
{
FatherClass fc = new FatherClass();
ChildClass cc = new ChildClass();
}
}
輸出結(jié)果:
C:>java test.ChildClass
FatherClass Create
FatherClass Create
ChildClass Create
4、內(nèi)部類的實(shí)現(xiàn)方式?
答:示例代碼如下:
package test;
public class OuterClass
{
private class InterClass
{
public InterClass()
{
System.out.println("InterClass Create");
}
}
public OuterClass()
{
InterClass ic = new InterClass();
System.out.println("OuterClass Create");
}
public static void main(String[] args)
{
OuterClass oc = new OuterClass();
}
}
輸出結(jié)果:
C:>java test/OuterClass
InterClass Create
OuterClass Create
再一個(gè)例題:
public class OuterClass {
private double d1 = 1.0;
//insert code here
}
You need to insert an inner class declaration at line 3. Which two inner class declarations are
valid?(Choose two.)
A. class InnerOne{
public static double methoda() {return d1;}
}
B. public class InnerOne{
static double methoda() {return d1;}
}
C. private class InnerOne{
double methoda() {return d1;}
}
D. static class InnerOne{
protected double methoda() {return d1;}
}
E. abstract class InnerOne{
public abstract double methoda();
}
說(shuō)明如下:
一.靜態(tài)內(nèi)部類可以有靜態(tài)成員,而非靜態(tài)內(nèi)部類則不能有靜態(tài)成員。 故 A、B 錯(cuò)
二.靜態(tài)內(nèi)部類的非靜態(tài)成員可以訪問(wèn)外部類的靜態(tài)變量,而不可訪問(wèn)外部類的非靜態(tài)變量;return d1 出錯(cuò)。
故 D 錯(cuò)
三.非靜態(tài)內(nèi)部類的非靜態(tài)成員可以訪問(wèn)外部類的非靜態(tài)變量。 故 C 正確
四.答案為C、E
5、Java 的通信編程,編程題(或問(wèn)答),用JAVA SOCKET編程,讀服務(wù)器幾個(gè)字符,再寫入本地顯示?
答:Server端程序:
package test;
import java.net.*;
import java.io.*;
public class Server
{
private ServerSocket ss;
private Socket socket;
private BufferedReader in;
private PrintWriter out;
public Server()
{
try
{
ss=new ServerSocket(10000);
while(true)
{
socket = ss.accept();
String RemoteIP = socket.getInetAddress().getHostAddress();
String RemotePort = ":"+socket.getLocalPort();
System.out.println("A client come in!IP:"+RemoteIP+RemotePort);
in = new BufferedReader(new
InputStreamReader(socket.getInputStream()));
String line = in.readLine();
System.out.println("Cleint send is :" + line);
out = new PrintWriter(socket.getOutputStream(),true);
out.println("Your Message Received!");
out.close();
in.close();
socket.close();
}
}catch (IOException e)
{
out.println("wrong");
}
}
public static void main(String[] args)
{
new Server();
}
};
Client端程序:
package test;
import java.io.*;
import java.net.*;
public class Client
{
Socket socket;
BufferedReader in;
PrintWriter out;
public Client()
{
try
{
System.out.println("Try to Connect to 127.0.0.1:10000");
socket = new Socket("127.0.0.1",10000);
System.out.println("The Server Connected!");
System.out.println("Please enter some Character:");
BufferedReader line = new BufferedReader(new
InputStreamReader(System.in));
out = new PrintWriter(socket.getOutputStream(),true);
out.println(line.readLine());
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
System.out.println(in.readLine());
out.close();
in.close();
socket.close();
}catch(IOException e)
{
out.println("Wrong");
}
}
public static void main(String[] args)
{
new Client();
}
};