相同点
1. 现在完成时和现在完成进行时都可以表示从过去某一时刻开始一直延续到现在的动作。经常与since引导的时间状语连用。如:
I have worked in this school since 2001. = I have been working in this school since 2001. 自从2001年以来我一直在这个学校工作。
2. 现在完成时和现在完成进行时都可以表示一段时间内动作的持续性。经常与for引导的时间状语连用。如:
Mr. Smith has lived here for 20 years. = Mr. Smith has been living here for 20 years. 史密斯先生已经住在这里二十年了。
以上句子用现在完成时与现在完成进行时,含义上没有什么差别,两种时态可以互换。
不同点
1. 从定义上来看,现在完成时(have/has done)表示的是已经完成的动作或者状态,常常与already(已经)或ever(曾经)连用;而现在完成进行时(have/has been doing)表示的是从过去某一时刻开始一直延续到现在,并且还可能要进行下去的动作,具有未完成的特点,一般不与already或ever等连用。如:
注意以下两组句子含义上的区别:
(1) We have already learnt Unit 2. 我们已经学习了第二单元。(已学完)
We have been learning Unit 2. 我们一直在学习第二单元。(没学完,在进行中)
(2) I have read the novel. 我看过这部小说了. (已看完)
I have been reading the novel. 我一直在看这部小说。(一直在看,还没有看完)
2. 相对于现在完成时表示一次性的特点,现在完成进行时可以表示动作的重复。请看下面两个句子:
I have met him at the library. 我在图书馆见过他。(曾见过一次)
I have been meeting him at the library. 我经常在图书馆看见她。(曾见过多次)
3. 现在完成进行时比较生动,有时含有明显的感情色彩;而现在完成时往往只说明一个事实、一种影响或结果,平铺直叙,没有感情色彩可言。如:
Who’s been eating my apples? 谁一直在吃我的苹果? (有感情色彩,表示不满)
Who's eaten my apples? 谁吃了我的苹果? (只是希望得到一个回答)