whoa freaky stuff if i initialize:
thingy thing1 = new thingy();
thingy thing2 = thing1
I thought it would copy the fields and methods and be separate after that line...
Not freaky, it's called pointers. When you use non-objects for initializing, like
int i=5;
int j=i;
They're different but just have the same value. But with objects, you point to the same reference. You need to make them initialize different or else they point to the same piece of memory, i.e if you change anything in thing1 it'll change what's in thing2.