جاوا

جلسه ۱۱: آرایه ها در جاوا

class NewArray {
  public static void main(String[] args) {
    int[] myNumbers;
    myNumbers = new int[5];
    
    myNumbers[0] = 10;
    myNumbers[1] = 10;
    myNumbers[2] = 10;
    myNumbers[3] = 10;
    myNumbers[4] = 10;
    
    System.out.println("The array myNumbers has length " + myNumbers.length);
  
  }

}

پارامتر آرایه ای متد main (String[] args)

اکنون می توانید مشاهده کنید که main پارامتری به نام args ، از نوع آرایه String می گیرد. این پارامتر چه کاربردی دارد؟ اگر برنامه ای را از خط فرمان ویندوز (ترمینال روی یونیکس یا مک) اجرا کنید ، می توانید پارامترها را به برنامه منتقل کنید. به عنوان مثال ، دستور dir=”ltr”>wc README.txt برای شمارش کلمات داخل فایل README.txt می تواند در یک ترمینال یونیکس استفاده شود. اولین کلمه ، wc ، نام برنامه ای است که باید اجرا شود. کلمه دوم ، README.txt ، به صورت یک رشته داخل اولین مکان از آرایه رشته ای ، args ، منتقل می شود. مکانیسم مشابهی در C استفاده می شود ، اما از آنجا که آرایه های C طول خود را نمی دانند ، نحو اعلامیه تابع main در C کمی متفاوت است. در پایتون ، sys.argv می تواند برای واکشی آرگومان های خط فرمان بکار گرفته شود.

کلاس java.util.Arrays

اگرچه آرایه ها در جاوا شی هستند ، اما درون ساخت (built-in) هستند و همانطور که گفته شد ، خیلی انعطاف پذیر نیستند. کلاس Arrays در بسته java.util برخی متدهای کمکی را ارائه می دهد که به شما امکان می دهد کارهایی مانند مرتب سازی ، جستجوی دودویی یا چاپ نمایش رشته ای از یک آرایه را انجام دهید. برخلاف برخی از کلاسهای دیگر ، مانند Math یا String که به طور پیش فرض در دسترس هستند ، باید با استفاده از یک عبارت import در بالای هر فایلی که می خواهید از آن استفاده کنید ، از Java بخواهید کلاس Arrays را در دسترس شما قرار دهد:
import java.util.Arrays;

class ArraysExample {
  public static void main(String[] args) {
    int[] myNumbers = {42, 1, 17, 27, 16};
    Arrays.sort(myNumbers);
    System.out.println(Arrays.toString(myNumbers));
    
  }
}
توجه داشته باشید که Arrays.sort در جا کار می کند یعنی برای مرتب سازی آرایه از همان آرایه استفاده می کند و هنگام مرتب سازی حداکثر تعداد ثابتی از عناصر آرایه را خارج آرایه ذخیره می کند. همچنین توجه داشته باشید که چندین متد toString اورلود شده وجود دارد که روی آرایه های حاوی int ، double یا حتی اشیا کار می کنند. هیچ متدی برای معکوس کردن ترتیب عناصر آرایه وجود ندارد. برای معکوس کردن ترتیب عناصر آرایه یا باید متد خودتان را بسازید و یا اینکه از ArrayList بجای آرایه استفاده کنید.
class ArrayExample {
  public static void main(String[] args) {
    
    // an array of ints
    int[] myNumbers = {10, 15, 20, 25, 30};
   
    System.out.println(myNumbers[2]);
    
    // arrays have an instance variable that stores
    //  the length of the array:
    System.out.println(myNumbers.length);
    
    // Arrays can be of any type a variable can be:
    String[] myStrings = {"Narnia", "Oz", "Neverland"}; 
    System.out.println("The Wizard of " + myStrings[1]);
    
    // arrays can be modified
    myStrings[2] = "Wonderland";
  }
}
توجه داشته باشید که اگرچه می توانید طول یک رشته را با استفاده از متد ()someString.length بدست آورید ، اما طول آرایه را می توانید از طریق متغیر نمونه someArray.length ، بدست آورید. این ناسازگاری را می توان یک نقص طراحی در جاوا دانست. فقط باید نحوه بدست آوردن این طول ها را به یاد داشته باشید.

