سه شنبه ۲۷ خرداد ۹۹ | ۱۲:۲۴
۱,۷۱۳ بازديد
۱- كپي كردن آرايه ها با استفاده از عملگر انتساب
بياييد مثالي بزنيم ،
- class CopyArray {
- public static void main(String[] args) {
- int [] numbers = {1, 2, 3, 4, 5, 6};
- int [] positiveNumbers = numbers; // copying arrays
- for (int number: positiveNumbers) {
- System.out.print(number + “, “);
- }
- }
- }
خروجي
۱, ۲, ۳, ۴, ۵, ۶
اگرچه به نظر مي رسد اين روش براي كپي كردن آرايه ها كاملا كارآمد است ، اما مشكلي در اين مورد وجود دارد.
اگر عناصر يك آرايه را در مثال بالا تغيير دهيد ، عناصر مربوط به آرايه ديگر نيز تغيير مي كند.
- class AssignmentOperator {
- public static void main(String[] args) {
- int [] numbers = {1, 2, 3, 4, 5, 6};
- int [] positiveNumbers = numbers; // copying arrays
- numbers[0] = -1;
- for (int number: positiveNumbers) {
- System.out.print(number + “, “);
- }
- }
- }
خروجي
-۱, ۲, ۳, ۴, ۵, ۶
هنگامي كه اولين عنصر آرايه numbers به -۱ تغيير مي كند، اولين عنصر آرايه positiveNumbers نيز به -۱ تبديل مي شود. به اين دليل كه هر دو آرايه به يك شيء آرايه يكسان اشاره دارند.
به اين كار كپي سطحي گفته مي شود.
با اين حال ، بيشتر اوقات ، به جاي كپي سطحي ، به كپي عميق نياز داريم. يك كپي عميق مقادير ايجاد شي آرايه جديد را كپي مي كند.