30/09/2018, 23:45

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() { }
}
Đỗ Trung Quân viết 01:59 ngày 01/10/2018

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

public class Demo {
private String myString;

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

}

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)

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

     public Demo() { }

}

Đỗ Trung Quân viết 01:58 ngày 01/10/2018

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

Bài liên quan
0