I am rewriting a Java book for beginners, and it seems to make so much sense to use

import static java.lang.System.out;

public class Greeting
   public static void main(String[] args)
      out.println("Hello, World!");


I would no longer have to dissect the awful System.out.println("Hello, World!") expression. (Ok, boys and girls. System is a class. System.out is a static field of type PrintStream. That's another class. What is static, you ask? It's what a TV set makes when it doesn't get a signal. No, it's what you don't want in your dryer. Ok, whatever it is, you don't ever want to do it in your code, unless it is also final. That means, you can't change it. Oh, you spotted System.setOut. Next question?)

Ditto with mathematical expressions. Doesn't

sin(angle * PI / 180)

look so much nicer than

Math.sin(angle * Math.PI / 180)

Ok, at least to that tiny fraction of the population who knows trigonometry...

The fact is, I don't recall ever seeing anyone using static import outside JUnit 4, where it is justifiably popular to import org.junit.Assert.*.

I made a Google search, only to find a sensible blog whose comments were filled with rants that static imports are the work of the antichrist, something on static imports in C#, a recommendation to use it rarely, and the usual certification garbage (here and here).

I am trying to get the reaction of the average Java coder here. Have you switched from System.out to out with a static import? Would you think it weird to look at other people's code that did that? Or would you welcome it?