آموزش کلاس و اشیاء در جاوا (به زبان کاملا ساده)

رتبه: 0 ار 0 رای sssss
آموزش کلاس و اشیاء در جاوا
نویسنده: میلاد حیدری زمان مطالعه 5 دقیقه

در این آموزش با روش های مختلفی که می توانید از آن ها برای کپی کردن آرایه ها (هم یک بعدی و هم دو بعدی) در جاوا استفاده کنید، آشنا می شوید.

چندین تکنیک وجود دارد که می توانید برای کپی کردن آرایه ها در جاوا استفاده کنید.

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

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

  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. 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. }

خروجی

-۱, ۲, ۳, ۴, ۵, ۶

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

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

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

۲- استفاده از ساختار حلقه برای کپی کردن آرایه ها

بیایید یک مثال بزنیم:

  1. import java.util.Arrays;
  2. class ArraysCopy {
  3. public static void main(String[] args) {
  4. int [] source = {1, 2, 3, 4, 5, 6};
  5. int [] destination = new int[6];
  6. for (int i = 0; i < source.length; ++i) {
  7. destination[i] = source[i];
  8. }
  9. // converting array to string
  10. System.out.println(Arrays.toString(destination));
  11. }
  12. }

خروجی

[۱, ۲, ۳, ۴, ۵, ۶]

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

آرایه منبع و مقصد مرجع یکسان ندارند (کپی عمیق). به این معنی که اگر عناصر یک آرایه (یا منبع یا مقصد) تغییر یابد ، عناصر مربوط به آرایه دیگر تغییر نمی کند.

از متد ()toString برای تبدیل آرایه به رشته (فقط برای خروجی) استفاده می شود.

روش بهتری (بهتر از حلقه ها) برای کپی کردن آرایه ها در جاوا با استفاده از ()arraycopy و ()copyOfRange وجود دارد.

۳- کپی کردن آرایه ها با ()arraycopy

کلاس System شامل متد ()arraycopy است که به شما امکان می دهد داده ها را از یک آرایه به دیگری کپی کنید.

روش ()arraycopy کارآمد و انعطاف پذیر است. این روش به شما امکان می دهد بخش مشخصی از آرایه منبع را به آرایه مقصد کپی کنید.

public static void arraycopy(Object src, int srcPos,

Object dest, int destPos, int length)

در اینجا،

  • src – آرایه ای که می خواهید کپی کنید
  • srcPos – موقعیت شروع (شاخص) در آرایه src
  • dest – عناصر آرایه src در این آرایه کپی می شوند
  • destPos – موقعیت شروع (شاخص) در آرایه مقصد
  • length – تعداد عناصر برای کپی کردن

بیایید یک مثال بزنیم:

  1. // To use Arrays.toString() method
  2. import java.util.Arrays;
  3. class ArraysCopy {
  4. public static void main(String[] args) {
  5. int[] n1 = {2, 3, 12, 4, 12, -2};
  6. int[] n3 = new int[5];
  7. // Creating n2 array of having length of n1 array
  8. int[] n2 = new int[n1.length];
  9. // copying entire n1 array to n2
  10. System.arraycopy(n1, 0, n2, 0, n1.length);
  11. System.out.println(“n2 = ” + Arrays.toString(n2));
  12. // copying elements from index 2 on n1 array
  13. // copying element to index 1 of n3 array
  14. // ۲ elements will be copied
  15. System.arraycopy(n1, 2, n3, 1, 2);
  16. System.out.println(“n3 = ” + Arrays.toString(n3));
  17. }
  18. }

خروجی

n2 = [2, 3, 12, 4, 12, -2]

n3 = [0, 12, 4, 0, 0]

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

۴- کپی کردن آرایه ها با روش ()copyOfRange

علاوه بر این ، می توانید از روش ()copyOfRange تعریف شده در کلاس java.util.Arrays برای کپی کردن آرایه ها استفاده کنید. احتیاجی نیست قبل استفاده از این روش آرایه مقصد را ایجاد کنید.

در این جا نحوه انجام این کار آورده شده است.

  1. // To use toString() and copyOfRange() method
  2. import java.util.Arrays;
  3. class ArraysCopy {
  4. public static void main(String[] args) {
  5. int[] source = {2, 3, 12, 4, 12, -2};
  6. // copying entire source array to destination
  7. int[] destination1 = Arrays.copyOfRange(source, 0, source.length);
  8. System.out.println(“destination1 = ” + Arrays.toString(destination1));
  9. // copying from index 2 to 5 (5 is not included)
  10. int[] destination2 = Arrays.copyOfRange(source, 2, 5);
  11. System.out.println(“destination2 = ” + Arrays.toString(destination2));
  12. }
  13. }

خروجی

destination1 = [2, 3, 12, 4, 12, -2]

destination2 = [12, 4, 12]

۵- کپی کردن آرایه های دو بعدی با استفاده از حلقه

مثالی برای کپی کردن آرایه های دو بعدی نامنظم با استفاده از حلقه وجود دارد:

  1. import java.util.Arrays;
  2. class ArraysCopy {
  3. public static void main(String[] args) {
  4. int[][] source = {
  5. {۱, ۲, ۳, ۴},
  6. {۵, ۶},
  7. {۰, ۲, ۴۲, -۴, ۵}
  8. };
  9. int[][] destination = new int[source.length][];
  10. for (int i = 0; i < destination.length; ++i) {
  11. // allocating space for each row of destination array
  12. destination[i] = new int[source[i].length];
  13. for (int j = 0; j < destination[i].length; ++j) {
  14. destination[i][j] = source[i][j];
  15. }
  16. }
  17. // displaying destination array
  18. System.out.println(Arrays.deepToString(destination));
  19. }
  20. }

خروجی

[[۱, ۲, ۳, ۴], [۵, ۶], [۰, ۲, ۴۲, -۴, ۵]]

در کد بالا از روش() Arrays.deepToString  استفاده کردیم. ()deepToString نمایش بهتری از یک آرایه چند بعدی را مانند یک آرایه ۲ بعدی فراهم می کند.

می توانید حلقه داخلی کد فوق را با ()System.arraycopy یا()Arrays.copyOf مانند آرایه یک بعدی جایگزین کنید.

در اینجا مثالی برای انجام همان کار با روش ()arraycopy آورده شده است.

  1. import java.util.Arrays;
  2. class AssignmentOperator {
  3. public static void main(String[] args) {
  4. int[][] source = {
  5. {۱, ۲, ۳, ۴},
  6. {۵, ۶},
  7. {۰, ۲, ۴۲, -۴, ۵}
  8. };
  9. int[][] destination = new int[source.length][];
  10. for (int i = 0; i < source.length; ++i) {
  11. // allocating space for each row of destination array
  12. destination[i] = new int[source[i].length];
  13. System.arraycopy(source[i], 0, destination[i], 0, destination[i].length);
  14. }
  15. // displaying destination array
  16. System.out.println(Arrays.deepToString(destination));
  17. }
  18. }
profile name
میلاد حیدری

بخندید کتاب بخونید و خوب باشید تا جامعه مون به آرامش برسه. لطفا ! هر سوالی دارید در بخش نظرات مطرح کنید. ما یا سایر هموطنان عزیز پاسخ خواهیم داد. برای کمک به سایت ما و گسترش آموزش در بین هموطنان، در سایتها، وبلاگ ها و شبکه های اجتماعی لینک سایت ما را درج کنید.

مطالب پیشنهادی برای شما

دیدگاهتان را بنویسید

1 2 3 4 5

0 نظر درباره «آموزش کلاس و اشیاء در جاوا (به زبان کاملا ساده)»

    هنوز نظری برای این بخش ثبت نشده است
مشاهده همه نظرات
سبد خرید
سبد خرید شما خالی است
× جهت نصب روی دکمه زیر در گوشی کلیک نمائید
آی او اس
سپس در مرحله بعد برروی دکمه "Add To Home Screen" کلیک نمائید