I don't remember where I heard it from, but I was once told that you should declare a variable outside of the loop if there's a good probability that it'll be assigned the same value more than once.
For example:
int value;while(true){ value = ...; // ...}
Here, in the first iteration of the loop, the number 5 might be assigned to value.. And in the second iteration, the number 5 might again be assigned to value (perhaps a very very VERY slight performance gain, but nothing to wow over).
while(true){ int value = ...; // ...}
I usually use the above when I know that the number assigned to value could be anything, and thus such micro-optimising would prove to be pointless.
In any case I would definitely favour whichever method makes my code cleaner and easier to manage.
EDIT: For anything other the standard types (int, float, etc) it is a completely different story. You wouldn't really want to create and destroy a complex object in the loop over and over.