آموزش کپی آرایه های جاوا

1- کپی کردن آرایه ها با استفاده از عملگر انتساب

بیایید مثالی بزنیم ،

  1. class CopyArray {
  2. public static void main(String[] args) {
  3. int [] numbers = {1, 2, 3, 4, 5, 6};
  4. int [] positiveNumbers = numbers; // copying arrays
  5. for (int number: positiveNumbers) {
  6. System.out.print(number + “, “);
  7. }
  8. }
  9. }

خروجی

1, 2, 3, 4, 5, 6

اگرچه به نظر می رسد این روش برای کپی کردن آرایه ها کاملا کارآمد است ، اما مشکلی در این مورد وجود دارد.

اگر عناصر یک آرایه را در مثال بالا تغییر دهید ، عناصر مربوط به آرایه دیگر نیز تغییر می کند.

  1. class AssignmentOperator {
  2. public static void main(String[] args) {
  3. int [] numbers = {1, 2, 3, 4, 5, 6};
  4. int [] positiveNumbers = numbers; // copying arrays
  5. numbers[0] = -1;
  6. for (int number: positiveNumbers) {
  7. System.out.print(number + “, “);
  8. }
  9. }
  10. }

خروجی

-1, 2, 3, 4, 5, 6

هنگامی که اولین عنصر آرایه numbers به -1 تغییر می کند، اولین عنصر آرایه positiveNumbers نیز به -1 تبدیل می شود. به این دلیل که هر دو آرایه به یک شیء آرایه یکسان اشاره دارند.

به این کار کپی سطحی گفته می شود.

با این حال ، بیشتر اوقات ، به جای کپی سطحی ، به کپی عمیق نیاز داریم. یک کپی عمیق مقادیر ایجاد شی آرایه جدید را کپی می کند.

ادامه مطلب...