It has already been said that it is the inference and I think you can infer (pun intended) in the comments that it is just a syntactical difference without affecting semantics, performance or any other question.
What you're doing in the second example is just omitting something the compiler already knows, it just is not written, but the information is still there.
In Java 10 you can do different in local variables:
var listaBancoPerguntas = new ArrayList<BancoPerguntas>();
Again% w / o% does not change anything, the compiler reads what is on the right side of the expression and sees that it does an assignment and through it the type can be determined even without being explicitly written in the place it should. Think about it, why would you type the same thing twice?
You can also do:
var x = 1;
and
var y = retornaUmInt();
But we do not usually recommend this last case because it is less readable to know what type is the variable.
There are cases that you can not use the inference, because the variable type must be different from the / literal constructor type.
It is very complicated to do the same for instance variables, so it is not allowed.
Java is improving:)