Quoted from http://www.learnkoreanlp.com/2011/12/subject-particles.html
는/은 and 가/이 both are used for the subject of a sentence but 는/은 introduces a topic or a subject whereas 가/이 identifies a subject.
In addition to their differences already explored above, here is another big difference between the two particles.
The topic particle, 는/은, is used in cases when we make a general or factual statement whereas 가/이 is not.
치타는 빠르다 = Cheetah is fast
치타는 느리다 = Cheetah is slow (This would be a wrong statement)
However, if you visited a zoo and saw a cheetah who seems to move very slowly, you might say,
치타가 느리다 = (That) cheetah is slow
So the identifier particle, 가/이, indicates a certain person or thing that the speaker and listener know or are aware of. In this case, it would be that cheetah in the zoo.
Here is another example,
바다는 푸르다 = The sea is blue
바다는 까맣다 = The sea is black (In general, this is a wrong statement.)
But say, you saw the sea at night and you may exclaim,
바다가 까맣다! = The sea is black!
The sea in this sentence is identified as a particular sea at night, and both the speaker and listener know which sea is being talked about. This is not a general statement. Therefore the identifier particle, 가/이, is used in this case.
Of course, 바다가 푸르다 is also perfectly acceptable. However, the difference is that the sea in this sentence is also a particular sea that is known by both the speaker and the listener.
바다는 푸르다 = The sea is blue (A general statement)
바다가 푸르다 = The sea is blue (The sea is identified and known by the speaker and listener)
It's similar to the way articles are used in English.
An apple is red = 사과는 빨갛다 (A general or factual statement about an apple)
The apple is red = 사과가 빨갛다 (A particular apple that the speaker identifies and indicates to the listener)
You can find many same questions in italki.com