Farzad Afi Logo

FarzadAfi

آموزش تخصصی برنامه نویسی

String in java | رشته ها در جاوا

📖توضیحات درس

🎥 این ویدیو قسمت یازدهم از بوت‌کمپ رایگان جاوا است. ☕️ رشته‌ها در جاوا (String) 📝 در این جلسه با نوع داده‌ای String در جاوا آشنا می‌شویم؛ یکی از پرکاربردترین نوع داده‌ها در برنامه‌نویسی که برای کار با متن‌ها استفاده می‌شود. با بررسی مثال‌های مختلف و تمرین‌های متنوع، با روش‌های تعریف، مقایسه، تغییر و پردازش رشته‌ها بیشتر آشنا خواهیم شد. 🔗 لینک سورس کد این جلسه: 💻 https://github.com/farzadafi/ProgrammingByFarzadAfi/tree/master/src/h_string 👥 گروه پرسش و پاسخ تلگرام: programmingByFarzadAfi 💬 گروه پرسش و پاسخ بله: @programming_by_farzadafi ❓ هر سوالی داشتید، می‌توانید در این گروه بپرسید تا من یا مربی‌های حاضر راهنمایی‌تان کنیم. 🎓 بوت‌کمپ رایگان جاوا – آموزش تمرین‌محور برای یادگیری عمیق و ورود به بازار کار.
01:57:40🎯رایگان

📄جزوه

مفاهیم کلیدی

  • String
    در زبان جاوا، رشته یا String به عنوان یک دنباله از کاراکترها (Sequence of Characters) تعریف می‌شود. برخلاف انواع داده ساده، String یک کلاس از پیش تعریف شده است و داده‌های آن به صورت شیء (Object) در حافظه مدیریت می‌شوند.

  • Non-Primitive Type
    رشته‌ها در جاوا جزو ۸ نوع داده اصلی (int, boolean, double و غیره) نیستند. این یعنی رشته‌ها یک نوع مرجع (Reference Type) محسوب می‌شوند و ویژگی‌ها و متدهای خاص خود را دارند.

  • Method length
    این متد تعداد کاراکترهای موجود در یک رشته را به صورت یک عدد صحیح (int) بازمی‌گرداند.

  • Method charAt
    برای دسترسی به یک کاراکتر خاص در یک موقعیت مشخص (Index) از رشته استفاده می‌شود. ایندکس‌ها در جاوا از صفر شروع می‌شوند.

  • Method toCharArray
    این متد کل رشته را به یک آرایه از کاراکترها (char[]) تبدیل می‌کند تا بتوان به راحتی با استفاده از حلقه‌ها روی تک‌تک اعضا پیمایش کرد.

  • Method equals
    این متد برای مقایسه محتوای دو رشته با یکدیگر استفاده می‌شود. در جاوا برای بررسی برابری مقدار دو رشته، حتماً باید از این متد به جای عملگر == استفاده کرد.

  • Method substring
    برای استخراج بخشی از یک رشته (زیر‌رشته) استفاده می‌شود. این متد می‌تواند نقطه شروع یا بازه‌ای از شروع تا پایان را دریافت کند.

  • Concatenation
    عمل چسباندن دو یا چند رشته به یکدیگر که هم از طریق متد concat و هم با استفاده از عملگر + امکان‌پذیر است.

نکات مهم مصاحبه‌ای

  • تفاوت عملگر == با متد equals در چیست؟
    عملگر == آدرس حافظه (Reference) دو شیء را با هم مقایسه می‌کند، در حالی که متد equals محتوای متنی داخل رشته‌ها را بررسی می‌کند. برای رشته‌ها همیشه باید از equals استفاده کرد.

  • چرا رشته‌ها در جاوا Primitive Type نیستند؟
    چون رشته‌ها اشیائی از کلاس String هستند که متدهای آماده زیادی برای پردازش متن در اختیار برنامه‌نویس قرار می‌دهند، در حالی که انواع primitive فقط مقادیر ساده را ذخیره می‌کنند و متد ندارند.

  • خروجی متد substring(3, 5) شامل چه کاراکترهایی است؟
    این متد از ایندکس ۳ شروع کرده و تا قبل از ایندکس ۵ را برمی‌گرداند (یعنی کاراکترهای ایندکس ۳ و ۴). کاراکتر مربوط به ایندکس پایانی در خروجی لحاظ نمی‌شود.

  • تأثیر دستور return در وسط یک متد چیست؟
    به محض اجرای دستور return در هر جای متد، اجرای آن متد بلافاصله متوقف شده و مقدار مشخص شده به فراخوان‌کننده بازگردانده می‌شود؛ کدهای بعد از آن خط دیگر اجرا نخواهند شد.

مثال یا سناریوی کاربردی

سناریو: اعتبارسنجی شماره موبایل در این مثال، برنامه‌ای طراحی شده که یک رشته را از کاربر می‌گیرد و بررسی می‌کند که آیا طبق استانداردهای تعریف شده یک شماره موبایل معتبر است یا خیر.

مراحل منطقی: ۱. ابتدا طول رشته بررسی می‌شود که باید دقیقاً ۱۱ کاراکتر باشد. ۲. بررسی می‌شود که رشته با پیش‌شماره "09" شروع شده باشد. ۳. تمام کاراکترها باید عدد باشند (نباید شامل حروف یا علامت باشد).

نمونه کد خلاصه شده:

public static boolean isValidPhone(String phone) {
    // شرط اول: طول رشته
    if (phone.length() != 11) return false;

    // شرط دوم: شروع با 09
    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:
    این کلاس متدهای کاربردی مفیدی مانند isDigit (بررسی عدد بودن)، isLetter (بررسی حرف بودن) و isWhitespace (بررسی فاصله بودن) دارد که در پردازش رشته‌ها بسیار راهگشا هستند.

  • تغییر حالت حروف:
    با استفاده از متدهای toLowerCase و toUpperCase می‌توانید کل رشته را به حروف کوچک یا بزرگ تبدیل کنید که در جستجوهای غیرحساس به حروف (Case-insensitive) بسیار کاربردی است.

  • بررسی وجود زیر‌رشته:
    متد contains بررسی می‌کند که آیا یک عبارت خاص در دل یک رشته بزرگتر وجود دارد یا خیر و خروجی آن به صورت boolean است.