I think what you're after is ... When declared outside the loop the JVM allocates the variable once on the stack. When declared inside the loop the JVM might allocate it on the stack every time through the loop and de-allocate at the end. You'll have to get one of the Byte-Code gurus around here to tell whether the compiler writes it that way, or whether it might be optimized out at or run time.
I haven't looked into it because I don't care.
And that's really good news to me. I believe Java is fast enough that I can write code that communicates my intent - using scope to show that the variable has no meaning outside the loop - without worrying about a couple instructions here or there.