Q:

what are the main differences between a Java/C# static class?

In C# a static class is a class that, in addition to not supporting inheritance, can have any kind of type member a "normal" class can have except instance members.
Not so sure how static classes work in java, but based on the limited amount of java code I have seen, it's clear to me that they don't work quite the same way.
Can someone please enumerate the differences?

A:

Static classes in Java are one of three kinds of nested classes provided by the language (the other two being non-static nested classes and function-scoped classes).
Static classes of Java behave the same way that nested classes of C#: they have access to static members of the enclosing class, but cannot access instance members without an additional reference to the enclosing object. In contrast, non-static nested functions can access instance variables, but you need an enclosing instance in order to be instantiated.

A:

in C# 
Use a static class to contain methods that are not associated with a particular object. For example, it is a common requirement to create a set of methods that do not act on instance data and are not associated to a specific object in your code. You could use a static class to hold those methods.
The main features of a static class are:

They only contain static members.
They cannot be instantiated.
They are sealed.
They cannot contain Instance Constructors

in Java :

Only nested classes can be static.
can have static members in classes

