Static methods are (microscopically) faster, as they don't use a "this" parameter and there's no
polymorphism; but it's the sort of small difference that's usually just swamped in the noise, and not something to worry about in general.
You can't say, overall, that static methods have any "advantages." Rather, they are appropriate in some situations, just as non-static methods are appropriate in others. The two reasons you gave are some of the important ones, but I think they both miss the big picture. It's not so much that static methods are "good" because you don't have to create an object to call them; it's that static methods are appropriate when a method will be called outside of the context of a particular object. These situations include methods that create objects ("factory" methods) and methods that process primitive values (all the methods in the java.lang.Math class.)