اعلان آرایه ها

مانند هر متغیر دیگری ، یک آرایه ابتدا باید اعلام و نوع آن مشخص شود. آرایه ای از مقادیر int با نوع []int مشخص می شود. می توانید براکت های خالی را به عنوان اختصار کلمه "array" در نظر بگیرید: dir=”ltr”>int[] myNumbers; این فقط اعلان متغیری است که آرایه را نگه می دارد. آرایه هنوز وجود ندارد و بنابراین طولی هم ندارد.

مقداردهی به آرایه ها: علامت گذاری میانبر

اغلب می خواهیم مقادیر اولیه را به یک آرایه بدهیم. قبلاً روش میانبر انجام این کار را دیده اید: dir=”ltr”>int[] myNumbers = {10, 15, 20, 25, 30}; روش میانبر به طور خودکار آرایه ای با طول مورد نیاز ایجاد می کند و آرایه را با مقادیر داده شده مقداردهی اولیه می کند. پس از کد بالا طول myNumbers برابر ۵ است و طول آن قابل تغییر نیست. مقداردهی میانبر فقط در زمان اعلام آرایه قابل استفاده هستند.

اعلان آرایه ها با کلمه کلیدی new

یک آرایه ، مانند String ، نوع خاصی از شی های درون ساخت جاوا است. کد dir=”ltr”>int[] myNumbers; متغیر myNumbers را اعلام می کند ، اما هنوز شی آرایه ای را ایجاد نکرده است. کلمه کلیدی new در جاوا برای ایجاد اشیا، از جمله آرایه ها استفاده می شود.
class NewArray {
  public static void main(String[] args) {
    int[] myNumbers;
    myNumbers = new int[5];
    
    myNumbers[0] = 10;
    myNumbers[1] = 10;
    myNumbers[2] = 10;
    myNumbers[3] = 10;
    myNumbers[4] = 10;
    
    System.out.println("The array myNumbers has length " + myNumbers.length);
  
  }

}

پارامتر آرایه ای متد main (String[] args)

اکنون می توانید مشاهده کنید که main پارامتری به نام args ، از نوع آرایه String می گیرد. این پارامتر چه کاربردی دارد؟ اگر برنامه ای را از خط فرمان ویندوز (ترمینال روی یونیکس یا مک) اجرا کنید ، می توانید پارامترها را به برنامه منتقل کنید. به عنوان مثال ، دستور dir=”ltr”>wc README.txt برای شمارش کلمات داخل فایل README.txt می تواند در یک ترمینال یونیکس استفاده شود. اولین کلمه ، wc ، نام برنامه ای است که باید اجرا شود. کلمه دوم ، README.txt ، به صورت یک رشته داخل اولین مکان از آرایه رشته ای ، args ، منتقل می شود. مکانیسم مشابهی در C استفاده می شود ، اما از آنجا که آرایه های C طول خود را نمی دانند ، نحو اعلامیه تابع main در C کمی متفاوت است. در پایتون ، sys.argv می تواند برای واکشی آرگومان های خط فرمان بکار گرفته شود.

کلاس java.util.Arrays

اگرچه آرایه ها در جاوا شی هستند ، اما درون ساخت (built-in) هستند و همانطور که گفته شد ، خیلی انعطاف پذیر نیستند. کلاس Arrays در بسته java.util برخی متدهای کمکی را ارائه می دهد که به شما امکان می دهد کارهایی مانند مرتب سازی ، جستجوی دودویی یا چاپ نمایش رشته ای از یک آرایه را انجام دهید. برخلاف برخی از کلاسهای دیگر ، مانند Math یا String که به طور پیش فرض در دسترس هستند ، باید با استفاده از یک عبارت import در بالای هر فایلی که می خواهید از آن استفاده کنید ، از Java بخواهید کلاس Arrays را در دسترس شما قرار دهد:
import java.util.Arrays;

