Почему эквивалентные лямбда-выражения и ссылки на методы ведут себя по-разному при захвате значения статического поля?

Я немного запутался в лямбдах Java и поведении ссылок на методы. Например, у нас есть этот код:

import java.util.function.Consumer;

public class Main {

    private static StringBuilder sBuilder = new StringBuilder("1");

    public static void main(String[] args) {
        Consumer<String> consumer = s -> sBuilder.append(s);
        sBuilder = new StringBuilder("2");
        consumer.accept("3");
        System.out.println(sBuilder);
    }

}

Выход:

23

Это работает как ожидалось, но если мы заменим

s -> sBuilder.append (s)

с

sBuilder :: Append

вывод будет:

2

У вас есть идеи, как это объяснить? Это не одно и то же? Благодарю.

Ответы на вопрос(1)

Ваш ответ на вопрос