Hỏi về cách tạo instance của một thuộc tính

Mọi người cho mình hỏi là 2 cách tạo instance của thuộc tính myString như bên dưới có hoàn toàn giống nhau không?

public class Demo {
         private String myString;

         public Demo() {
                 myString = new String("hello");
         }
}

public class Demo {
         private String myString = new String("hello");

         public Demo() { }
}

Giống nhau

  • 2 đối tượng myString đều tạo ra 1 object String có giá trị “hello” lưu giữ tại heap
  • Cả 2 đều được tạo tại thời điểm run-time

Khác nhau:
Nếu bạn có 1 Constructor khác Constructor mặc định. myString ở trên sẽ không được khởi tạo khi chưa gọi method Demo

Còn myString ở dưới luôn được tạo giá trị “hello” khi bạn tạo bất kỳ 1 đối tượng thuộc class Demo (chưa xét đến trường hợp access modify)

1 Like

A post was split to a new topic: Khác nhau giữa String Literal và String Object

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?