It doesn't work that way. The PreparedStatement is sent to the database prior to having the variables loaded for precompiling. The variables are then sent for execution.
JDBC doesn't replace the question marks with your variables. That is happening at the database.