کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش 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) کرده و متدهای تعریف شده در آن ها را فراخوانی کند.

آموزش Java

پیاده سازی CharSequence

CharSequence یک interface یا الگوی پیاده سازی برای ساخت و نمایش دنباله ای از کاراکترها است. سه کلاس String، StringBuffer و StringBuilder این interface را پیاده سازی می کنند. در واقع در Java می توان به کمک این سه کلاس String تعریف کرد.

آموزش Java

String در جاوا غیرقابل تغییر است که در اصطلاح به آن immutable گفته می شود. هر زمان که رشته ای را تغییر می دهید، در واقع یک نمونه ی جدید از این کلاس در حافظه ساخته می شود. برای استفاده از رشته هایی که قابل تغییر می باشند، می توانید از کلاس های StringBuffer و SringBuilder استفاده نمایید.

در زیر به شرح مفهوم String در جاوا و اینکه چگونه می توان از آن یک آبجکت ساخت می پردازیم.

شرح String در Java

به طور کلی، string دنباله ای از کاراکترها است. اما در جاوا، string یک آبجکت یا نمونه ی ساخته شده از روی یک کلاس است که توالی از کاراکترها را در خود جای می دهد. برای ساخت آّبجکت از جنس string بایستی از کلاس java.lang.String استفاده کرد.

شرح چگونگی و روش های مختلف ایجاد آبجکت String

می توانید به دو روش زیر یک آبجکت از جنس String ایجاد نمایید:

  1. قرار دادن کاراکترهای موردنظر داخل دابل کوتیشن ""/روش string literal
  2. با استفاده از کلیدواژه ی 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  
آموزش Java

در مثال بالا، تنها یک آبجکت از جنس 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 تعداد زیادی متد کاربردی برای انجام عملیات مختلف بر روی دنباله ای از کاراکترها ارائه می دهد که در زیر به آن ها اشاره می کنیم:

No.
متد
شرح متد
1
اندیس (شماره ی مکان قرارگیری) کاراکتر را به عنوان ورودی گرفته و در خروجی مقدار char متناظر (مقیم در آن اندیس) را برمی گرداند.
2
طول یا تعداد کاراکترهای موجود در رشته را برمی گرداند.
3
یک string به عنوان ورودی گرفته و پس از فرمت دهی آن بر اساس پارامتر اول، رشته ی فرمت دهی شده را در خروجی برمی گرداند.
4
static String format(Locale l, String format, Object... args)
رشته ی ورودی را بر اساس زبان کشور تعیین شده (پارامتر Locale) فرمت دهی نموده و آن را در خروجی برمی گرداند.
5
بخشی از کل رشته ورودی را از اندیس مشخص شده استخراج کرده و در خروجی برمی گرداند.
6
String substring(int beginIndex, int endIndex)
بخشی از کل رشته ی ورودی را از اندیس شروع تا اندیس پایان که توسط دو پارامتر مشخص می شوند، استخراج می نماید.
7
بررسی می کند آیا کاراکترهای ارسال شده به عنوان آرگومان در رشته ی موردنظر وجود دارند یا خیر. در صورت صحیح بودن مقدار true و در غیر این صورت false را برمی گرداند.
8
دو رشته ی ورودی را به یکدیگر متصل کرده و آن را در خروجی برمی گرداند.
9
static String join(CharSequence delimiter, Iterable elements)
دو رشته ی ورودی را با تفکیک کننده ی تعیین شده (در قالب پارامتر delimiter) به هم متصل کرده و پس از درج تفکیک کننده ی مزبور به ازای هر رشته، رشته ی حاصل را در خروجی برمی گرداند.
10
دو رشته را بر اساس محتوای آن بایدیگر مقایسه کرده و در صورتی که حتی یک کاراکتر در دو رشته با هم منطبق نباشد، مقدار بولی false را برمی گرداند.
11
بررسی می کند آیا رشته ورودی تهی است یا خیر.
12
رشته ی ارسال شده به عنوان ورودی را به انتهای رشته ی مورد نظر متصل کرده و آن را در خروجی بر می گرداند.
13
تمامی نمونه های char را در رشته ی مورد نظر پیدا کرده و آن را با مقدار جدید (پارامتر ورودی دوم) جایگزین می کند.
14
String replace(CharSequence old, CharSequence new)
تمامی نمونه های char در رشته ی مورد نظر (یا CharSequence) را پیدا کرده آن ها را با مقدار جدید جایگزین می کند.
15
دو رشته را با یکدیگر مقایسه کرده و در مقایسه ی آن ها نسبت به کوچک و بزرگی حروف حساس نمی باشد.
16
String[] split(String regex)
یک رشته را بر اساس مقدار پارامتر (الگویی که کاراکتر تجزیه را مشخص می کند) regex تجزیه (تکه تکه) کرده و آن را در خروجی مانند یک آرایه از کاراکترها برمی گرداند.
17
رشته ی ورودی را بر اساس مقدار regex تجزیه کرده و سپس با توجه به مقدار پارامتر دوم (limit) تعداد مشخصی از زیر رشته ها را در قالب آرایه برمی گرداند.
18
String intern()
رشته ی مورد نظر را با فرمت استاندارد و متعارف برمی گرداند.
با استفاده از این تابع می توان رشته ی مورد نظر را که فقط با کلیدواژه ی new از آن در حافظه ی heap نمونه سازی شده را از ناحیه ی pool حافظه فراخوانی کرد.
19
int indexOf(int ch)
اندیس مقدار char مورد نظر را برمی گرداند.
20
int indexOf(int ch, int fromIndex)
اندیس متناظر مقدار char، ارسال شده به عنوان آرگومان اول را با توجه به اندیس شروع که توسط پارامتر دوم مشخص می شود، برمی گرداند.
21
اندیس متناظر زیر رشته ی ارسال شده به عنوان آرگومان را برمی گرداند.
22
int indexOf(String substring, int fromIndex)
اندیس زیررشته ی ارسال شده به عنوان آرگومان را با توجه به مقدار پارامتر دوم که اندیس شروع را تعیین می کند، برمی گرداند.
23
رشته ی ورودی را به حروف کوچک تبدیل کرده و در خروجی برمی گرداند.
24
رشته ی ورودی را با توجه به زبان محلی، تعیین شده توسط پارامتر locale، به حروف کوچک تبدیل کرده و در خروجی برمی گرداند.
25
رشته ی ورودی را به حروف بزرگ تبدیل کرده و آن را در خروجی برمی گرداند.
26
String toUpperCase(Locale l)
رشته ی ورودی را با توجه به زبان محلی، تعیین شده توسط پارامتر locale، به حروف بزرگ تبدیل کرده و آن را در خروجی برمی گرداند.
27
فضای خالی را از ابتدا و انتهای رشته ی ورودی حذف کرده و رشته ی ویرایش شده را برمی گرداند.
28
مقدار ورودی را به رشته تبدیل کرده و آن را در خروجی برمی گرداند.
1396/07/26 15578 1911
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...