جلسه شماره 11رایگان

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

01:57:40

توضیحات جلسه

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

جزوه و مستندات

مفاهیم کلیدی

  • 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 است.