JavaRush /وبلاگ جاوا /Random-FA /عبارت Break در جاوا
iloveski
مرحله
Москва

عبارت Break در جاوا

در گروه منتشر شد
سلام به همه همکاران و علاقه مندان.
عبارت Break در جاوا - 1
امروز ما به چنین ویژگی زبان برنامه نویسی جاوا به عنوان عملگر break نگاه خواهیم کرد. این اولین مقاله در مورد عملگرهای انتقال است، بنابراین اگر آن را دوست دارید، خوشحال می شوم که بیشتر بنویسم. می خواهم فوراً خاطرنشان کنم که این مقاله در درجه اول برای توسعه دهندگان مبتدی در نظر گرفته شده است و دانش آموزان پیشرفته تر ممکن است چیز جدیدی برای خود در اینجا پیدا نکنند. پس بزن بریم. در جاوا، 2 راه برای تغییر ترتیب اجرای دستورات برنامه وجود دارد: دستورات پرش و مکانیسم مدیریت استثنا. سه عملگر پرش در جاوا وجود دارد: شکستن، ادامه دادن و بازگشت. امروز از شما دعوت می کنم تا نگاه دقیق تری به اپراتور بیندازید break. رسیدگی به استثناء موضوع بسیار گسترده ای است که از حوصله این مقاله خارج است. سه راه برای استفاده از دستور break در جاوا وجود دارد. اولین و محبوب ترین راه استفاده از آن breakبرای خروج زودهنگام از حلقه است، به عنوان مثال:
public class SimpleExample {
    public static void main(String[] args) {
        findNumberInLoop(3);
    }
    public static void findNumberInLoop(int number){
        for (int i = 0; i < 10; i++) {
            if (i == number) {
                break;
            }
            System.out.println(i);
        }
        System.out.println("cycle was finished");
    }
}
این مثال نمایش خواهد داد:
1
2
cycle was finished
این بدان معناست که وقتی شمارنده حلقه iبرابر با پارامتر پاس شده number، یعنی عدد 3 می شود، اجرای حلقه زودتر خاتمه می یابد. اگر برنامه چندین حلقه تو در تو دارد، خروجی ها را فقط از درونی ترین حلقه جدا کنید، به عنوان مثال:
public class SimpleExample {
    public static void main(String[] args) {
        findNumberInLoop(3);
    }
    public static void findNumberInLoop(int number){
        for(int i = 0; i < 5; i++) {
            for (int j =0; j < 10; j++) {
                if(j == number) {
                    break;
                }
                System.out.print(j);
            }
            System.out.println();
        }
        System.out.println("cycles was finished");
    }
}
این مثال خروجی را تولید می کند:
012
012
012
012
012
cycles was finished
همانطور که از مثال مشاهده می شود، حلقه داخلی هر بار در عدد 3 قطع می شود (پارامتر number) و حلقه بیرونی 5 بار طبق برنامه اجرا می شود. در جاوا، شما می توانید از بیش از یک دستور break در یک حلقه استفاده کنید، اما این توصیه نمی شود، زیرا خوانایی و ساختار کد به شدت کاهش یافته است. کاربرد دوم breakاستفاده از آن برای قطع اجرای دستورات در شاخه ها است switch، به عنوان مثال:
public class SimpleExample {
    public static void main(String[] args) {
        square(2);
    }

