String in java | رشته ها در جاوا
توضیحات جلسه
جزوه و مستندات
مفاهیم کلیدی
- String
در زبان جاوا، رشته یا String بهعنوان دنبالهای از کاراکترها (Sequence of Characters) تعریف میشود. برخلاف انواع داده ساده، String یک کلاس از پیش تعریفشده است و دادههای آن بهصورت شیء (Object) در حافظه مدیریت میشوند.
- Non-Primitive Type
رشتهها در جاوا جزو ۸ نوع داده اصلی، مانند int، boolean و double، نیستند. بنابراین، رشتهها یک نوع مرجع (Reference Type) محسوب میشوند و ویژگیها و متدهای خاص خود را دارند.
- Method length
متد length() تعداد کاراکترهای موجود در یک رشته را بهصورت یک عدد صحیح از نوع int برمیگرداند.
- Method charAt
متد charAt() برای دسترسی به یک کاراکتر مشخص در یک موقعیت معین (Index) از رشته استفاده میشود. ایندکسها در جاوا از 0 شروع میشوند.
- Method toCharArray
متد toCharArray() کل رشته را به آرایهای از کاراکترها، با نوع char[]، تبدیل میکند تا بتوان با استفاده از حلقهها روی تکتک اعضای آن پیمایش کرد.
- Method equals
متد equals() برای مقایسه محتوای دو رشته استفاده میشود. برای بررسی برابری مقدار دو رشته در جاوا، باید از equals() استفاده کرد، نه از عملگر ==.
- Method substring
متد substring() برای استخراج بخشی از یک رشته، یعنی زیررشته، کاربرد دارد. این متد میتواند ایندکس شروع یا بازهای از ایندکس شروع تا پایان را دریافت کند.
- Concatenation
عمل چسباندن دو یا چند رشته به یکدیگر را Concatenation مینامند. این کار هم با متد concat() و هم با عملگر + امکانپذیر است.
نکات مهم مصاحبهای
- تفاوت عملگر
==با متدequals()در چیست؟
عملگر == آدرس حافظه (Reference) دو شیء را مقایسه میکند؛ در حالی که متد equals() محتوای متنی داخل رشتهها را بررسی میکند. برای مقایسه مقدار رشتهها باید از equals() استفاده کرد.
- چرا رشتهها در جاوا
Primitive Typeنیستند؟
زیرا رشتهها اشیائی از کلاس String هستند و متدهای آماده متعددی برای پردازش متن در اختیار برنامهنویس قرار میدهند. در مقابل، انواع primitive فقط مقادیر ساده را ذخیره میکنند و متد ندارند.
- خروجی متد
substring(3, 5)شامل چه کاراکترهایی است؟
این متد از ایندکس 3 شروع میکند و کاراکترهای قبل از ایندکس 5 را برمیگرداند؛ یعنی کاراکترهای ایندکس 3 و 4. کاراکتر مربوط به ایندکس پایانی در خروجی لحاظ نمیشود.
- تأثیر دستور
returnدر وسط یک متد چیست؟
بهمحض اجرای return در هر بخش از متد، اجرای آن متد بلافاصله متوقف میشود و مقدار مشخصشده به فراخواننده بازمیگردد. کدهای بعد از return اجرا نخواهند شد.
مثال یا سناریوی کاربردی
سناریو: اعتبارسنجی شماره موبایل
در این مثال، برنامهای طراحی شده است که یک رشته را از کاربر دریافت میکند و بررسی میکند آیا طبق استانداردهای تعریفشده، شماره موبایل معتبر است یا خیر.
مراحل منطقی:
۱. ابتدا طول رشته بررسی میشود؛ طول شماره باید دقیقاً 11 کاراکتر باشد.
۲. بررسی میشود که رشته با پیششماره 09 شروع شده باشد.
۳. همه کاراکترها باید عدد باشند و رشته نباید شامل حرف یا علامت باشد.
نمونه کد خلاصهشده:
public static boolean isValidPhone(String phone) {
if (phone.length() != 11) {
return false;
}
if (!phone.startsWith("09")) {
return false;
}
for (int i = 0; i < phone.length(); i++) {
if (!Character.isDigit(phone.charAt(i))) {
return false;
}
}
return true;
}
بیشتر بدانید
- تفاوت
next()وnextLine():
در کلاس Scanner برای دریافت ورودی از کاربر، متد next() رشته را فقط تا اولین فاصله (Space) میخواند؛ اما متد nextLine() کل خط ورودی، همراه با فاصلهها، را دریافت میکند.
- کلاس
Character:
کلاس Character متدهای کاربردی مفیدی مانند isDigit() برای بررسی عدد بودن، isLetter() برای بررسی حرف بودن و isWhitespace() برای بررسی فاصله بودن دارد. این متدها در پردازش رشتهها بسیار کاربردی هستند.
- تغییر حالت حروف:
با استفاده از متدهای toLowerCase() و toUpperCase() میتوان کل رشته را به حروف کوچک یا بزرگ تبدیل کرد. این قابلیت در جستوجوهای غیرحساس به حروف (Case-insensitive) کاربرد فراوانی دارد.
- بررسی وجود زیررشته:
متد contains() بررسی میکند که آیا یک عبارت مشخص درون یک رشته بزرگتر وجود دارد یا خیر. خروجی این متد از نوع boolean است.
