第一,��final, finally, finalize的�^�e。
第二,Anonymous Inner Class (匿名�炔款�) 是否可以extends(�^承)其他�,是否可以implements(���F)interface(介面)?
第三,Static Nested Class 和 Inner Class的不同,�f得越多越好(面��}有的很�\�y)。
第四,&和&&的�^�e。
第五,HashMap和Hashtable的�^�e。
第六,Collection 和 Collections的�^�e。
第七,什�N�r候用assert。
第八,GC是什�N? �槭颤N要有GC?
第九,String s = new String("xyz");��建了���String Object?
第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
第十一,short s1 = 1; s1 = s1 + 1;有什�N�e? short s1 = 1; s1 += 1;有什�N�e?
第十二,sleep() 和 wait() 有什�N�^�e?
第十三,Java有�]有goto?
第十四,�列有�]有length()�@��方法? String有�]有length()�@��方法?
第十五,Overload和Override的�^�e。Overloaded的方法是否可以改�返回值的�型?
第十六,Set�Y的元素是不能重�}的,那�N用什�N方法��^分重�}�c否呢? 是用==�是equals()? 它��有何�^�e?
第十七,�o我一��你最常�到的runtime exception。
第十八,error和exception有什�N�^�e?
第十九,List, Set, Map是否�^承自Collection介面?
第二十,abstract class和interface有什�N�^�e?
第二十一,abstract的method是否可同�r是static,是否可同�r是native,是否可同�r是synchronized?
第二十二,介面是否可�^承介面? 抽象�是否可���F(implements)介面? 抽象�是否可�^承���w�(concrete class)?
第二十三,��右���程是用run()�是start()?
第二十四,��造器Constructor是否可被override?
第二十五,是否可以�^承String�?
第二十六,��一���程�M入一��物件的一��synchronized方法後,其他�程是否可�M入此物件的其他方法?
第二十七,try {}�Y有一��return�Z句,那�N�o跟在�@��try後的finally {}�Y的code��不��被�绦校�什�N�r候被�绦校�在return前�是後?
第二十八,�程�}: 用最有效率的方法算出2乘以8等於��?
第二十九,����ο笾迪嗤�(x.equals(y) == true),但�s可有不同的hash code,�@句��Σ��?
第三十,��一��物件被��作���鬟f到一��方法後,此方法可改��@��物件的�傩裕��K可返回�化後的�Y果,那�N�@�Y到底是值�鬟f�是引用�鬟f?
第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
第三十二,�程�}: ��一��Singleton出�怼�
以下是答案
第一,��
final, finally, finalize
的�^�e。
final-
修�符(�P�I字)如果一���被�明��
final
,意味著它不能再派生出新的子�,不能作�楦割�被�^承。因此一���不能既被�明��
abstract
的,又被�明��
final
的。�⒆��祷蚍椒��明��
final
,可以保�C它��在使用中不被改�。被�明��
final
的��当仨�在�明�r�o定初值,而在以後的引用中只能�x取,不可修改。被�明��
final
的方法也同�又荒苁褂茫�不能重�d
finally-
再��常�理�r提供
finally
�K��绦腥魏吻宄�操作。如果��出一����常,那�N相匹配的
catch
子句就���绦校�然後控制就���M入
finally
�K(如果有的�)。
finalize-
方法名。
Java
技�g允�S使用
finalize()
方法在垃圾收集器�⑽锛��挠����w中清除出去之前做必要的清理工作。�@��方法是由垃圾收集器在�_定�@��物件�]有被引用�r���@��物件�{用的。它是在
Object
�中定�x的,因此所有的�都�^承了它。子�覆�w
finalize()
方法以整理系�y�Y源或者�绦衅渌�清理工作。
finalize()
方法是在垃圾收集器�h除物件之前���@��物件�{用的。
第二,
Anonymous Inner Class (
匿名�炔款�
)
是否可以
extends(
�^承
)
其他�,是否可以
implements(
���F
)interface(
介面
)?
匿名的�炔款�是�]有名字的�炔款�。不能
extends(
�^承
)
其他�,但一���炔款�可以作�橐��介面,由另一���炔款����F。
第三,
Static Nested Class
和
Inner Class
的不同,�f得越多越好
(
面��}有的很�\�y
)
。
Nested Class
(一般是
C++
的�f法),
Inner Class (
一般是
JAVA
的�f法
)
。
Java
�炔款��c
C++
嵌套�最大的不同就在於是否有指向外部的引用上。具�w可�
http: //www.frontfree.net/articles/services/view.asp?id=704&page=1
注:
�o�B�炔款�(
Inner Class
)意味著
1
��建一��
static
�炔款�的物件,不需要一��外部�物件,
2
不能�囊��
static
�炔款�的一��物件�L��一��外部�物件
第四,
&
和
&&
的�^�e。
&
是位�\算符。
&&
是布林���\算符。
第五,
HashMap
和
Hashtable
的�^�e。
都�凫�
Map
介面的�,���F了�⑽┮绘I映射到特定的值上。
HashMap
��]有分�或者排序。它允�S一��
null
�I和多��
null
值。
Hashtable
�似於
HashMap
,但是不允�S
null
�I和
null
值。它也比
HashMap
慢,因�樗�是同步的。
第六,
Collection
和
Collections
的�^�e。
Collections
是��
java.util
下的�,它包含有各�N有�P集合操作的�o�B方法。
Collection
是��
java.util
下的介面,它是各�N集合�Y��的父介面。
第七,什�N�r候用
assert
。
�嘌允且��包含布林�\算式的�Z句,在�绦羞@���Z句�r假定��\算式��
true
。如果�\算式�算��
false
,那�N系�y���蟾嬉��
AssertionError
。它用於�{�目的:
assert(a > 0); // throws an AssertionError if a <= 0
�嘌钥梢杂�煞N形式:
assert Expression1 ;
assert Expression1 : Expression2 ;
Expression1
����是�a生一��布林值。
Expression2
可以是得出一��值的任意�\算式。�@��值用於生成�@示更多�{��Y�的
String
消息。
�嘌栽谀��J情�r下是禁用的。要在��g�r�⒂�嘌裕�需要使用
source 1.4
�擞�:
javac -source 1.4 Test.java
要在�\行�r�⒂�嘌裕�可使用
-enableassertions
或者
-ea
�擞�。
要在�\行�r�x�窠�用�嘌裕�可使用
-da
或者
-disableassertions
�擞�。
要系�y�中�⒂�嘌裕�可使用
-esa
或者
-dsa
�擞�。�可以在包的基�A上�⒂没蛘呓�用�嘌浴�
可 以在�A�正常情�r下不��到�_的任何位置上放置�嘌浴�嘌钥梢杂渺厄��C�鬟f�o私有方法的��怠2贿^,�嘌圆���用於��C�鬟f�o公有方法的��担�因�椴还苁欠� �⒂昧�嘌裕�公有方法都必��z查其��怠2贿^,既可以在公有方法中,也可以在非公有方法中利用�嘌�y�後置�l件。另外,�嘌圆���以任何方式改�程式的�� �B。
第八,
GC
是什�N
?
�槭颤N要有
GC? (
基�A
)
。
GC
是垃圾收集器。
Java
程式��不用��心����w管理,因�槔�圾收集器��自�舆M行管理。要�求垃圾收集,可以�{用下面的方法之一:
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;
第十一,
short s1 = 1; s1 = s1 + 1;
有什�N�e
? short s1 = 1; s1 += 1;
有什�N�e
?
short s1 = 1; s1 = s1 + 1;
有�e,
s1
是
short
型,
s1+1
是
int
型
,
不能�@式�D化��
short
型。可修改��
s1 =(short)(s1 + 1)
。
short s1 = 1; s1 += 1
正�_。
第十二,
sleep()
和
wait()
有什�N�^�e
?
搞�程的最��
sleep()
方法是使�程停止一段�r�g的方法。在
sleep
�r�g�g隔期�M後,�程不一定立即恢��绦小_@是因�樵谀���r刻,其他�程可能正在�\行而且�]有被�{度�榉���绦校�除非
(a)“
醒��
”
的�程具有更高的��先�序
(b)
正在�\行的�程因�槠渌�原因而阻塞。
wait()
是�程交互�r,如果�程�σ��同步物件
x
�l出一��
wait()
�{用,��程���和�绦校�被�{物件�M入等待��B,直到被�拘鸦虻却��r�g到。
第十三,
Java
有�]有
goto?
Goto-java
中的保留字,�F在�]有在
java
中使用。
第十四,�列有�]有
length()
�@��方法
? String
有�]有
length()
�@��方法?
�列�]有
length()
�@��方法,有
length
的�傩浴�
String
有有
length()
�@��方法。
第十五,
Overload
和
Override
的�^�e。
Overloaded
的方法是否可以改�返回值的�型
?
方法的重��
Overriding
和重�d
Overloading
是
Java
多�B性的不同表�F。重��
Overriding
是父��c子�之�g多�B性的一�N表�F,重�d
Overloading
是一���中多�B性的一�N表�F。如果在子�中定�x某方法�c其父�有相同的名�Q和��担�我���f�方法被重��
(Overriding)
。子�的物件使用�@��方法�r,�⒄{用子�中的定�x,�λ�而言,父�中的定�x如同被
“
遮罩
”
了。如果在一���中定�x了多��同名的方法,它��或有不同的�����祷蛴胁煌�的��殿�型,�t�Q�榉椒ǖ闹剌d
(Overloading)
。
Overloaded
的方法是可以改�返回值的�型。
第十六,
Set
�Y的元素是不能重�}的,那�N用什�N方法��^分重�}�c否呢
?
是用
==
�是
equals()?
它��有何�^�e
?
Set
�Y的元素是不能重�}的,那�N用
iterator()
方法��^分重�}�c否。
equals()
是判�x���
Set
是否相等。
equals()
和
==
方法�Q定引用值是否指向同一物件
equals()
在�中被覆�w,�榈氖钱����分�x的物件的�热莺皖�型相配的�,返回真值。
第十七,�o我一��你最常�到的
runtime exception
。
ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException,
ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException
第十八,
error
和
exception
有什�N�^�e
?
error
表示恢�筒皇遣豢赡艿�很困�y的情�r下的一�N�乐���}。比如�f����w溢出。不可能指望程式能�理�@�拥那�r。
exception
表示一�N�O�或���F���}。也就是�f,它表示如果程式�\行正常,�牟���l生的情�r。
第十九,
List, Set, Map
是否�^承自
Collection
介面
?
List
,
Set
是
Map
不是
第二十,
abstract class
和
interface
有什�N�^�e
?
�明方法的存在而不去���F它的�被叫做抽象�(
abstract class
),它用於要��建一���w�F某些基本行�榈念�,�K�樵���明方法,但不能在��中���F��的情�r。不能��建
abstract
�的��例。然而可以��建一����担�其�型是一��抽象�,�K�它指向具�w子�的一����例。不能有抽象��造函�祷虺橄箪o�B方法。
Abstract
�的子��樗���父�中的所有抽象方法提供���F,否�t它��也是抽象��椤H《�代之,在子�中���F�方法。知道其行�榈钠渌��可以在�中���F�@些方法。
介面(
interface
)是抽象�的��w。在介面中,所有方法都是抽象的。多�^承性可通�^���F�@�拥慕槊娑��@得。介面中的所有方法都是抽象的,�]有一��有程式�w。介面只可以定�x
static final
成 �T��怠=槊娴���F�c子�相似,除了����F�不能�慕槊娑��x中�^承行�椤.�����F特殊介面�r,它定�x(即�⒊淌襟w�o予)所有�@�N介面的方法。然後,它可以 在���F了�介面的�的任何物件上�{用介面的方法。由於有抽象�,它允�S使用介面名作�橐�用��档念�型。通常的��B���⑸�效。引用可以�D�Q到介面�型或�� 介面�型�D�Q,
instanceof
�\算符可以用��Q定某物件的�是否���F了介面。
第二十一,
abstract
的
method
是否可同�r是
static,
是否可同�r是
native
,是否可同�r是
synchronized?
都不能
第二十二,介面是否可�^承介面
?
抽象�是否可���F
(implements)
介面
?
抽象�是否可�^承���w�
(concrete class)?
介面可以�^承介面。抽象�可以���F
(implements)
介面,抽象�是否可�^承���w�,但前提是���w�必�有明�_的��造函�怠�
第二十三,��右���程是用
run()
�是
start()?
��右���程是�{用
start()
方法,使�程所代表的��M�理�C�於可�\行��B,�@意味著它可以由
JVM
�{度�K�绦小_@�K不意味著�程就��立即�\行。
run()
方法可以�a生必�退出的�苏I�硗V挂���程。
第二十四,��造器
Constructor
是否可被
override?
��造器
Constructor
不能被�^承,因此不能重��
Overriding
,但可以被重�d
Overloading
。
第二十五,是否可以�^承
String
�
?
String
�是
final
�故不可以�^承。
第二十六,��一���程�M入一��物件的一��
synchronized
方法後,其他�程是否可�M入此物件的其他方法
?
不能,一��物件的一��
synchronized
方法只能由一���程�L��。
第二十七,
try {}
�Y有一��
return
�Z句,那�N�o跟在�@��
try
後的
finally {}
�Y的
code
��不��被�绦校�什�N�r候被�绦校�在
return
前�是後
?
���绦校�在
return
前�绦小�
第二十八,�程�}
:
用最有效率的方法算出
2
乘以
8
等於��
?
有
C
背景的程式��特�e喜�g���@�N���}。
2 << 3
第二十九,����ο笾迪嗤�
(x.equals(y) == true)
,但�s可有不同的
hash code
,�@句��Σ��
?
不�Γ�有相同的
hash code
。
第三十,��一��物件被��作���鬟f到一��方法後,此方法可改��@��物件的�傩裕��K可返回�化後的�Y果,那�N�@�Y到底是值�鬟f�是引用�鬟f
?
是值�鬟f。
Java
�程�Z言只由值�鬟f��怠.�一��物件��例作�橐����当�鬟f到方法中�r,��档闹稻褪�υ�物件的引用。物件的�热菘梢栽诒徽{用的方法中改�,但物件的引用是永�h不��改�的。
第三十一,
swtich
是否能作用在
byte
上,是否能作用在
long
上,是否能作用在
String
上
?
switch
(
expr1
)中,
expr1
是一��整�颠\算式。因此�鬟f�o
switch
和
case
�Z句的�����是
int
、
short
、
char
或者
byte
。
long,string
都不能作用於
swtich
。
第三十二,�程�}
:
��一��
Singleton
出�怼�
Singleton
模式主要作用是保�C在
Java
��用程式中,一���
Class
只有一����例存在。
一般
Singleton
模式通常有�追N�N形式
:
第一�N形式
:
定�x一���,它的��造函���
private
的,它有一��
static
的
private
的����担�在�初始化�r��例�,通�^一��
public
的
getInstance
方法�@取�λ�的引用
,
�^而�{用其中的方法。
public class Singleton {
private Singleton(){}
//
在自己�炔慷��x自己一����例,是不是很奇怪?
//
注意�@是
private
只供�炔空{用
private static Singleton instance = new Singleton();
//
�@�Y提供了一��供外部�L��本
class
的�o�B方法,可以直接�L��
public static Singleton getInstance() {
return instance;
}
}
第二�N形式
:
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
//
�@��方法比上面有所改�M,不用每次都�M行生成物件,只是第一次
//
使用�r生成��例,提高了效率!
if (instance==null)
instance
=
new Singleton();
return instance;
}
}
其他形式
:
定�x一���,它的��造函���
private
的,所有方法��
static
的。
一般�J�榈谝环N形式要更加安全些
第三十三
Hashtable
和
HashMap
Hashtable
�^承自
Dictionary
�,而
HashMap
是
Java1.2
引�M的
Map interface
的一�����F
HashMap
允�S��
null
作�橐��
entry
的
key
或者
value
,而
Hashtable
不允�S
�有就是,
HashMap
把
Hashtable
的
contains
方法去掉了,改成
containsvalue
和
containsKey
。因��
contains
方法容易�人引起�`解。
最大的不同是,
Hashtable
的方法是
Synchronize
的,而
HashMap
不是,在
多���程�L��
Hashtable
�r,不需要自己�樗�的方法���F同步,而
HashMap
就必��橹�提供外同步。
Hashtable
和
HashMap
�裼玫�
hash/rehash
演算法都大概一�樱�所以性能不��有很大的差��。