    public static void square(int number){
        switch (number){
            case 1:
                System.out.println(number*number);
                break;
            case 2:
                System.out.println(number*number);
                break;
            case 3:
                System.out.println(number*number);
                break;
        }
        System.out.println("after switch");
    }
}
با اجرای این مثال خروجی تولید می شود:
4
after switch
دستور break کنترل را به کد زیر کل بلوک منتقل کرد switch. breakاگر در switchاین مثال مشخص نکنید :
public class SimpleExample {
    public static void main(String[] args) {
        square(2);
    }
    public static void square(int number){
        switch (number){
            case 1:
                System.out.println(number*number);
            case 2:
                System.out.println(number*number);
            case 3:
                System.out.println(number*number);
        }
        System.out.println("after switch");
    }
}
خروجی مطابق انتظار نخواهد بود:
4
4
after switch
این اتفاق به این دلیل رخ داد که پس از اجرای بلوک، case 2برنامه به اجرای تمام بلوک‌های کیس بعدی ادامه داد که خروجی مربوطه را به ما داد. گاهی اوقات این ویژگی اپراتور switch می تواند برای ما مفید باشد، به عنوان مثال:
public class SimpleExample {
    public static void main(String[] args) {
        compare(2);
        compare(7);
        compare(12);
    }
    public static void compare(int number){
        switch (number){
            case 0:
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
                System.out.println("number is less than 5 or equal 5");
                break;
            case 6:
            case 7:
            case 8:
            case 9:
                System.out.println("number is greater than 5");
                break;
            default:
                System.out.println("number is less than 0 or greater than 9");
        }
        System.out.println("after switch");
    }
}
این برنامه یک عدد داده شده را با عدد 5 مقایسه می کند و خروجی زیر را می دهد:
after switch
number is greater than 5
after switch
number is less than 0 or greater than 9
after switch
هنگامی که یک متد برای اولین بار فراخوانی می شود، اپراتور switchکنترل را به اپراتور case 2و سپس به اپراتور breakدر منتقل می کند case 5. فراخوانی دوم شبیه به اولین است، اما با c شروع می شود case 7. فراخوانی سوم در بین همه موارد مقدار مناسبی پیدا نمی کند، بنابراین اپراتور اجرا می شود default. راه سوم استفاده از عملگر breakبه جای gotoعملگر C است، برای این کار از فرم خاصی از عملگر breakبه نام breakبا برچسب استفاده می کنیم. این فرم شبیه break метка;یک برچسب است - معمولاً هر نام مناسبی از فضای نام جاوا، قبل از یک بلوک کد است. علاوه بر این، پس از اعمال این بلوک کد breakبا یک برچسب، اجرای کد از محل بعد از بلوک با برچسب مربوطه ادامه می یابد، به عنوان مثال:
public class SimpleExample {
    public static void main(String[] args) {
        howWeUseLabels(true);
        System.out.println();
        howWeUseLabels(false);
    }
    public static void howWeUseLabels(boolean bool) {
        firstBlock:{
            secondBlock:{
                thirdBlock:{
                    System.out.println("We will see it always");
                    if(bool) {
                        break secondBlock;
                    }
                    System.out.println("We won't see it if bool == true");
                }
                System.out.println("We won't see it if bool == true");
            }
            System.out.println("We will see it always");
        }
    }
}
این مثال خروجی زیر را تولید خواهد کرد:
We will see it always
We will see it always

We will see it always
We won't see it if bool == true
We won't see it if bool == true
We will see it always
پس از فراخوانی روش اول، اپراتور breakکنترل را به انتهای بلوک منتقل می کند secondBlock، خروج secondBlockو در پایان thirdBlockاپراتور دیگری را اجرا می کند . پس از تماس دوم، تمام خطوط روی صفحه نمایش داده می شود. همچنین می توان از برچسب ها برای نشان دادن چرخه ها استفاده کرد. لازم به یادآوری است که شما فقط می توانید از داخل بلوک کد مشخص شده توسط برچسب به یک برچسب بروید؛ برای مثال، چنین کدی کامپایل نمی شود: println()firstBlock
public class SimpleExample {
    public static void main(String[] args) {
        label:{
            System.out.println("inside label");
        }
        if(true) {
            break label;
        }
        System.out.println("This is error");
    }
}
نکاتی در مورد پاکی کد و دستور break: توصیه های پذیرفته شده ای وجود دارد که از دستور breakبسیار با دقت استفاده کنید، زیرا استفاده از آن breakدرک حلقه را دشوارتر می کند و برنامه نویس را مجبور می کند تا به داخل حلقه نگاه کند تا تفاوت های ظریف عملکرد آن را درک کند. یک قانون اکتشافی وجود دارد که break می‌توانید با اطمینان بیشتر در حلقه‌های کوتاه‌تر و با احتیاط بیشتر در حلقه‌های طولانی و عمیق تودرتو از آن استفاده کنید، زیرا این احتمال خطا را افزایش می‌دهد و خواندن و درک کد خود را توسط برنامه‌نویسان دیگر پیچیده می‌کند. همانطور که در بالا نوشتم، استفاده از تعداد زیادی از break، پراکنده در سراسر کد، نشان می دهد که برنامه نویس به طور کامل متوجه نمی شود که چرا کد خود را به روشی که انجام داده است، نوشته است. شاید ارزش آن را داشته باشد که چنین حلقه‌ای را با شکستن آن به چندین حلقه کوچک‌تر مجدداً در نظر بگیریم. سعی کنید هنگام استفاده break از برچسب به عنوان جایگزین مراقب باشید goto، زیرا این ساختار کد را پیچیده می کند. این تمام چیزی است که امروز می خواستم در مورد اپراتور breakدر جاوا به شما بگویم. من خوشحال خواهم شد که انتقاد سازنده داشته باشم و همچنین آماده هستم تا در مورد اپراتورها continueو returnدر صورت تمایل ادامه مطلب را بنویسم.
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION