Uma linguagem é baseada em outra linguagem, se foi projetada para modificar essa linguagem. "Projetado modificando", é claro, é o que "baseado em" significa. No caso de Java e C #, você pode ver que ambos foram criados modificando C: eles têm operadores de C, precedência de operadores de C, a maioria das palavras-chave de C, sintaxe de chaves de C, operadores booleanos de C, a sensibilidade de C, comportamento de C para o operador de divisão, o fall-through de C para as declarações switch, etc.
Além disso, a palavra oficial é que o Java é strongmente influenciado pelo Objetivo C . Objetivo C, como todos sabem, é baseado em C. O C # é baseado em Java. Isso faria com que ambos fossem pelo menos strongmente influenciados por C.
Por fim, esta é a terceira frase da especificação da linguagem Java :
The Java programming language is
related to C and C++ but is organized
rather differently, with a number of
aspects of C and C++ omitted and a few
ideas from other languages included.
Parece uma declaração tão clara quanto possível, pois Java é baseado, pelo menos em parte, em C (com alguns aspectos omitidos e alguns outros aspectos incluídos).