Internal, private ..?

O modificador de acesso internal do c# é igual ao private do java…?
Alguém sabe a diferença…?

internal class BaseClass
{
public static int intM = 0;
}

internal é como se fosse um “public” que só funciona dentro de um assembly (DLL ou EXE; correspondente ao JAR do Java). Fora do assembly a classe é inacessível.
Isso é interessante para criar bibliotecas, por exemplo, já que uma biblioteca pode ter vários namespaces (correspondentes aos packages do Java), mas só expor o que é realmente necessário.