So sánh == và equals

Tổng hợp các bài viết thuộc chủ đề Sự Khác Nhau Giữa == Và Equals xem nhiều nhất, được cập nhật mới nhất ngày 25/08/2022 trên website Sansangdethanhcong.com. Hy vọng nội dung bài viết sẽ đáp ứng được nhu cầu của bạn, chúng tôi sẽ thường xuyên cập nhật mới nội dung Sự Khác Nhau Giữa == Và Equals để bạn nhận được thông tin nhanh chóng và chính xác nhất. Cho đến thời điểm hiện tại, chủ đề này đã đạt được 8.910 lượt xem.

Từ Vựng Gây Nhầm Lẫn [Phần 1] – Phân Biệt “Popular” Và “Common” ?

Phân Biệt “Fee”, “Fare”, “ Fine”, “Toll” Và “Charge”

Cách Dùng Động Từ Feel

Trung Tâm Phát Triển Giáo Dục Cộng Đồng Nguồn Sáng

Pes Vs Fifa? Ai Mới Là Ông Hoàng Bóng Đá Điện Tử 2022?

Trước khi bàn về sự khác biệt giữa “==” và phương thức equals[], một điều quan trọng phải hiểu là một đối tượng [object] vừa có một địa chỉ  trong bộ nhớ và một tình trạng cụ thể phụ thuộc vào các giá trị trong đối tượng.

operator “==”

Trong Java, khi operator “==” được dùng để so sánh hai đối tượng, thì nó kiểm tra xem các đối tượng có tham chiếu đến cùng một nới trên bộ nhớ hay không. Mặt khác, nó kiểm tra xem hai tên đối tượng về cơ bản có tham chiếu đến cùng một địa chỉ nhớ hay không.  Ví dụ sau sẽ làm sáng tỏ điều này:

String obj1 = new String["xyz"]; String obj2 = new String["xyz"]; if[obj1 == obj2] System.out.println["obj1==obj2 is TRUE"]; else System.out.println["obj1==obj2 is FALSE"];

Hãy xem xét đoạn code trên xuất ra gì. Có phải bạn đoán output sẽ là obj1==obj2 là TRUE đúng không? Nếu vậy bạn đã thực sự sai. Ngay cả khi các chuỗi có chung các ký tự [“xyz”], đoạn code trên sẽ xuất ra:

obj1==obj2 is FALSE

Operator “==” so sánh các địa chỉ nhớ của các đối tượng trong bộ nhớ.

Giải thích sâu hơn: như đã đề cập bên trên, operator “==” trên thực tế kiểm tra các đối tượng chuỗi [obj1 và obj2] có tham chiếu đến đúng một địa chỉ nhớ hay không. Mặt khác, nếu cả obj1 và obj2 chỉ khác nhau cái tên cho cùng một đối tượng thì operator “==” sẽ trả về TRUE khi so sánh hai đối tượng. Ví dụ sau sẽ làm rõ:

String obj1 = new String["xyz"]; String obj2 = obj1; if[obj1 == obj2] System.out.printlln["obj1==obj2 is TRUE"]; else System.out.println["obj1==obj2 is FALSE"];

Để ý trong đoạn code trên thì obj2 và obj1 cùng tham chiếu đến cùng một nơi trên bộ nhớ vì dòng:” String obj2=obj1;”. Và vì operator “==” so sánh tham chiếu bộ nhớ của mỗi đối tượng, nó sẽ trả về TRUE.

obj1==obj2 is TRUE

Phương thức equal[]

Hãy tìm hiểu về phương thức equal[]. Nó được định nghĩa trong lớp Object, mà từ nó mỗi lớp là một lớp con trực tiếp hoặc gián tiếp[ trong Java tất cả các lớp đều bắt nguồn từ lớp Object]. Mặc định thì phương thức equals[] hoạt động như là operator “==”- nghĩa là nó cũng kiểm tra xem các đối tượng có tham chiếu đến cùng một nơi trên bộ nhớ hay không. Nhưng, phương thức equals[] trong thực tế được hiểu là so sánh các thành phần của hai đối tượng, và không phải so sánh địa chỉ bộ nhớ của chúng.