class ArraysExample {
  public static void main(String[] args) {
    int[] myNumbers = {42, 1, 17, 27, 16};
    Arrays.sort(myNumbers);
    System.out.println(Arrays.toString(myNumbers));
    
  }
}
توجه داشته باشید که Arrays.sort در جا کار می کند یعنی برای مرتب سازی آرایه از همان آرایه استفاده می کند و هنگام مرتب سازی حداکثر تعداد ثابتی از عناصر آرایه را خارج آرایه ذخیره می کند. همچنین توجه داشته باشید که چندین متد toString اورلود شده وجود دارد که روی آرایه های حاوی int ، double یا حتی اشیا کار می کنند. هیچ متدی برای معکوس کردن ترتیب عناصر آرایه وجود ندارد. برای معکوس کردن ترتیب عناصر آرایه یا باید متد خودتان را بسازید و یا اینکه از ArrayList بجای آرایه استفاده کنید.آرایه ها در جاوا ، مانند لیست های پایتون ، آرایه های جاوا اسکریپت و آرایه های C ، مقادیر مرتب شده را ذخیره می کنند. اندازه آرایه های جاوا را نمی توان بدون ایجاد آرایه جدید و کپی مقادیر آرایه قدیمی در آرایه جدید تغییر داد. آرایه های جاوا ، مانند آرایه های C ، نسبت به نمونه های خود در پایتون یا جاوا اسکریپت محدودتر هستند. آرایه های جاوا پس از ایجاد نمی توانند تغییر اندازه دهند و باید نوع مقادیری که می توان درون آرایه ذخیره کرد را نیز هنگام اعلان آن مشخص کرد. کلاس ArrayList انعطاف پذیرتر است و یک جایگزین برای آرایه ها است ، اما در ابتدا نحوه استفاده از آرایه ها را بررسی می کنیم. نمونه ای از استفاده از آرایه ها:
class ArrayExample {
  public static void main(String[] args) {
    
    // an array of ints
    int[] myNumbers = {10, 15, 20, 25, 30};
   
    System.out.println(myNumbers[2]);
    
    // arrays have an instance variable that stores
    //  the length of the array:
    System.out.println(myNumbers.length);
    
    // Arrays can be of any type a variable can be:
    String[] myStrings = {"Narnia", "Oz", "Neverland"}; 
    System.out.println("The Wizard of " + myStrings[1]);
    
    // arrays can be modified
    myStrings[2] = "Wonderland";
  }
}
توجه داشته باشید که اگرچه می توانید طول یک رشته را با استفاده از متد ()someString.length بدست آورید ، اما طول آرایه را می توانید از طریق متغیر نمونه someArray.length ، بدست آورید. این ناسازگاری را می توان یک نقص طراحی در جاوا دانست. فقط باید نحوه بدست آوردن این طول ها را به یاد داشته باشید.

اعلان آرایه ها

مانند هر متغیر دیگری ، یک آرایه ابتدا باید اعلام و نوع آن مشخص شود. آرایه ای از مقادیر int با نوع []int مشخص می شود. می توانید براکت های خالی را به عنوان اختصار کلمه "array" در نظر بگیرید: dir=”ltr”>int[] myNumbers; این فقط اعلان متغیری است که آرایه را نگه می دارد. آرایه هنوز وجود ندارد و بنابراین طولی هم ندارد.

مقداردهی به آرایه ها: علامت گذاری میانبر

اغلب می خواهیم مقادیر اولیه را به یک آرایه بدهیم. قبلاً روش میانبر انجام این کار را دیده اید: dir=”ltr”>int[] myNumbers = {10, 15, 20, 25, 30}; روش میانبر به طور خودکار آرایه ای با طول مورد نیاز ایجاد می کند و آرایه را با مقادیر داده شده مقداردهی اولیه می کند. پس از کد بالا طول myNumbers برابر ۵ است و طول آن قابل تغییر نیست. مقداردهی میانبر فقط در زمان اعلام آرایه قابل استفاده هستند.

