Dúvida em exercício

O valor final de b será false após execução do seguinte fragmento de código:

void z(boolean[] b)
{ b[0] = !b[0]; }
boolean[] b= {false};

O gabarito dá como errado. Não deve ser “correto”! Penso baseado na tabela verdade. B e ~(B), não B passa de V para F e sabemos que V & F = F pela tabela verdade. Não foi passado nenhum valor e sim somente a posição do vetor que é do tipo booleano. Assim pelo enunciado concluo poder resolver somente pela tabela verdade. Aqui não consigo inferir se a posição do vetor tem um valor verdadeiro ou falso, assim comecei pelo valor de verdadeiro para que eu pudesse tirar alguma conclusão.

o valor final da variavel b é um array contendo o valor true na posição 0.

o metodo z, sobrescreve a posição zero da tabela negando ela

ou seja

b[0] é false
!b[0] é true //negando a negação (sic)
b[0] = !b[0]
b[0] agora é true

O java atribui de início qual valor para uma variável booleana? verdadeiro ou falso?

Em Java o valor padrão para variáveis do tipo boolean é false.

Obrigado pela resposta.
Era uma dúvida que não estava encontrando, assim facilita a montagem da tabela verdade para as condições. Estava sempre iniciando com verdadeiro. Encontrava o valor final sempre false.