title: Dart final and const list - How to explain this code block?
body: <p>I was looking for codes to understand the difference between final and const in dart. After I found some code blocks and changed a bit, the outputs were surprising for me. How to explain these outputs? What causes this difference?</p>
  <pre><code>void main() {
    final list1 = [1, 2];
    final list2 = [1, 2];
  
    print(list1);
    print(list2);
    print(list1 == list2); //false
  
    const list3 = [1, 2];
    const list4 = [1, 2];
  
    print(list3);
    print(list4);
    print(list3 == list4); //true
  }
  </code></pre>