Dúvida sobre boolean

Estou aprendendo a programar em Java e sou iniciante ainda, e fazendo um curso tive uma dúvida no seguinte exercício:

Variável:

boolean[][] matrix = {
			{false, true, false, false, false},
			{false, false, false, false, false}
		};

Busca:

for(int a = 0; a < matrix.length; a++) {
	System.out.print("A ");
	for(int b = 0; b < matrix[a].length; b++) {
		if(matrix[a][b]) {
			System.out.print("TRUE ");
		}
		System.out.print("B ");
	}
}

Nesse trecho do código if(matrix[a][b]) eu não consigo entender como ele reconhece que [b] é true para substituir o texto.

Poderiam por favor, explicar?

Não entendi direito sua pergunta.

Ele só imprimi TRUE quandomatrix[a][b] for true, ele faz isso:

A
matrix[0][0] é verdadeiro? se for, imprima: TRUE
B
matrix[0][1] é verdadeiro? se for, imprima: TRUE
B
matrix[0][2] é verdadeiro? se for, imprima: TRUE
B
matrix[0][3] é verdadeiro? se for, imprima: TRUE
B
matrix[0][4] é verdadeiro? se for, imprima: TRUE
B
A
matrix[1][0] é verdadeiro? se for, imprima: TRUE
B
matrix[1][1] é verdadeiro? se for, imprima: TRUE
B
matrix[1][2] é verdadeiro? se for, imprima: TRUE
B
matrix[1][3] é verdadeiro?  se for, imprima: TRUE
B
matrix[1][4] é verdadeiro? se for, imprima: TRUE
B

Bom tem alguns conceitos embutidos:

  1. Dentro de uma estrutura de decisão (if) é verificado primeiramente se a resposta é true e no else se por ventura não satisfazer é porque é falso. Então if (true) { } else { }.
  2. No caso da sua pergunta a matrix[a][b] retorna os elementos true ou false e no caso do if só vai entrar e imprimir System.out.print("TRUE"); quando for true a posição resgatada da matriz.

Fiz uma alteração no código para imprimir linha, coluna e valor que ai você vai entender o seu código:

Code

boolean[][] matrix = {
	{false, true, false, false, false},
	{false, false, false, false, false}
};
for(int a = 0; a < matrix.length; a++) 
{
	for(int b = 0; b < matrix[a].length; b++) 
	{
		System.out.print("Linha " + a + " Coluna " + b);
		if(matrix[a][b]) 
		{
			System.out.println(" TRUE");
		}
		else 
		{
			System.out.println(" FALSE");
		}
	}
}

Output:

Success time: 0.09 memory: 320576 signal:0
Linha 0 Coluna 0 FALSE
Linha 0 Coluna 1 TRUE
Linha 0 Coluna 2 FALSE
Linha 0 Coluna 3 FALSE
Linha 0 Coluna 4 FALSE
Linha 1 Coluna 0 FALSE
Linha 1 Coluna 1 FALSE
Linha 1 Coluna 2 FALSE
Linha 1 Coluna 3 FALSE
Linha 1 Coluna 4 FALSE

Entendido pessoal, obrigado pelas respostas!