Máy tính thực hiện toán tử == với kiểu dữ liệu primitive như thế nào?

Anh chị ơi em có vấn đề như này:

int a = 123;
int b = 123;
  • Khi khai báo và gán 123 đến tận 2 lần, vậy bộ nhớ stack lưu trữ số 123 ở 2 chỗ hay 1 chỗ trên bộ nhớ stack?
  • Khi so sánh a == b thì chuyện gì xày ra trong stack vậy? hay là không liên quan đến giá trị bên trong ô nhớ stack khi so sánh primitive datatype?
  • Tất có ngôn ngữ đều xem string là object hay tùy ngôn ngữ ạ?

good morning!

Primitive thì heap gì ở đây? Biến local và là primitive thì lưu trên stack chứ không phải trên heap.

String thì trong tất cả ngôn ngữ mình biết đều là object cả. Chưa thấy ngôn ngữ nào mà string là primitive.

8 Likes

á á, em nhầm :sweat_smile: stack để lưu primirive chứ, heap để lưu object reference

Chắc khi so sánh biến chứa primitive trong stack nó phải diễn ra như này như này

6 Likes

Cậu hiểu đúng rồi đó @tacel5018 :+1:

2 Likes

Trường hợp biến local (biến nằm trong function scope) mà có kiểu dữ liệu tham chiếu (kiểu object) thì vẫn lưu trên stack là sao anh? Mong được giải thích!

Biến kiểu object sẽ có 2 phần: biến tham chiếu và vùng nhớ được trỏ tới. Biến tham chiếu lưu trong stack, còn data của object sẽ nằm trên heap.

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