Is one more readable than the other or is it just a matter of personal preference?
Well, depends on your goals. I do not like both of them, so I would answer no to the first part.
Static imports will confuse readers without some IDE, because it is very hard to find out the origin of the statement.
A member or class variable could be ok if you do not modify anything about System.*, but I do not see the point to save a System. (Anyway, you could have the same argument as for Method1.)
Not that heavy arguments, more a matter of personal preference. This is the reason i used the word like in the beginning. I prefer System.out(.prinln()).
One difference between this two methods is the effect of System.setOut(). Method1 is affected, Method2 does not care.
To emphasize it (it was already touched by Andras):
Method 3:
static void print(Object object) { some implementation, e.g. System.out.println(o) }
This is clearly shorter and more flexible. If you need more you could choose any of the available logging possibilities.
(Just for completeness: This flexibility could be reached with the other methods, too. Method1: Static import of some custom class with a public class variable out which has the necessary methods. Method2: Modify the variable type to a custom class with the same public class variable out which has the necessary methods)
outin each case. Method one is throughout the file and cannot be easily overridden (doing so will only add to the confusion). Method two restricts its use to the declaring class. What do you think is better? – Jeff Mercado Jan 17 at 5:46