مشخصات مقاله
-
1911
-
0.0
-
15578
-
0
-
0
آموزش Java – String در Java
آموزش Java – String در Java
در جاوا، String دنباله ای از کاراکترها (char value) است. آرایه ای از کاراکترها را نیز می توان یک رشته ی java در نظر گرفت و تقریبا عملکردی مشابه را ایفا می کند. مثال:
char[] ch={'j','a','v','a','t','p','o','i','n','t'};
String s=new String(ch);
معادل دستور زیر می باشد:
String s="javatpoint";
کلاس String در جاوا تعداد زیادی متد در اختیار توسعه دهنده می دهد که می توان با استفاده از آن عملیات مختلفی را بر روی متغیر از جنس string انجام داد. از جمله ی این متدها می توان به compare()، concat()، equals()، split()، length()، replace()، comapreTo()، intern()، substring() اشاره کرد.
کلاس java.lang.String می تواند اینترفیس های Serializable، Comparable و CharSequence را پیاده سازی (implement) کرده و متدهای تعریف شده در آن ها را فراخوانی کند.
پیاده سازی CharSequence
CharSequence یک interface یا الگوی پیاده سازی برای ساخت و نمایش دنباله ای از کاراکترها است. سه کلاس String، StringBuffer و StringBuilder این interface را پیاده سازی می کنند. در واقع در Java می توان به کمک این سه کلاس String تعریف کرد.
String در جاوا غیرقابل تغییر است که در اصطلاح به آن immutable گفته می شود. هر زمان که رشته ای را تغییر می دهید، در واقع یک نمونه ی جدید از این کلاس در حافظه ساخته می شود. برای استفاده از رشته هایی که قابل تغییر می باشند، می توانید از کلاس های StringBuffer و SringBuilder استفاده نمایید.
در زیر به شرح مفهوم String در جاوا و اینکه چگونه می توان از آن یک آبجکت ساخت می پردازیم.
شرح String در Java
به طور کلی، string دنباله ای از کاراکترها است. اما در جاوا، string یک آبجکت یا نمونه ی ساخته شده از روی یک کلاس است که توالی از کاراکترها را در خود جای می دهد. برای ساخت آّبجکت از جنس string بایستی از کلاس java.lang.String استفاده کرد.
شرح چگونگی و روش های مختلف ایجاد آبجکت String
می توانید به دو روش زیر یک آبجکت از جنس String ایجاد نمایید:
- قرار دادن کاراکترهای موردنظر داخل دابل کوتیشن ""/روش string literal
- با استفاده از کلیدواژه ی new
ساخت آبجکت String به روش string literal
در این روش توسعه دهنده برای تعریف متغیر از جنس string، (پس از تعریف متغیری از جنس String) صرفا تعدادی کاراکتر را داخل "" درج می نماید. مثال:
String s="welcome";
هر بار که توسعه دهنده یک متغیر string را به این روش ایجاد می کند، دستگاه مجازی جاوا (JVM) اول بررسی می کند، آیا این string literal از قبل در constant pool وجود دارد یا خیر. اگر string قبلا در constant pool موجود نباشد، یک نمونه ی جدید string ساخته شده و در pool قرار داده می شود ("constant pool" به مجموعه ای از بایت های فرمت دهی شده در یک class file اشاره دارد که برای class loader جاوا قابل فهم می باشد. "string های" داخل آن در واقع serialize شده هستند نه آبجکت های جاوا و همچنین ثوابت از انواع مختلف نظیر int را در خود کپسوله می کند). مثال:
String s1="Welcome"; String s2="Welcome";//will not create new instance
در مثال بالا، تنها یک آبجکت از جنس string ساخته می شود. ابتدا JVM هیچ آبجکتی از جنس string که دارای مقدار "welcome" باشد در constant pool پیدا نمی کند و به همین خاطر یک آبجکت جدید ایجاد می نماید. پس از آن، آبجکتی از جنس string که حاوی مقدار "Welcome" می باشد را در pool یافته، اما این بار دوباره یک آبجکت جدید از نوع یکسان ایجاد نمی کند، بلکه اشاره گری (reference) به همان نمونه را برمی گرداند.
آبجکت های از جنس String در ناحیه ی خاصی از حافظه به نام string constant pool ذخیره و نگه داری می شوند.
چرا جاوا از مفهوم String literal استفاده می کند؟
در پاسخ باید گفت برای اینکه جاوا از میزان حافظه ی کمتری استفاده کند. به عبارت دیگر زمانی که آبجکتی از قبل ایجاد شده و در string constant pool جایگذاری شده باشد، آنگاه جاوا پس از یافتن آن دوباره همان آبجکت را تولید نمی کند و حافظه ی اضافی اشغال نمی نماید.
ایجاد آبجکت به وسیله ی کلیدواژه ی new
دستور تعریف آبجکت جدید به وسیله ی کلیدواژه ی new:
String s=new String("Welcome");//creates two objects and one reference variable
زمانی که با کلیدواژه ی new آبجکت سازی می شود، دستگاه مجازی جاوا (JVM) یک آبجکت جدید از جنس string در ناحیه ی غیر pool از حافظه ی heap ایجاد می نماید. سپس مقدار نوشتاری "Welcome" را در constant pool مربوط به string قرار می دهد. متغیر s به آبجکت مقیم در ناحیه ی غیر pool (non pool) heap اشاره دارد.
نمونه ی کاربردی از String در Java
public class StringExample{
public static void main(String args[]){
String s1="java";//creating string by java string literal
char ch[]={'s','t','r','i','n','g','s'};
String s2=new String(ch);//converting char array to string
String s3=new String("example");//creating java string by new keyword
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
}}
خروجی:
java strings example
متدهای کلاس String در Java
کلاس java.lang.String تعداد زیادی متد کاربردی برای انجام عملیات مختلف بر روی دنباله ای از کاراکترها ارائه می دهد که در زیر به آن ها اشاره می کنیم:
با استفاده از این تابع می توان رشته ی مورد نظر را که فقط با کلیدواژه ی new از آن در حافظه ی heap نمونه سازی شده را از ناحیه ی pool حافظه فراخوانی کرد.