Thế hành vi đó được thành lập như thế nào? Đơn giản là lớp equals được override để lấy những phương thức cần thiết nhờ đó nội dung của đối tượng được so sánh thay vì địa chỉ của đối tượng. Đây là một sự tập luyện việc override phương thức equals, bạn nên so sánh các giá trị trong đối tượng để tìm ra tính cân bằng. Giá trị nào bạn so sánh thì phụ thuộc vào bạn. Đây là một điều quan trọng phải hiểu, vì vậy chúng ta sẽ lập lại nó là: về mặc định equals[] hoạt động như là operator “==” là so sánh địa chỉ của các đối tượng. Nhưng khi bạn override phương thức equals[], bạn sẽ so sánh các giá trị của đối tượng.

Một ví dụ về hàm equals[] được override

lớp String trong Java trên thực tế override phương thức equals[] mặc định trong lớp Object rồi, và nó override phương thức đó để nó kiểm tra giá trị của các chuỗi, thay vì địa chỉ bộ nhớ. Nghĩa là nếu bạn gọi phương thức equals[] để so sánh hai đối tượng chuỗi, thì miễn là dãy các ký tự của chuỗi bằng nhau thì hai chuỗi sẽ bằng nhau. Ví dụ:

String obj1 = new String["xyz"]; String obj2 = new String["xyz"]; if[obj1.equals[obj2]] System.out.printlln["obj1==obj2 is TRUE"]; else System.out.println["obj1==obj2 is FALSE"];

đoạn code trên sẽ cho ra output

obj1==obj2 is TRUE

Đó cũng là sự khác biệt giữa phương thức equals[] và operator “==” trong Java

Share this:

Facebook

LinkedIn

Like this:

Like

Loading…

Related

Phân Biệt Interested Và Interesting …, Sự Khác Nhau Giữa “Interested” Và “Interesting”

Assessment Vs Evaluation In Education

Fob Là Gì? Sự Khác Nhau Giữa Cif Và Fob

Shipping Vs. Delivery: What’S The Difference?

What Is The Difference Between Shipping And Delivery?

Phân Biệt “fee”, “fare”, ” Fine”, “toll” Và “charge”

Phí Handling Charge Là Gì? Một Số Cơ Bản Cần Nắm Rõ

Sự Khác Nhau Giữa Cảm Xúc ‘emotions’ Và Cảm Giác ‘feelings’ Là Gì?

Sự Khác Biệt Giữa Glucose Và Fructose 2022

Sự Khác Biệt Giữa Glucose Và Fructose [Khoa Học]

Nói chung, cả hai phương thức equal[] và toán tử == trong Java đều được sử dụng để so sánh các đối tượng để kiểm tra sự bằng nhau nhưng đây là một số khác biệt giữa hai:

Sự khác biệt chính giữa phương thức .equals [] và toán tử == là: một cái là phương thức còn một cái là toán tử. Chúng ta có thể sử dụng các toán tử == để so sánh tham chiếu [ . Nói một cách đơn giản, so sánh địa chỉ ] và phương thức .equals [] để so sánh nội dung == kiểm tra xem cả hai đối tượng có trỏ đến cùng một vị trí bộ nhớ hay không trong khi .equals [] ước tính so sánh các giá trị trong các đối tượng. Nếu một lớp không ghi đè phương thức bằng , thì theo mặc định, nó sử dụng phương thức bằng [Object o] của lớp cha gần nhất đã ghi đè phương thức này.

Bây giờ chúng ta sẽ cùng tìm hiểu chi tiết hơn về các toán tử

Chúng ta có thể áp dụng các toán tử đẳng thức cho mọi kiểu nguyên thủy bao gồm cả kiểu boolean. C húng ta cũng có thể áp dụng các toán tử đẳng thức cho các loại đối tượng.

Nếu chúng ta áp dụng == cho các loại đối tượng thì sẽ có sự tương thích giữa các loại đối số [có thể là con với cha mẹ hoặc cha mẹ với con hoặc cùng loại]. Nếu không, chúng ta sẽ nhận được lỗi biên dịch.

false false

Trong Java, phương thức chuỗi equal[] so sánh hai chuỗi đã cho dựa trên dữ liệu / nội dung của chuỗi. Nếu tất cả nội dung của cả hai chuỗi đều giống nhau thì nó trả về true. Nếu tất cả các ký tự không khớp thì nó trả về false.

Ở đây chúng tôi đang sử dụng phương thức .equals để kiểm tra xem hai đối tượng có chứa cùng một dữ liệu hay không.

Trong ví dụ trên, chúng tôi đang tạo 3 đối tượng Thread và 2 đối tượng String. Trong so sánh đầu tiên, chúng tôi đang kiểm tra xem t1 == t3 hay không. Như chúng ta biết rằng cả t1 và t3 đều trỏ đến cùng một đối tượng , đó là lý do tại sao nó trả về true. Trong lần so sánh thứ hai, chúng tôi đang sử dụng toán tử == để so sánh các Đối tượng chuỗi chứ không phải nội dung của các đối tượng. Ở đây, cả hai đối tượng đều khác nhau và do đó, kết quả của sự so sánh này là Khi chúng ta so sánh 2 đối tượng String bằng toán tử .equals [] thì chúng ta sẽ kiểm tra xem cả hai đối tượng có chứa cùng một dữ liệu hay không. Cả hai đối tượng s1, s2 đều chứa cùng một Chuỗi là chúng tôi nên kết quả trả về đúng.

Phương Thức Equals[] Và Hashcode[] Trong Java 2022

Phương Thức Equals[] Và Hashcode[] Trong Java

Sự Khác Biệt Giữa Các Phương Thức Hashcode [] Và Equals [] Trong Java Là Gì?

Sự Khác Nhau Giữa Though Và Anyway Trong Sử Dụng

Sự Khác Nhau Giữa Founder Và Ceo 2022

Phương Thức Equals[] Và Hashcode[] Trong Java

Phương Thức Equals[] Và Hashcode[] Trong Java 2022

Sự Khác Biệt Giữa Phương Thức .equals [] Và Toán Tử == Trong Java

Phân Biệt “fee”, “fare”, ” Fine”, “toll” Và “charge”

Phí Handling Charge Là Gì? Một Số Cơ Bản Cần Nắm Rõ

Sự khác biệt giữa các phương thức hashcode [] và equals [] trong Java là gì?

Mã Băm[]

là một phương thức của lớp Object. Mã băm là một đại diện số nguyên của một đối tượng bởi JVM.

Mã băm là hệ thống được tạo bằng cách sử dụng một số công thức [chúng ta không đi nhiều công thức].

Mã băm được tạo ra không cần phải giống nhau cho các thời điểm thực hiện khác nhau. Trong nội bộ, các đối tượng được lưu trữ ở định dạng Hashtable.

Bằng []

như chúng ta đã biết trước đó, so sánh hai chuỗi hoặc ký tự.

Để so sánh, JVM chỉ sử dụng mã băm của họ. Cách so sánh này là

rất nhanh hơn so với việc so sánh từng ký tự trong hai chuỗi.

Định dạng mã băm này không thể được lập trình viên sử dụng trong mã hóa.

bằng []

là một phương thức của lớp Object. Phương pháp này không được thiết kế để so sánh chính xác các thuộc tính của hai đối tượng, nhưng được thiết kế, để biết liệu hai tham chiếu có tham chiếu cùng một đối tượng hay không.

Nhiều lớp ghi đè lên phương thức này để thuận tiện cho họ.

Các lớp String và System đã ghi đè phương thức này để biết hai đối tượng có giống nhau hay không.

Chỉ cần kiểm tra nhìn vào hình ảnh với sự trợ giúp của chương trình sau đây:

Kiểm tra lớp học công cộng {

public static void main [String args []] {

Kiểm tra t1 = Kiểm tra mới [];

Kiểm tra t2 = Kiểm tra mới [];

System.out.println [t1.getClass []];

int a = t1.hashCode [];

int b = t2.hashCode [];

System.out.println [“mã băm đối tượng t1:” + a];

System.out.println [“mã băm đối tượng t2:” + b];

if [t1.equals [t2]]

System.out.println [“t1 và t2 đề cập đến cùng”];

khác

System.out.println [“t1 và t2 không tham chiếu giống nhau”];

Kiểm tra t3, t4;

t3 = t1;

t4 = t1;

if [t3.equals [t4]]

System.out.println [“t3 và t4 có nghĩa giống nhau”];

khác

System.out.println [“t3 và t4 không tham chiếu giống nhau”];

}

}

Trong thế giới của Java chứ không phải OOPS, một mô hình dựa trên Java, hầu hết mọi thứ đều là ĐỐI TƯỢNG.

bây giờ chúng ta xử lý tức là viết chương trình bằng cách sử dụng các đối tượng, chúng ta cần một số phương thức [api’s] giúp chúng ta so sánh hai đối tượng hoặc phương thức in trạng thái của đối tượng.

có 3 phương thức quan trọng hiện diện trong Lớp đối tượng là lớp cơ sở trong java.

bằng []

toString []

Mã Băm[]

chúng ta cần ghi đè một cách lý tưởng các lớp này trong các lớp do người dùng xác định như lớp Nhân viên, lớp Sinh viên, để các phương thức này hoạt động chính xác. chúng được ghi đè theo mặc định trong các lớp được xác định trước như lớp String, lớp Date, v.v.

Bây giờ câu hỏi là sự khác biệt giữa phương thức equals [] và hashCode [].

cả hai đều khá khác nhau

đây là lý do tại sao phương thức equals [] được sử dụng

xem xét hai biến đơn giản

int a = 3;

int b = 3; Làm thế nào chúng ta sẽ kiểm tra nếu những điều này là bằng nhau?

đơn giản nếu [a == b], nhưng đối với các đối tượng Java thì không đơn giản như vậy

xem xét một đối tượng lớp String

Chuỗi str1 = Chuỗi mới [Nhật ký Hello];

Chuỗi str2 = Chuỗi mới [Nhật ký Hello];

if [str1 == str2] không cho kết quả như mong đợi vì nó so sánh các tham chiếu đến các đối tượng, ví dụ str1 và str2 nhưng không phải là trạng thái đối tượng của chúng.

để làm điều này tức là để kiểm tra trạng thái của các đối tượng trong khi so sánh chúng, chúng ta có một phương thức bằng []

vì thế

if [str1.equals [str2]]

là chính xác mà trả về

THẬT

áp dụng tương tự nếu bạn đang so sánh các đối tượng Date.

nhưng nếu bạn đang cố so sánh hai đối tượng do người dùng xác định là đối tượng Nhân viên hoặc Sinh viên

Lưu ý: không viết mã hoàn chỉnh ở đây vì phải để lại cho độc giả khám phá bản thân chúng;]

lớp nhân viên

lớp nhân viên {

tuổi int;

Tên chuỗi;

}

Nhân viên e1 = Nhân viên [];

e1.age = 10;

e1.name = đá rock;

Nhân viên e2 = Nhân viên [];

e2.age = 10;

e2.name = đá rock;

hiện nay

if [e1.equals [e2]] không trả về SAI !!

bởi vì JVM cần hiểu cách bạn muốn hai đối tượng của bạn bằng nhau?

chúng có bằng nhau không nếu cả tên VÀ tuổi hoặc bằng nhau? chúng có bằng nhau không nếu tên HOẶC tuổi bằng nhau

Làm thế nào để chúng ta nói điều này với JVM? bằng cách ghi đè phương thức bằng trong lớp của bạn.

tham khảo liên kết này.

//www.geekforgeek.org/overriding-equals-method-in-java/

ghi đè phương thức equals [] rất thú vị và là một khái niệm phải biết trong lõi java nếu bạn thường xuyên sử dụng các bộ sưu tập. Vì vậy, tôi để lại phần mã cho người đọc khám phá.

Bây giờ đến

Mã Băm[]

phương pháp

hashCode [] khi được gọi, cung cấp một khóa duy nhất cho đối tượng đó

hashCode [] có một triển khai mặc định trong lớp Object là lớp cha, bạn cũng có thể ghi đè hashCode [] cho lớp của riêng bạn.

bây giờ tất cả chúng ta đều biết Hashset là một Set, không lưu trữ bất kỳ bản sao nào mà nó sử dụng bằng hashCode [].

giả sử tôi đang chèn 4 đối tượng String vào Hashset []

Hashset hset = Hashset mới [];

nói tôi thêm 4 sttings xin chào, thế giới, trái đất, ngôi nhà

trên mỗi chuỗi này, phương thức hashCode [] được gọi bên trong sẽ trả về một Khóa cụ thể cho từng chuỗi này. các phím này được sử dụng để đánh số nhóm và các chuỗi được lưu trữ trong nhóm cụ thể đó

hset.add [ăn xin chào]; – phím 4, được thêm vào thùng số 4

hset.add [thế giới trực tuyến]; – phím 6, được thêm vào thùng số 6

hset.add [đất trái đất]; – phím 21, được thêm vào xô số 21

hset.add [nhà nhà liền]; – phím 14, được thêm vào thùng số 14

Bây giờ nếu tôi cố gắng thêm một lần nữa, xin chào, đã được thêm vào trong Set,

nó trả về cùng khóa 4 và nhóm 4 đã bị chiếm dụng và do đó không được phép sao chép. đây là cách các Bộ [Hashset, LinkedHashset, Treeset] hoạt động, tức là chúng không cho phép trùng lặp.

như bằng [], hashCode [] cũng có thể bị ghi đè cho các đối tượng do người dùng xác định nếu bạn đang sử dụng Bộ sưu tập

đó là sự khác biệt giữa phương thức equals [] và hashCode [] trong Java.

sẽ cập nhật câu trả lời này trên phương thức toString [].

không có sáp

-Mallikarjun

Lớp siêu Java

java.lang.Object

có hai phương pháp rất quan trọng được định nghĩa trong đó. Họ đang –

công bằng boolean bằng [Object obj] công khai hàm băm []

công bằng boolean bằng [Object obj]

Phương thức này kiểm tra xem một số đối tượng khác được truyền cho nó như là một đối số

công bằng

đến đối tượng mà phương thức này được gọi. Việc thực hiện mặc định của phương thức này trong

Vật

lớp chỉ đơn giản kiểm tra nếu hai tham chiếu đối tượng x và y tham chiếu đến cùng một đối tượng. tức là nó kiểm tra xem

x == y

. So sánh cụ thể này còn được gọi là “so sánh nông”. Tuy nhiên, các lớp cung cấp việc thực hiện riêng của họ về

bằng

Vật

lớp không có thành viên dữ liệu xác định trạng thái của nó, nó chỉ đơn giản là thực hiện so sánh nông.

công khai hàm băm []

Phương thức này trả về giá trị mã băm cho đối tượng mà phương thức này được gọi. Phương thức này trả về giá trị mã băm dưới dạng một số nguyên và được hỗ trợ vì lợi ích của việc băm các lớp bộ sưu tập dựa trên băm như Hashtable, HashMap, Hashset, v.v. Phương thức này phải được ghi đè trong mỗi lớp ghi đè lên

bằng

phương pháp.

Sự khác biệt đầu tiên và quan trọng nhất là chúng được thiết kế để thực hiện hai mục đích rất khác nhau. Một số sẽ nhấn mạnh để kết luận những mục đích liên kết với nhau.

Vì vậy, hãy để tôi đưa bạn đến hội thảo ngầm của JVM [Máy ảo Java, Nó giúp mã java của bạn chạy]. Khi bạn khởi tạo một lớp, sẽ phát sinh một cách đơn giản và mạnh mẽ để nhận dạng duy nhất từng đối tượng của một lớp cụ thể, vì tất cả các tập dữ liệu vẫn giống hệt nhau trong thời gian tạo nhiều đối tượng từ một lớp.

Và ở đây hashCode [] đến để giải cứu bạn. hashCode [] là một hàm được định nghĩa trong lớp ‘Object’ và mọi lớp đơn lẻ đều có chức năng này khi chúng mặc định mở rộng lớp ‘Object’. hashCode [] trả về mã không dấu 32 bit chỉ chứa các ký tự số. Tôi không chắc liệu hasCode [] chỉ hiển thị giá trị hay tính toán nó. Giá trị băm này vẫn là duy nhất cho mọi đối tượng của một lớp cụ thể trong một thời gian chạy.

Bây giờ, bằng [] cũng là một phương thức lớp ‘Đối tượng’, lấy một đối tượng của bất kỳ lớp nào làm tham số và so sánh nó với hàm băm của đối tượng cha của nó.

obj1.equals [obj2];

Như bạn đoán, tôi có thể thay thế mã phần A bằng phần B và ngược lại. Tôi hy vọng tôi đã trả lời câu hỏi của bạn.

Luôn có một sự nhầm lẫn phát sinh giữa phương thức equals [] và phương thức hashcode []. Sự khác biệt chính xác được minh họa trong giải thích sau đây.

Mã Băm[]:

Nó tính toán một giá trị của đối tượng dựa trên hàm toán học. Đối với hai đối tượng khác nhau, giá trị mã băm có thể hoặc không thể giống nhau.

bằng []:

Nó so sánh các đối tượng bằng cách sử dụng các tham chiếu trước và sau đó bằng cách so sánh thông minh nhân vật. Nếu các tham chiếu của chúng giống nhau, thì bằng [] trả về một giá trị thực hoặc nếu không, nó so sánh các đối tượng theo ký tự và trả về kết quả.

Equals []: – Phương thức này kiểm tra xem một số đối tượng khác được truyền cho nó làm đối số có bằng với đối tượng mà phương thức này được gọi hay không. Ngay cả khi mã băm của đối tượng cụ thể đó không bằng nhau.

hashcode []: – Nó được sử dụng để lấy mã băm của hai đối tượng để kiểm tra xem mã băm của chúng có bằng nhau hay không.

svcministry.org © 2022

Sự Khác Nhau Giữa Though Và Anyway Trong Sử Dụng

Sự Khác Nhau Giữa Founder Và Ceo 2022

Sự Khác Nhau Giữa Cia Và Fbi 2022

So Sánh Sự Khác Nhau Giữa Work Performance Data [Wpd] Và Work Performance Information [Wpi] Trong Kỳ Thi Pmp

Phân Biệt Judge, Assess, Evaluate, Review, Revise Trong Tiếng Anh

Sự Khác Biệt Giữa For…in,and Foreach Trong Javascript

Sự Khác Nhau Giữa Big Và Large

Bạn Muốn Biết Sự Khác Nhau Và Giống Nhau Giữa Công Chức Và Viên Chức?

Duplex Là Gì? Sự Khác Nhau Giữa Căn Hộ Duplex Và Penthouse

Thẻ Căn Cước Công Dân Và Cmnd 12 Số Khác Nhau Thế Nào?

Có hai loại lập trình viên. Người viết code để làm và người muốn viết code tốt. Ở đây chúng ta nhận được một câu hỏi lớn. Code tốt là gì? Code tốt xuất phát từ thực hành lập trình tốt. Thực hành lập trình tốt là gì? Trên thực tế, mục tiêu của tôi ở đây không phải là để nói về thực hành lập trình tốt [tôi đang lập kế hoạch để viết code sắp tới!], Chứ không phải để nói chuyện nhiều hơn về cách viết một cái gì đó sẽ hiệu quả hơn. Tôi chỉ xem xét sâu hơn trong hai tuyến được sử dụng phổ biến hiện nay, và sự khác biệt của chúng trong các khía cạnh về hiệu suất.

Phải làm quen với IL và assembly. Một số kiến ​​thức của JIT cũng cần thiết để hiểu điều gì đang xảy ra.

Tôi sẽ ví dụ một phần nhỏ mã của 2 vòng lặp phổ biến là for và foreach. Chúng ta sẽ xem xét một số mã và sẽ thấy những gì nó làm được, chi tiết hơn về các chức năng.

Cả hai mã sẽ tạo ra kết quả tương tự. foreach được sử dụng trên đầu trang của collections để thông qua trong khi for có thể được sử dụng trên bất cứ đâu. Tôi sẽ không giải thích gì về các mã. Trước khi đi vào sâu hơn, tôi nghĩ rằng các bạn đã quen thuộc với ILDASM được sử dụng để tạo ra mã IL, và công cụ CorDbg mà thường được sử dụng để tạo ra mã biên dịch JIT.

Mã IL xuất bởi biên dịch C # được tối ưu hóa đến một số mở rộng, trong khi để lại một số phần đến JIT. Dù sao, điều này không thực sự quan trọng đối với chúng ta. Vì vậy, khi chúng ta nói về việc tối ưu hóa, có hai điều chúng ta phải xem xét. Đầu tiên là biên dịch C # và thứ hai là JIT.

Vì vậy, thay vì tìm kiếm sâu hơn vào mã IL, chúng ta sẽ thấy thêm về mã được phát ra bởi JIT. Đó là đoạn code sẽ chạy trên máy tính của chúng ta. Bây giờ ta đang sử dụng bộ xử lý AMD Athlon 1900 +. Mã này rất phụ thuộc vào phần cứng của chúng ta. Vì vậy, những gì bạn có thể nhận được từ máy tính của bạn có thể khác với tôi đến một số mở rộng. Dù sao, các thuật toán sẽ không thay đổi nhiều.

Trong khai báo biến, foreach có năm khai báo biến [ba số nguyên Int32 và hai mảng Int32] trong khi for chỉ có ba [hai số nguyên Int32 và một mảng Int32]. Khi nó vào thông qua vòng lặp, foreach sao chép các mảng hiện tại đến một for hoạt động mới. Trong khi for không quan tâm phần đó.

Ở đây, tôi sẽ chỉ vào sự khác biệt chính xác giữa các mã.

cmp dword ptr total += myInterger i

Chủ Đề