Dúvida boolean e ifs

Olá, estou fazendo um curso de Java em Inglês, consigo entender algumas coisas porém não consigo entender qual seria a diferença entre.

boolean isCar = false;
if(isCar == true)
System.out.println("Isso nao deve acontecer");

Aqui eu entendo que não irá imprimir a linha pois só imprime se fechar a condição da variável certo?

Porém não entendo porque imprime quando é

boolean isCar = false;
if(isCar = true)
System.out.println("Isso nao deve acontecer");

Imagino que ele não leve a variável acima na comparação e só imprima a condição, mas não entendi bem, alguém poderia ajudar?

= é atribuição, ou seja, você atribui o valor true a isCar, vai retornar false somente se não for possível atribuir o valor (ex: atribuir um número a um boolean, ou alterar o valor de um static)

== é comparação, ou seja, vc pergunta se isCar é igual a true, retorna true se a comparação for verdadeira e false se não for e note que o if sempre requer uma expressão booleana dentro dos parenteses, ou seja, tudo que você colocar nos parenteses do if deve ter um valor de retorno ou true ou false
e justo por isso vc também pode escrever este if dessa forma:

if (isCar) System.out.println("texto");

já que a variável que você está testando é um boolean, o próprio valor dela serve de argumento ao if, não precisa fazer toda a comparação (isCar == true).