CodeGym /وبلاگ جاوا /Random-FA /رشته های جاوا
John Squirrels
مرحله
San Francisco

رشته های جاوا

در گروه منتشر شد

String در جاوا چیست؟

در برنامه نویسی، رشته ها بسیار رایج هستند. رشته در جاوا یک شی است که دنباله ای از کاراکترها را نشان می دهد که توسط یک آرایه char پشتیبانی می شوند. کلاس String در جاوا تغییر ناپذیر است و رابط های Comparable ، Serializable و CharSequence را پیاده سازی می کند . بیایید به یک مثال نگاه کنیم تا متوجه شویم.

String str = "string"
در اینجا str دنباله ای از 6 کاراکتر است که s، t، r، i، n و g هستند.
شاخص آرایه Char 0 1 2 3 4 5
ارزش س تی r من n g
آدرس حافظه 0x12824 0x12825 0x12826 0x12827 0x12828 0x12829
همانطور که اکنون می دانیم آرایه تغییرناپذیر است، به این معنی که پس از مقداردهی اولیه نمی توان آن را تغییر داد، بنابراین رشته نیز تغییرناپذیر است.

راه های مقداردهی اولیه رشته

دو راه برای مقداردهی اولیه یک رشته وجود دارد.
  1. لفظ رشته
  2. اپراتور جدید

رشته تحت اللفظی

ساده ترین و مستقیم ترین راه برای اعلام یک رشته در مثال بالا استفاده شده است. هر زمان که کامپایلر یک رشته را به معنای واقعی کلمه تفسیر می کند، همیشه به شی String تبدیل می شود.

String str = "string";

اپراتور جدید

همچنین می توانیم با استفاده از عملگر new یک رشته را مقداردهی اولیه کنیم.

String strNew = new String("using new operator");

مثال


import java.io.*;
import java.lang.*;
 
class StringInitializationExample {
    public static void main(String[] args)
    {
        //declare java string with a string literal
        String str = "a string literal";
 
        System.out.println("String str = " + str);
 
        //declare string using new operator
        String strNew = new String("using new operator");
 
        System.out.println("String strNew = " + strNew);
    }
}

خروجی

String str = یک رشته تحت اللفظی String strNew = استفاده از عملگر جدید

String در مقابل StringBuilder در مقابل StringBuffer

ما قبلاً در مورد چیستی کلاس String بحث کرده‌ایم، بنابراین در مورد دو کلاس دیگر و هدف آنها، به همراه دلیل اینکه جاوا این دو کلاس را معرفی کرده است صحبت خواهیم کرد، در حالی که قبلاً کلاس String را برای ما دارد. بهتر است شما به بالا بروید و یک ویرایش برای کلاس String داشته باشید تا آن را بهتر درک کنید.

دلیل

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

StringBuffer

رشته نمایشی از یک دنباله غیرقابل تغییر از کاراکترها است اما StringBuffer یک دنباله تغییرپذیر از کاراکترها است . از اکثر متدهای کلاس String به همراه تعدادی از متدهای خود برای تغییر محتویات و ترتیب کاراکترها استفاده می کند. از نظر thread ایمن است زیرا روش‌های آن برای استفاده توسط چندین رشته هماهنگ می‌شوند و ترتیب سریال را حفظ می‌کنند. این رابط های Serializable ، Appendable و CharSequence را پیاده سازی می کند .

نحو


StringBuffer str = new StringBuffer("Happy Java Programming");

StringBuilder

StringBuilder همچنین توالی قابل تغییر کاراکترها را نشان می دهد. این یک API ارائه می‌کند که با کلاس StringBuffer سازگار است، اما از نظر thread ایمن نیست. بنابراین در جایی که چندین رشته درگیر نیستند، بهتر است با کلاس StringBuilder بروید زیرا در بسیاری از موارد سریعتر از کلاس StringBuffer است . متدهای کلیدی این کلاس عبارتند از insert و append. همچنین رابط های Serializable ، Appendable و CharSequence را پیاده سازی می کند .

نحو


StringBuilder str = new StringBuilder("Happy Java Programming");

عملیات رشته

در جاوا می‌توانیم عملیات رشته‌ای مانند الحاق ، مقایسه ، تقسیم ، یافتن طول ، جایگزینی رشته‌ها و غیره را انجام دهیم .

روش های رشته ای

