Sim, o conceito é o mesmo. Mas veja os modificadores de acesso do java, pois eles são bastante permissivos quando o assunto é classes de mesmo pacote.
Para garantir que seu pacote será único, a Sun recomenda que você prefixe seus pacotes com o domínio do seu site ao contrário. Assim não há risco de duas bibliotecas diferentes terem pacotes com nomes coincidentes. No caso do guj seria:
br.com.guj.xxxx
Com letras maiúsculas representa as classes wrapper de tipos primitivo. Com letra minúsculas os tipos primitivos em si.
O wrapper é simplesmente uma classe que contém o tipo primitivo em questão dentro. Isso é usado para quando vc tem uma classe que só aceita objetos em seu interior (como List) e você gostaria de passar um tipo primitivo.
Operações matemáticas são lentas usando wrappers. E o wrapper ocupa mais memória que um tipo primitivo comum.
A partir do Java 5, o java faz o box e unboxing do tipo primitivo automaticamente.
No .net, o equivalente aos wrappers seria quando você usa uma ? após o nome do tipo primitivo. E então a variável passa a aceitar null.
No Java não existe o tipo primitivo string, com letra minúscula.
São equivalentes ao do C#.
Equivalente ao foreach do C#.
Em c#:
foreach (string str in lista)
Em Java