Is merely changing x to final in the go() method enough to consider this a different parameter list, and therefore an overloaded version of the method? Or is it the same parameter list and therefore an overridden version of the method?
If I limit the access of the method in Hello2 (by making it default), the compiler complains that I can't do that when overriding, so the compiler must consider final int x the same parameter list. I suppose this answers the question, but I just want to verify this with others.
Well, you have already answered your own question, so there's not much more to say. Perhaps only that only the types and order of the parameter list is considered. Names, annotations and modifiers (like final) are not.
Edit: in answer to your second question, only if the types of the variables are different is it considered a different signature. Swapping two int parameters will not change a thing.