کلاس Java String روش های مختلفی را برای دستکاری رشته ها یا انجام عملیات های مورد بحث در بالا ارائه می دهد. بیایید نگاهی به جدول زیر برای برخی از این روش های رشته ای بیندازیم.
مواد و روش ها شرح
Char charAt (شاخص int) مقدار char را در شاخص ارائه شده برمی گرداند.
Concat رشته ای (String str) با ترکیب یک رشته مشخص شده در انتهای این رشته، یک رشته را برمی گرداند.
بولی شامل (CharSequence s) اگر رشته حاوی یک دنباله مشخص از مقادیر char باشد، مقدار true را برمی گرداند.
محتوای بولی برابر است (CharSequence cs) این رشته را با دنباله کاراکتر ارائه شده مطابقت می دهد.
محتوای بولی برابر است (StringBuffer sb) این رشته را با بافر رشته ارائه شده مطابقت می دهد.
boolean endsWith (پسوند رشته) انتهای رشته را با پسوند ارائه شده مقایسه می کند.
بولین برابر است (Object anObject) رشته را با شی ارائه شده مطابقت می دهد.
بولی برابر باIgnoreCase (رشته ای دیگر) این روش دو رشته را بدون در نظر گرفتن حساسیت حروف کوچک و بزرگ مقایسه می کند.
قالب رشته ایستا (فرمت رشته، شی… args) با استفاده از قالب ارائه شده و آرگومان ها، رشته فرمت شده را برمی گرداند.
بایت getBytes() این روش از مجموعه نویسه‌های پیش‌فرض پلتفرم برای رمزگذاری رشته به دنباله‌ای از بایت‌ها استفاده می‌کند، که سپس در یک آرایه بایت جدید ذخیره می‌شود.
void getChars (int begin، int end، char[] dst، int dstBegin) کاراکترها را از رشته در آرایه کاراکتر مقصد کپی می کند.
int hashCode() کد هش رشته را برمی گرداند.
int indexOf(int ch) ایندکس برای کاراکتر مشخص شده که ابتدا از رشته رخ می دهد، برمی گرداند.
int indexOf(int ch، int fromIndex) ایندکس را برای کاراکتر مشخص شده برمی گرداند که ابتدا از شاخص ارائه شده در این رشته شروع می شود.
int indexOf(string str) زیررشته ارائه شده را در رشته جستجو می کند و در اولین رخداد ایندکس را برمی گرداند.
int indexOf(string str، int fromIndex) شروع به جستجوی زیررشته ارائه شده در رشته از نمایه داده شده می کند و ایندکس را در اولین رخداد برمی گرداند.
کارآموز رشته () این روش نمایش متعارف رشته را برمی گرداند.
int lastIndexOf(int ch) این متد کاراکتر ارائه شده را در رشته جستجو می کند و ایندکس آخرین رخداد را برمی گرداند.
int lastIndexOf(int ch، int fromIndex) این متد به دنبال کاراکتر ارائه شده در رشته به عقب از شاخص داده شده است و ایندکس آخرین رخداد را برمی گرداند.
int lastIndexOf(string str) این متد زیر رشته ارائه شده را در رشته جستجو می کند و شاخص آخرین رخداد را برمی گرداند.
int lastIndexOf(string str، int fromIndex) این متد از نمایه داده شده زیررشته ارائه شده در رشته را به عقب جستجو می کند و ایندکس آخرین رخداد را برمی گرداند.
int length() این متد طول رشته را برمی گرداند.
منطبقات بولی (رجیکس رشته ای) با تطبیق رشته با عبارت منظم ارائه شده، true یا false را برمی گرداند.
جایگزینی رشته (char oldValue، char newValue) این متد یک رشته را پس از جایگزینی تمام oldValue ارائه شده با newValue در رشته برمی گرداند.
تقسیم رشته[] (رجکس رشته) این متد تمام موارد منطبق را مطابق عبارت منظم ارائه شده در رشته پیدا می کند و آن را در اطراف این مسابقات تقسیم می کند.
boolean startsWith (پیشوند رشته) درست یا نادرست را با آزمایش شروع رشته با پیشوند ارائه شده برمی گرداند.
رشته فرعی رشته (int beginIndex) این متد رشته ای را برمی گرداند که رشته فرعی این رشته است.
String toLowerCase() تمام کاراکترهای رشته را با استفاده از قوانین محلی پیش فرض به حروف کوچک تبدیل می کند.
برش رشته () این روش تمام فضاهای سفید پیشرو و انتهایی را از رشته حذف می کند و آن را برمی گرداند.
مقدار رشته ثابت (charc c) نمایش رشته آرگومان char را برمی گرداند.
حال با کمک چند مثال، نحوه استفاده از آنها را خواهیم دید.

مثال


import java.io.*;
import java.lang.*;
 
class JavaStringsExample {
  public static void main(String[] args) {

    //create a string
    String greeting = "Hello! World";
    System.out.println("String: " + greeting);

    //getting the length of greeting object
    int length = greeting.length();
    System.out.println("Length: " + length);
    
    //create first string
    String first = "Java ";
    System.out.println("First String: " + first);

    //create second string
    String second = "Programming";
    System.out.println("Second String: " + second);

    //joining two strings
    String joinedString = first.concat(second);
    System.out.println("Joined String: " + joinedString);
    
    String jpf = "Java programming";
    String jps = "Java programming";
    String jpt = "Python programming";

    //compare jpf and jps strings
    boolean result1 = jpf.equals(jps);
    System.out.println("Strings jpf and jps are equal: " + result1);

    //compare jpf and jpt strings
    boolean result2 = jpf.equals(jpt);
    System.out.println("Strings jpf and jpt are equal: " + result2);
    
    //converting jpf to uppercase
    System.out.println("Upper case jpf: " + jpf.toUpperCase());
    
    //replacing g character with v in jpf
    System.out.println("Replacing g with v in jpf: "+jpf.replace("g", "v"));
  }
}

خروجی

رشته: سلام! طول جهان: 12 رشته اول: جاوا رشته دوم: برنامه نویسی رشته پیوست شده: رشته های برنامه نویسی جاوا jpf و jps برابر هستند: true رشته ها jpf و jpt برابر هستند: غلط حروف بزرگ jpf: برنامه نویسی JAVA جایگزینی g با v در jpf: java provramminv

نتیجه

امیدواریم تا کنون متوجه شده باشید که رشته‌ها در جاوا چیست، کلاس‌های آن و نحوه پیاده‌سازی روش‌های مختلف آن. با خیال راحت تمرین کنید و هر زمان که به کمک بیشتری نیاز داشتید برگردید. یادگیری مبارک!
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION