I agree with Vic, and would like to add a little more information.
The main point of the question is the difference between the tenses of "have been playing" and "have played". In addition to the tenses, we have the verb "play (tennis)", which is a dynamic verb (dynamic verbs have duration; they occur over time), and we also have the time phrase "for five years".
Different combinations of verb, tense, and time phrase will allow different ranges of possible readings.
Let's consider the first sentence:
(1) I have been playing tennis for five years.
The tense is the perfect progressive tense. The time phrase indicates the duration (five years). The combination of the tense and the time phrase forces us to read it as: "I have been playing tennis for five years now." This gives us the reading that the activity has been going on for five years up until now. It also implies that the activity will keep continuing, at least in the immediate future.
(2) I have played tennis for five years.
The tense is the simple perfect tense. The time phrase is, again, for five years. However, the sentence is different from (1). It doesn't force us to read the time part as "for five years now". It's unclear exactly when in the past that the speaker have played tennis. All we know is it happened before now, at least five years before now. (In other words, it's possible to read the sentence as "At some point in my life, I've played tennis for five years.") It's unclear whether it has ended or not. It's also possible that it's been continued up until now, and possibly will continue into the future. The speaker says nothing explicitly, so we have a wider range of possible readings.
Having said that, the preferred reading, out of context, is: "I have played tennis for five years now." Which means about the same thing as (1). When we read both alternatives as "for five years now", the difference is really small. To demonstrate such a small difference, these examples can be helpful:
How long have you been playing tennis?
I've been playing tennis for five years.
Do you know how to play tennis?
Of course, I've played tennis for five years.
I hope this helps to clarify the difference!
to have played
merely is the past tense of to play
. You can't say to played
, so you say to have played
, using the perfect tense.
It was lucky to know him.
implies "being lucky" and "knowing him" are at the same point on the timeline. On the other hand if you said,
It was lucky to have known him.
it implies "knowing him" happened before "being lucky".
So if he had the talent to have played many more
, then it means with the talent he had, it was possible that he played many more "in the far past".
Hope this helps.
Best Answer
The first one, I have been playing cricket for the last two years. sounds better.
I think it's because the I have played and 2 years somewhat conflict. I have played makes it sound like there was some point in time that you played, but you're not sure of exactly when, or not specifying. So saying you did for two years doesn't sound quite right.
However, your meaning would still be understood perfectly.