اعلان آرایه ها با کلمه کلیدی new

یک آرایه ، مانند String ، نوع خاصی از شی های درون ساخت جاوا است. کد dir=”ltr”>int[] myNumbers; متغیر myNumbers را اعلام می کند ، اما هنوز شی آرایه ای را ایجاد نکرده است. کلمه کلیدی new در جاوا برای ایجاد اشیا، از جمله آرایه ها استفاده می شود.
class NewArray {
  public static void main(String[] args) {
    int[] myNumbers;
    myNumbers = new int[5];
    
    myNumbers[0] = 10;
    myNumbers[1] = 10;
    myNumbers[2] = 10;
    myNumbers[3] = 10;
    myNumbers[4] = 10;
    
    System.out.println("The array myNumbers has length " + myNumbers.length);
  
  }

}

پارامتر آرایه ای متد main (String[] args)

اکنون می توانید مشاهده کنید که main پارامتری به نام args ، از نوع آرایه String می گیرد. این پارامتر چه کاربردی دارد؟ اگر برنامه ای را از خط فرمان ویندوز (ترمینال روی یونیکس یا مک) اجرا کنید ، می توانید پارامترها را به برنامه منتقل کنید. به عنوان مثال ، دستور dir=”ltr”>wc README.txt برای شمارش کلمات داخل فایل README.txt می تواند در یک ترمینال یونیکس استفاده شود. اولین کلمه ، wc ، نام برنامه ای است که باید اجرا شود. کلمه دوم ، README.txt ، به صورت یک رشته داخل اولین مکان از آرایه رشته ای ، args ، منتقل می شود. مکانیسم مشابهی در C استفاده می شود ، اما از آنجا که آرایه های C طول خود را نمی دانند ، نحو اعلامیه تابع main در C کمی متفاوت است. در پایتون ، sys.argv می تواند برای واکشی آرگومان های خط فرمان بکار گرفته شود.

کلاس java.util.Arrays

اگرچه آرایه ها در جاوا شی هستند ، اما درون ساخت (built-in) هستند و همانطور که گفته شد ، خیلی انعطاف پذیر نیستند. کلاس Arrays در بسته java.util برخی متدهای کمکی را ارائه می دهد که به شما امکان می دهد کارهایی مانند مرتب سازی ، جستجوی دودویی یا چاپ نمایش رشته ای از یک آرایه را انجام دهید. برخلاف برخی از کلاسهای دیگر ، مانند Math یا String که به طور پیش فرض در دسترس هستند ، باید با استفاده از یک عبارت import در بالای هر فایلی که می خواهید از آن استفاده کنید ، از Java بخواهید کلاس Arrays را در دسترس شما قرار دهد:
import java.util.Arrays;

class ArraysExample {
  public static void main(String[] args) {
    int[] myNumbers = {42, 1, 17, 27, 16};
    Arrays.sort(myNumbers);
    System.out.println(Arrays.toString(myNumbers));
    
  }
}
توجه داشته باشید که Arrays.sort در جا کار می کند یعنی برای مرتب سازی آرایه از همان آرایه استفاده می کند و هنگام مرتب سازی حداکثر تعداد ثابتی از عناصر آرایه را خارج آرایه ذخیره می کند. همچنین توجه داشته باشید که چندین متد toString اورلود شده وجود دارد که روی آرایه های حاوی int ، double یا حتی اشیا کار می کنند. هیچ متدی برای معکوس کردن ترتیب عناصر آرایه وجود ندارد. برای معکوس کردن ترتیب عناصر آرایه یا باید متد خودتان را بسازید و یا اینکه از ArrayList بجای آرایه استفاده کنید.

نوشته های مشابه

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا