So... I wrote a completely different java code that highlighted my confusion, and I included plenty of System.out.print()statements at various stages so I could clearly see what was actually occurring, and what was overwriting what. Suddenly it became far more 'obvious' (dangerous word, I know!) and then I went back to the exercise and sorted it out immediately!
You're really speeding, it's really worth doing the exerceises and sleeping over it all. Try it out. The longer you spend learning and thinking about it, the long it will stick!