هدف ، ویژگی ها و مزایای Eclipse

Eclipse یک IDE قابل توسعه (محیط توسعه یکپارچه) است. IDE مجموعه ای است از ابزارهایی که برای کار در یک پروژه نرم افزاری به راحتی سازمان یافته اند.

Eclipse یک پلت فرم همه کاره است که می تواند برای توسعه برنامه ها در هر زبان برنامه نویسی مورد استفاده قرار گیرد (به عنوان مثال ، می توانید استفاده کنید زبان پایتون پس از نصب اتصال Pydev () ، اما در ابتدا "بومی" برای Eclipse جاوا است (که اتفاقاً Eclipse نیز در آن نوشته شده است).

ما پیشنهاد می کنیم از یک نحو برچسب هدف استفاده کنید که این سیگنال ها را واجد شرایط باشد. با این حال ، در این حالت ، شما باید از یک کنوانسیون جهانی نامگذاری استفاده کنید. لبه ها را می توان بین گره هایی که سیگنال را به عنوان پیام تبلیغ می کنند و گره هایی که سیگنال را به عنوان یک رویداد تبلیغ می کنند ترسیم کرد.

واقعاً چه می دانید؟

ابهام نوع کلی متاپوگرام های مبتنی بر نوع با نحو شی synt خاص. آنجا هلن باگ ، مارتین براونبوئر ، کارل تریگوه کالبرگ ، کوهن مویلویک و ایلکو ویسر. استفاده مجدد از کد پاسخگو در هر بخش ، شبیه سازی و تغییر نام. یادگیری اینترنت اطلاعاتی را برای مبتدیان فراهم می کند و اصول برنامه نویسی و اینترنت را معرفی می کند.

  • کاتز ، مارتین براونبوئر و الکو ویسر.
  • مخلوط کردن منبع و کد بایت.
  • مارتین Bravenboer ، راب Vermaas ، Jürgen Wingju و Eelko Visser.
  • مارتین براونبوئر و الکو ویسر.
  • نحو خاص برای اشیا.
  • معرفی زبان و جذب آن بدون محدودیت.
  • درک کلی از اینترنت و شبکه جهانی وب.
  • دانش خوب زبان نشانه گذاری فرامتن.
  • برخی از تجربه های برنامه نویسی.
این یک زبان کوچک و سبک وزن است.

مهمترین ویژگیهای Eclipse عبارتند از:

  1. کراس پلت فرم Eclipse در همه سیستم عامل های رایج اجرا می شود: ویندوز ، لینوکس و MacOS X. از همه مهمتر ، عملکرد آن در هر یک از این سیستم عامل ها یکسان است.
  2. تطبیق پذیری و قابلیت توسعه Eclipse توانایی استفاده از انواع ابزارهای توسعه یافته توسط برنامه نویسان شخص ثالث را فراهم می کند.
  3. باز و آزاد. Eclipse یک پروژه OpenSource است (یعنی آن کدهای منبع در دسترس هر کسی است و هر کسی می تواند به توسعه این ابزار بپیوندد). Eclipse دارای یک جامعه فعال است که به طور مداوم در حال بهبود برنامه و گسترش توانایی های خود است.

فضای کار گرفتگی

اولین چیزی که هنگام شروع Eclipse مشاهده می کنید جعبه محاوره ای است که به شما امکان می دهد مکان را انتخاب کنید فضای کاری... Workspace دایرکتوری است که در آن کار شما ذخیره می شود.

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

پس از انتخاب فضای کاری ، صفحه نمایش داده می شود صفحه شروع، با پیشنهاداتی برای دیدن آموزشها ، مثالها و غیره Workbench را انتخاب کنید و به پنجره منتقل خواهید شد محیط کار (میز کار) ، که کارهای بعدی شما در آن انجام می شود.

اجزای اصلی یک فضای کاری ، نماها ، ویرایشگران و دیدگاه ها هستند.

انواع داده های جاوا

متغیرها ، پارامترها و نوع بازگشت به طور صریح مشخص نشده اند. این زبان های اسکریپت نویسی ابزارهای برنامه نویسی را برای موارد بیشتر ارائه می دهند مخاطبان گسترده به دلیل نحو ساده تر ، توابع تخصصی داخلی ، و حداقل الزامات برای ایجاد یک شی.

در بخش "اطلاعات در مورد مدل شی" تمام آنچه شما نیاز دارید یک مرورگر وب مدرن است. برنامه های این دوره ها می تواند متناسب با نیازهای کارآموزان باشد. در صورت داشتن سوال یا نیاز خاص دریغ نکنید با ما تماس بگیرید. این آموزش برای توسعه دهندگانی که از قبل از زبان برنامه نویسی استفاده می کنند در نظر گرفته شده است.

کارایی بخش کوچکی از فضای کار است که برای پیمایش در یک دسته خاص از اشیا (مانند منابع یا بسته ها) ، ویرایشگرهای باز و نمایش خصوصیات ویرایشگرهای فعال عمل می کند. به عنوان مثال ، نمای Navigator پروژه ها و سایر منابع را نشان می دهد ، در حالی که نمای Bookmarks تمام نشانک ها را در Workbench به همراه نام پرونده هایی که این نشانک ها با آنها مرتبط هستند نمایش می دهد. شکل ، گوشه سمت راست و بالای فضای کار را با نمای Outline فعال نشان می دهد.

چندین ارزش در دنیای واقعی وجود دارد که هرگز تغییر نخواهد کرد. هنگام نوشتن یک برنامه ، منطقی است که آنها را به همان شیوه نشان دهید - به عنوان مقادیری که پس از انتساب به یک متغیر تغییر نمی کنند. این متغیرها به عنوان ثابت شناخته می شوند.

اعلام یک متغیر به عنوان یک ثابت

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

هرگونه تغییر در بازدیدها بلافاصله ذخیره می شود.

نوع دیگری از اجزای بصری Workbench است ویراستارانکه برای مشاهده و ویرایش برخی از منابع (به عنوان مثال ، کد برنامه) استفاده می شود. وقتی منبعی را انتخاب می کنید ، یک ویرایشگر مناسب ظاهر می شود. به عنوان مثال ، هر سند متنی (با پسوند .txt) را با استفاده از دستور File -\u003e Open File ... باز کنید و ویرایشگر متن ساده داخلی را مشاهده خواهید کرد. اگر چیزی را در این ویرایشگر تایپ کنید ، یک ستاره در برگه آن ظاهر می شود ، جایی که نام فایل نوشته شده است. این بدان معناست که ویرایشگر حاوی تغییرات ذخیره نشده است. اگر Ctrl + S را فشار دهید یا دستور File -\u003e Save را انتخاب کنید ، ذخیره می شوند.

استفاده از کلمه کلیدی نهایی با اشیا

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

تعداد زیادی نمای مفید وجود دارد که می توانید با دستور Window -\u003e Show View به پنجره فضای کاری اضافه کنید. با این حال ، به جای اضافه کردن آنها یک به یک ، راحت تر است که دیدگاه خود را تغییر دهید. پروجکشن (یا چشم انداز) مجموعه ای از بازدیدها و ویراستاران است که مخصوصاً برای انجام یک کار طراحی شده است. پس از راه اندازی در Eclipse ، دیدگاه جاوا باز می شود ، طوری تنظیم شده است که در واقع برنامه را بنویسد. از طرح Debug اغلب برای رفع اشکال یک برنامه استفاده می شود. می توانید با استفاده از دستور Window -\u003e Open Perspective طرح را تغییر دهید. نام پیش بینی کنونی در گوشه بالا سمت راست محیط کار نمایش داده می شود (شکل را ببینید).

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

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

اولین برنامه جاوا

قبل از شروع برنامه نویسی ، باید یک پروژه ایجاد کنید که در آن Eclipse تمام منابع مربوط به برنامه شما را ذخیره کند.

برای ایجاد یک پروژه ، دستور File -\u003e New -\u003e Project را اجرا کنید. در پنجره ظاهر شده ، Java Project را انتخاب کرده و Next را کلیک کنید. نامی برای پروژه خود ارائه دهید. لطفاً توجه داشته باشید که پوشه ای با نام پروژه شما در پوشه ای که به عنوان فضای کاری مشخص کرده اید ایجاد می شود (البته مگر اینکه تنظیمات موجود در این پنجره را تغییر دهید ، کاری که برای اولین بار انجام نمی دهیم). روی دکمه Finish کلیک کنید.

اصول مبانی نحو جاوا

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

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

پروژه شما اکنون در نمای PackageExplorer در سمت چپ فضای کار قرار دارد. با کلیک بر روی نام آن می توانید هر زمان خواستید آن را حذف کنید کلیک راست ماوس و حذف را انتخاب کنید. پس از آن ، Eclipse از شما می پرسد که آیا می توانید همزمان پوشه را با فایل های پروژه از بین ببرید (در صورت لزوم می توانید آن را از بین ببرید).

اگر پروژه را حذف نکرده اید ، می توانید با استفاده از دستورات منوی زمینه ، پرونده ها و پوشه ها را به آن اضافه کنید جدید -\u003e پرونده و جدید -\u003e پوشه به ترتیب. اگر پروژه بزرگ باشد ، به یک ساختار پوشه تو در تو نیاز دارد. اما در مورد یک پروژه جاوا ، اوضاع کمی متفاوت است. نکته این است که قطعات برنامه جاوا در گروه بندی می شوند بسته ها، و برای هر بسته یک پوشه جداگانه ایجاد می شود. بسته توسط دستور New -\u003e Package ایجاد می شود. همچنین باید نامی برای بسته بندی بیاورید. در نتیجه ، در پوشه پروژه ایجاد می شود پوشه جدید با این نام می توانی چک کنی.

برچسب نامی است که به دنبال آن یکی از دو نقطه وجود دارد که ابتدای بیانیه را مشخص می کند. متغیر \u003d؟ دستورالعمل 1: دستورالعمل 2. اگر شرط درست باشد ، این دستورالعمل 1 پس از اجرای نقطه نظر سنجی است. اگر نادرست باشد ، دستورالعمل 2 پس از اجرای دو نقطه است. شرایط باید داخل پرانتز باشد.

شناسه های جاوا

بنابراین: اگر شرط درست باشد عدد 1 است ، اگر شرط نادرست باشد 2 است. همچنین امکان تقویت شرایط سه گانه وجود دارد. با این حال ، توصیه نمی شود که از این شرایط خیلی منظم استفاده کنید ، که بسیار کم قابل خواندن است. طراحان زبان به دنبال روش هایی برای ایجاد و نگهداری آسان کد هستند. تکنیکی که معمولاً مورد استفاده قرار می گیرد ، ساختن زبان از طریق "رویه ها" است ، که مجموعه ای از کد است که عملکرد خاصی را روی داده های برنامه انجام می دهد. این روال ها را می توان در کتابخانه هایی دسته بندی کرد که توسط برنامه نویسان دیگر قابل استفاده است.

مرور منابع پروژه با استفاده از نمای Navigator می تواند آسان تر باشد. آن را با Window -\u003e نمایش نمایش نمایش باز کنید. خواهید دید که علاوه بر دایرکتوری های پروژه و بسته ، Eclipse دو فایل کمکی ایجاد کرده است .classpath و .project. آنها می توانند به راحتی در ویرایشگر باز شوند ، اما اکنون مورد توجه خاص ما نیست.

یک برنامه جاوا همیشه از یک یا چند تشکیل شده است کلاس ها... با استفاده از دستور New -\u003e Class می توانید یک کلاس ایجاد کنید منوی زمینه نماهای ناوبر (یا Package Explorer ، مهم نیست). هنگام ایجاد یک کلاس ، باید بسته ای را که به آن تعلق دارد انتخاب کنید (بسته ای را که تازه ایجاد کرده اید انتخاب کنید) و نامی برای آن بیاورید. معمول این است که نام کلاس ها را با یک حرف بزرگ شروع کنید. اگر از این قاعده فرم خوب پیروی نکنید ، کسوف اخطار می دهد ، اما اتفاق بدی نمی افتد.

این م effectiveثر است ، اما به دلیل جدایی کد و داده و حساسیت به اثرات لبه ، ضرر دارد. زبان های شیject همه چیز در مورد گروه بندی داده ها و کد ها در یک موجودیت نهادی است. به این مجموعه کدهای داده "کپسول سازی" گفته می شود. برخی از تعاریف کلاس.

- بیان لامبدا

Class: این شکلی است که اجازه تولید اشیا را می دهد. شی: این یک اجرای عینی و مفید یک کلاس است. در اصطلاحات اصطلاحی ، آن را "نمونه" از یک کلاس می نامند. اینها روالهایی هستند که عملیاتی را می توان روی یک جسم انجام داد. پیام: این یک فراخوانی متد روی یک شی است.

برای اهداف ما ، علامت زدن در کادر زیر "چه روشهایی می خواهید در کلاس خود ایجاد کنید؟" مفید است. گزینه مخالف void main static public (رشته های رشته ای)... در نتیجه ، متد (تابع) اصلی در بدنه کلاس تولید می شود. جاوا نیاز دارد که حداقل یکی از کلاسهای برنامه دارای متدی با چنین هدر باشد. این اوست که در ابتدای برنامه اعدام می شود.

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

شرط اگر بیانیه

روش ها رفتار اجسام مستطیل را تعریف می کنند. نحو برای اعلام روش.

  • حتی پرانتز خالی نیز لازم است.
  • برای نحوه استفاده از استدلال های متد ، به یادداشت مراجعه کنید.
  • یک بلوک دستورالعمل ، که یک روش است.
روش اول سطح مستطیل را محاسبه می کند.

در نتیجه اقدامات ما ، یک فایل در پوشه بسته با نام کلاس ما و پسوند .java ایجاد می شود. Eclipse یک ویرایشگر کد را باز می کند که محتوای این فایل را نشان می دهد. چیزی در حدود موارد زیر خواهد بود (البته نام بسته ها و کلاس ها ممکن است متفاوت باشد):

بسته اصلی کلاس عمومی MyClass (/ ** *param args * / public static void main (رشته های رشته) ())

دستوراتی را که بدنه عملکرد را تشکیل می دهند می توان به جای نظر ایجاد شده به صورت خودکار نوشت // TODO مقاله خرد مقاله خودکار... ما فقط یک دستور می نویسیم که خط کلاسیک "Hello، world!" را روی صفحه چاپ می کند:

فضای کار گرفتگی

دوم مستطیل به رنگ سیاه ترسیم می کند. این روش باید به نام کلاس نامگذاری شود. سازندگان در کلاس اختیاری هستند. این کد کامل برای کلاس مستطیل ماست. فراخوانی روش با مشخص کردن نام نمونه ، سپس یکی از روشها و مشخص کردن استدلالهای آن انجام می شود.

اگر لیست آرگومان خالی باشد ، هنوز پرانتز لازم است. برای اینکه بتوانیم از کلاس مستطیل استفاده کنیم ، یک اپلت ایجاد خواهیم کرد که جزئیات آن در زیر توضیح داده خواهد شد. این برنامه یک کلاس است که سازنده ندارد و دو روشی دارد که در همه اپلت ها یافت می شود.

System.out.println ("سلام ، جهان!")؛

برای اجرای برنامه باقی مانده است. برای این منظور ، دستور Run -\u003e Run را اجرا کنید و یک کادر گفتگو با تنظیمات راه اندازی غیر پیش پا افتاده دریافت کنید. در سمت چپ این پنجره ، برنامه Java را انتخاب کنید ( برنامه جاوا) پس از اندکی تأمل ، Eclipse کلاس ما را که حاوی متد () اصلی است پیدا می کند و پیشنهاد می کند که برنامه را از آن آغاز کنید (نام پروژه و کلاس ما باید در سمت راست پنجره در تب Main ظاهر شود). علاوه بر این ، چند تب دیگر نیز مورد توجه برنامه نویس قرار می گیرد. به عنوان مثال ، در مورد دوم آنها - آرگومان ها - پیشنهاد می شود پارامترهایی وارد کنید خط فرمان (اگر برنامه طوری طراحی شده است که از خط فرمان با پارامترها فراخوانی می شود). برای برنامه ساده ما نیازی به مشخص کردن مورد دیگری ندارید. فقط روی دکمه Run کلیک کنید.

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

همچنین می توان روش سطح را تغییر داد تا مقدار سطح خود را به صورت مستطیل نمایش دهد. در برخی موارد ، ممکن است ابهامی در مورد نمونه مورد محاسبه وجود داشته باشد. متغیرهای نمونه به طور مستقیم توسط همه روش های کلاس قابل دسترسی هستند. برای احترام به کپسوله سازی ، داده های شی object نمی توانند مستقیماً از خارج اصلاح شوند. برای دستیابی به این هدف ، دامنه متغیرهای کلاس را می توان با استفاده از اصلاح کننده ها محدود کرد. در این حالت ، اصلاح کننده های استفاده شده خصوصی هستند که دامنه متغیرها را به کلاس و انتشار محدود می کند ، و آن را به تمام کلاس ها گسترش می دهد.

در نتیجه کار برنامه ، داده ها به اصطلاح کنسول خارج می شوند. که در سیستم عامل کنسول MS DOS کل صفحه مانیتور بود. Eclipse نمای Console را به روی ما باز می کند ، در این رشته (اگر همه کارها به درستی انجام شود) رشته "سلام ، جهان!" خروجی برنامه ما است.

اکنون ، برای راه اندازی مجدد برنامه (به عنوان مثال ، اگر تصمیم داریم برخی تغییرات را در آن ایجاد کنیم یا باید آن را به معلم نشان دهیم) ، می توانید راه ساده تری را طی کنید - دستور Run را اجرا کنید -\u003e Run Last Launched (برنامه قبلی را دوباره اجرا کنید) یا فقط Ctrl را فشار دهید + F11.

یک متغیر عمومی اعلام شده یک کلاس از خارج از کلاس قابل دسترسی است ، نام آن را پیشوند آن می گذارد. به طور پیش فرض ، متغیرها و روش ها عمومی هستند. درست همانطور که می توانید چندین سازنده را تعریف کنید ، می توانید دو روش را با یک نام تعریف کنید ، به شرطی که تعداد آرگومان های آنها یا انواع مختلف استدلال ها این ویژگی overloading روش نامیده می شود. مثال. برای ایجاد یک همخوانی ، می توانیم روش را بیش از حد بارگذاری کنیم.

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

اصول نحوی جاوا

تعاریف

Operand مقداری است که در عملیات دخیل است.

متد (تابع) بخشی از برنامه است که نام خاص خود را دارد. از این نام می توان به عنوان یک دستور در برنامه استفاده کرد (چنین فرمانی را فراخوانی متد می نامند). وقتی متدی فراخوانی می شود ، دستوراتی که از آن تشکیل شده است اجرا می شوند. یک روش ، شبیه به یک عملیات ، می تواند مقدار نتیجه را بازگرداند.

بیانیه ها را بشکنید و ادامه دهید

اینها روش هایی برای کار با کلاس است نه با نمونه ها. برای دسترسی به یک روش ثابت از خارج کلاس ، باید نام متد را با نام کلاس یا نام نمونه کلاس پیشوند قرار دهید. برای بهبود خوانایی کد ، توصیه می شود نام روش را با نام کلاس پیشوند قرار دهید. بعداً از این مطلب استفاده خواهیم کرد.

مثال زیر بیان می کند راه ممکن پیاده سازی کلاس برای رسیدگی به اعداد مختلط. برای استفاده از این کلاس می توانیم مثلاً بنویسیم. یادداشت. روش ها به طور پیش فرض عمومی هستند. پس از اجرای کد زیر برای کلمات زیر. هنگام کار با حروف الفبا ، هر اعلامیه متغیر یک منطقه حافظه به اندازه مناسب را برای آن لغت ذخیره می کند. با اشیا متفاوت است. پس از اجرای کد زیر.

عبارت دنباله ای از عملیات و فراخوانی روش است که به ترتیب مشخصی اجرا می شود (با اولویت عملیات ، با در نظر گرفتن پرانتز) ، که مقداری در هنگام محاسبه می دهد.

Variable یک منطقه نامگذاری شده از حافظه کامپیوتر است که در آن یک برنامه می تواند داده هایی از یک نوع خاص را ذخیره کند (به نام مقدار متغیر) و با استفاده از نام متغیر به این داده ها دسترسی پیدا کنید.

مفاهیم برنامه و الگوریتم (تکرار)

قرار ملاقات برنامه کامپیوتری - تبدیل داده های ورودی به داده های خروجی. الگوریتم برنامه نحوه تبدیل داده های ورودی به داده های خروجی را تعیین می کند.


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

داده های خروجی (نتیجه کار برنامه) اغلب روی صفحه نمایش داده می شوند ، اما همچنین می توانند در یک فایل یا پایگاه داده ذخیره شوند و به شبکه ارسال شوند. برنامه های داخلی توالی های فرار ویژه ای را به عنوان خروجی ایجاد می کنند که باعث می شود دستگاهی که برنامه به آن متصل است عملیاتی را انجام دهد.

هنگام شروع نوشتن برنامه ، باید درک کنید:

  1. این برنامه اصلاً برای چه کاری است (به طور کلی چه کاری انجام می دهد)؟
  2. این برنامه چه داده های ورودی دارد (و از کجا می آید)؟
  3. خروجی این برنامه چیست (و از کجا باید ارسال شود)؟
  4. چگونه داده های ورودی باید به خروجی (الگوریتم) تبدیل شوند؟ این دشوارترین قسمت تفکر یک برنامه نویس است ، اما اگرچه پاسخی برای سه سوال قبلی وجود ندارد ، اما شروع آن منطقی نیست.

هنگام نوشتن یک برنامه ساده ، باید:

  1. ورودی دریافت کنید.
  2. الگوریتمی برای تبدیل داده های ورودی به خروجی ها پیاده سازی کنید.
  3. خروجی نتیجه برنامه (داده های خروجی): نمایش آن ، انتقال از طریق شبکه و غیره

هنگام کار با پروژه های نرم افزاری پیچیده ، لازم است تجزیه و تحلیل دقیق الزامات برنامه (که ممکن است نیاز به ارتباط زیادی با مشتری داشته باشد) ، برای انجام طراحی (برای تعیین اینکه برنامه شامل چه قسمت هایی می شود ، نحوه تعامل این قطعات با یکدیگر ، نمایش جنبه های مختلف ساختار و رفتار برنامه) به صورت نمودار و غیره). اما در هر صورت ، برنامه نویسی را بدون درک داده های ورودی و خروجی و بدون درک کلی الگوریتم شروع کنید. بیهوده... و حداقل به طور کلی به ماهیت الگوریتم فکر کنید ، بدون اینکه از داده های ورودی و خروجی بدانید غیرممکن.

بنابراین ، همیشه تمرینات خود را با تعریف ورودی و خروجی شروع کنید. اگر در این زمینه مشکلی دارید ، با معلم خود تماس بگیرید.

ادبیات در مورد موضوع:

ساختارهای الگوریتم اساسی (تکرار)

توجه! در این مرحله از آموزش ، شما باید از قبل در مورد این موضوع آگاهی داشته باشید.اگر آنها در آنجا نباشند ، و مواد برای تکرار نامفهوم یا ناکافی باشند ، شما با وظایف کنار نمی آیید! مشاوره ادبیات در این زمینه فوری است.

بنابراین ، الگوریتم دنباله ای از اقدامات برای تبدیل داده های ورودی به خروجی است.

الگوریتم را می توان به سه روش اصلی نوشت:

مراحل جداگانه الگوریتم (صرف نظر از نحوه نوشتن) با استفاده از سه سازه استاندارد که کاملاً در همه زبان های برنامه نویسی پیاده سازی شده اند به یکدیگر مرتبط می شوند:

    اعدام متوالی مراحل یکی پس از دیگری انجام می شود.

    انشعاب دادن بسته به تحقق یک شرط خاص (در مثال در نظر گرفته شده ، x\u003e y است؟) ، شاخه یا برنامه دیگری اجرا می شود.

    چرخه توالی مراحل برنامه چندین بار انجام می شود. در واقع ، این حلقه بر اساس انشعاب است (شرط خروج از حلقه بررسی می شود) ، اما اگر این شرط برآورده نشود ، کنترل به ابتدای حلقه منتقل می شود (دوباره به مرحله قبلاً کامل شده).

یک مسئله را در نظر بگیرید: نمایش تمام اعداد زوج کمتر از 10. برای این مسئله ، می توانید از یک الگوریتم بر اساس مراحل متوالی و یک الگوریتم با استفاده از یک حلقه استفاده کنید. نمودارهای هر دو گزینه در شکل نشان داده شده است:

نمودار اول واضح تر به نظر می رسد ، اما در مواردی که لازم است نه 5 عدد ، بلکه 100 نمایش داده شود ، نمودار (و برنامه مربوط به این الگوریتم) 20 برابر افزایش می یابد و در برنامه مربوط به الگوریتم دوم ، فقط یک مکان تغییر می کند: 10 به 100 تغییر می کند به همین دلیل است که اقدامات تکراری به صورت چرخه طراحی می شوند ، اگرچه در بسیاری از موارد می توانید بدون آنها انجام دهید.

به یاد داشته باشید: الگوریتم باید فقط از سه سازه ساخته شده ساخته شود!

ادبیات در مورد موضوع:

1. کتاب درسی مدرسه علوم کامپیوتر.

اصول مبانی نحو جاوا

  1. زبان جاوا بین حروف بزرگ و کوچک تفاوت قائل می شود. این بدان معنی است که نام کلیه توابع و کلمات کلیدی باید دقیقاً همانگونه که در مثالها و کتابهای مرجع آمده است ، نوشته شود.
  2. هر دستور (عملگر) در زبان جاوا باید با یک نقطه ویرگول پایان یابد.
  3. یک برنامه جاوا از یک یا چند تشکیل شده است کلاس ها... کاملاً کل قسمت عملکردی برنامه (یعنی کاری که انجام می دهد) باید در آن قرار گیرد مواد و روش ها کلاسهای خاصی (کلاس و روش ، به عنوان یک مفهوم برنامه نویسی شی گرا ، در درس 3 آورده خواهد شد. نحو کلاس نیز پوشش داده خواهد شد. در تمرینات اول ، از کلاسهایی که Eclipse به طور پیش فرض ایجاد می کند استفاده کنید.)
  4. کلاسها به صورت بسته بندی شده اند.
  5. حداقل یکی از کلاسها باید یک روش اصلی () داشته باشد ، دقیقاً مشابه مثال ما. (در ابتدا درک کنید یا سعی کنید آن را به خاطر بسپارید) نوشتن صحیح این روش اختیاری است - اگر کادر را علامت بزنید Eclipse همه چیز را خودش تولید می کند.) این روش ابتدا اجرا می شود.

در ساده ترین حالت ، یک برنامه می تواند شامل یک بسته (یا حتی هیچ یک) ، یک کلاس درون یک بسته و یک روش اصلی () درون یک کلاس باشد. دستورات برنامه بین خطوط نوشته می شوند

باطل اصلی استاتیک عمومی (رشته های رشته ای) (

و یک مهاربند بسته بندی شده) نشان دهنده پایان بدنه روش است. این روش باید هنگام انجام ساده ترین تمرینات دنبال شود.

نظرات

نظرات برچسب های توضیحی هستند که برنامه نویسان از آنها برای بهبود درک کد استفاده می کنند. هنگام تدوین برنامه ، نظرات نادیده گرفته می شوند ، بنابراین می توان هر چیزی را در آنها نوشت. نکته اصلی این است که نشان دهیم این کتیبه یک تفسیر است و نباید به عنوان دستورات برنامه تفسیر شود. در جاوا ، این کار به یکی از روشهای زیر انجام می شود:

  1. دو برش جلو // درج می شود. از این به بعد تا انتهای خط ، می توانید هرچه می خواهید بنویسید - جاوا با آن به عنوان یک نظر رفتار می کند.
  2. در ابتدای نظر ، نویسه ها / * قرار می گیرند و در انتها - * /. در این حالت ، نظر می تواند هر تعداد خط را اشغال کند.
  3. برجسته نظرات برای مستنداتکه بین نشانگرها قرار می گیرند / ** و * /. استفاده از آنها بعداً مورد بحث قرار خواهد گرفت.

قوانین نوشتاری

در مورد اشکال مختلف نوشتن حروف الفبا

اعداد صحیح (عدد صحیح صحیح) در جاوا را می توان به روش معمول به صورت اعشاری نوشت: 12345 ، +4 ، -11.

علاوه بر این ، می توانید از صفر (0777 ، -056) و به صورت هگزادسیمال ، با شروع از صفر و حرف لاتین x (0xFFFF ، 0x14 ، 0xA1BC) ، اعداد صحیح را به صورت octal بنویسید.

اصطلاحات معتبر به نوشته شده اند سیستم اعشاری محاسبه ، کل قسمت از نقطه اعشاری جدا شده است.

یک عدد واقعی را می توان نوشت نقطه شناور، به عنوان مثال: 5.4e19 ، 17E-11 ، -123e + 4. به بخشی از عدد که قبل از حرف e می آید مانتیسا و به بخشی که بعد از حرف e می آید ترتیب می گویند. رکورد به معنای موارد زیر است: شما باید 10 را به قدرت سفارش افزایش دهید و در mantissa ضرب کنید. گاهی اوقات نوشتن 1e-9 از 0.000000001 راحت تر است.

نویسه های منفرد در پیام رسان ها نوشته می شوند ، به عنوان مثال "a" ، "D" ، "@".

برخی از کاراکترهای خاص و کنترل وجود دارد که با استفاده از توالی فرار ویژه نوشته می شوند. رایج ترین آنها در جدول ذکر شده است:

سکانس های فرار نیز در رسوبات محصور شده اند.

خط اول جدول می گوید که می توان هر کاراکتری را با استفاده از کد آن (با رمزگذاری اعشاری از 0 تا 255) ، نوشتن این کد در سیستم اعداد هشتمی ، تعیین کرد. به عنوان مثال ، حرف "g" در رمزگذاری CP1251 با توالی فرار "\\ 346" نوشته خواهد شد

در صورت لزوم ، می توانید کد هر کاراکتر را در رمزگذاری یونیکد - بعد از عکس پشت و حرف لاتین u - در چهار نویسه هگزادسیمال مشخص کنید. به عنوان مثال ، "\\ u0055" حرف U است.

رشته های کاراکتر در گیومه ها نوشته می شوند. نقل قول های باز و بسته باید روی یک خط کد باشند.

برای رشته ها ، عمل اتصال + تعریف شده است ، که به شما امکان می دهد چندین رشته را در یک رشته جمع کنید ("نسبت دادن" آنها به یکدیگر).

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

"این یک رشته رشته بسیار طولانی است که نوشته شده است" + "روی دو خط منبع"

نویسه ها و کدهای کنترل به همان روش با یک بک اسلش (اما بدون برافروختگی) به صورت یک رشته نوشته می شوند.

اصطلاحات بولی درست و غلط است.

شناسه ها

در مورد قوانین سبک خوب

هنگام برنامه نویسی ، دائماً نیاز به تهیه شناسه هایی برای نامگذاری اشیا وجود دارد.

شناسه می تواند شامل حروف ، اعداد ، زیر خط و علامت دلار باشد (دومی توصیه نمی شود ، جاوا از آن برای نیازهای خود استفاده می کند). شناسه نمی تواند با یک رقم شروع شود. کلمات کلیدی جاوا (و نه تحت اللفظی) درست غلط و خالی).

همانطور که در بالا اشاره شد، زبان جاوا بین حروف ساده و کوچک تفاوت قائل می شود... این بدان معنی است که myAge ، myage و MyAge نام اجسام کاملاً متفاوتی هستند. مراقب باشید: خطای ثبت نام یک مورد بسیار رایج است!

نام کلاس با یک حرف بزرگ شروع می شود ؛ اگر نام از چند کلمه تشکیل شده باشد ، هر کلمه با یک حرف بزرگ شروع می شود. به عنوان مثال: MyClass ، Book.

نام متد و متغیر با حروف کوچک (حروف کوچک) شروع می شود. اگر نام شامل چندین کلمه باشد ، هر کلمه بعدی با یک حرف بزرگ شروع می شود. به عنوان مثال ، myVar ، x ، y ، newBigCounter.

نامهای ثابت با حروف بزرگ نوشته می شوند. اگر نام شامل چندین کلمه باشد ، یک زیر خط بین آنها قرار می گیرد. به عنوان مثال PI ، COUNT_OF_MONTHS.

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

انواع داده ها

در مورد انواع داده های جاوا

نوع int معمولاً برای ذخیره اعداد صحیح در جاوا استفاده می شود.

به طور کلی ، چهار نوع عدد صحیح در زبان جاوا وجود دارد: بایت ، کوتاه ، int ، طولانی. آنها در مقدار حافظه اختصاص داده شده برای متغیر و بر این اساس ، در دامنه مقادیر قابل ذخیره در این متغیر متفاوت هستند. متداول ترین نوع int 4 بایت در حافظه اشغال می کند و برای ذخیره اعداد از -2147483648 تا 2147483647 مناسب است. نوع بایت کمترین حافظه را مصرف می کند و برای کار با تعداد کم (از -128 تا 127) مناسب است. نوع کوتاه و بلند به ترتیب 2 و 8 بایت هستند.

نوع دوتایی برای اعداد واقعی مناسب است.

اعداد واقعی (واقعی) (یا اعداد شناور) با دو نوع شناور و دو نشان داده می شوند. نوع شناور 4 بایت حافظه را اشغال می کند و در هنگام برخورد با تعداد بسیار زیاد یا بسیار کم دقت بالایی را ارائه نمی دهد. توصیه می شود در صورت نیاز به قسمت کسری از آن استفاده کنید ، اما دقت بالایی لازم نیست (به عنوان مثال ، برای اندازه گیری فاصله در متر ، اما با در نظر گرفتن سانتی متر و میلی متر ، یا اندازه گیری قیمت ها به روبل ، با در نظر گرفتن کپک ها). در صورت نیاز به محاسبات دقیق تر ، توصیه می شود که با مقادیری از نوع دو برابر کار کنید (به عنوان مثال ، چنین متغیری می تواند مقدار سینوس یک زاویه را ذخیره کند).

جاوا کلمات معتبری مانند 5.3 ، 8.0 ، 2e-3 را دو برابر می دانند. اگر قرار است به عنوان شناور در برنامه استفاده شوند ، باید با حرف f به پایان برسند: 5.3f ، 8.0f ، 2e-3f.

از نوع char برای ذخیره تک کاراکترها استفاده می شود. جاوا آن را نوعی از نوع عدد صحیح می داند (از آنجا که هر کاراکتر با کد Unicode خاص خود مشخص شده است) ، بنابراین تمام عملکردهای عدد صحیح بر روی char اعمال می شوند.

مقادیر بولی (درست یا نادرست) با نوع بولی نشان داده می شوند.

بنابراین ، جاوا هشت نوع ساده را تعریف می کند که ویژگی های آن در ارائه شده است جدول:

اعلامیه متغیر

در جاوا (مانند بسیاری از زبانهای دیگر) ، لازم است قبل از استفاده از آن توضیح دهید. توصیف یک متغیر این است که به آن نامی بدهید و نوع آن را تعریف کنید.

هنگام اعلام یک متغیر ، ابتدا نوع (که می تواند یکی از انواع ساده باشد ، نام یک کلاس یا رابط) ، سپس نام متغیر نشان داده می شود. در صورت نیاز به متغیر مقدماتی کردن (اختصاص مقدار اولیه) ، مقدار اولیه پس از نام از طریق علامت برابر مشخص می شود. چندین متغیر دیگر از همان نوع را می توان با کاما جدا کرد.

نمونه های اعلامیه متغیر:

int x ؛ // یک متغیر صحیح x را اعلام کنید دو برابر a ، b ؛ // اعلامیه دو متغیر واقعی a و b حرف حرف \u003d "Z" ؛ // یک حرف متغیر کاراکتر را با مقدار اولیه "Z" مقدار دهی کنید boolean b1 \u003d true ، b2 ، b3 \u003d false ؛ // اعلامیه سه متغیر بولی ، اولین آنها درست است ، آخرین نادرست است

عملیات اساسی زبان

متغیرها و می توانند در آن شرکت کنند (که به نوبه خود می توان انواع پیچیده ای را ایجاد کرد). بیایید ساده ترین عملیات را در نظر بگیریم زبان جاوا.

عملیات ریاضی

عملیات مقایسه ، نتیجه یک مقدار بولی است: درست یا نادرست

عملیات منطقی

در مورد عملیات جاوا

&& و || تفاوت در این است که مقدار دوم لزوماً محاسبه نمی شود. به عنوان مثال ، && مقدار عملوند اول را ارزیابی می کند و اگر نادرست باشد ، بلافاصله false را برمی گرداند ، در حالی که || اگر ببیند که عملوند اول درست است ، بلافاصله درست برمی گردد. جاوا نیز عملکردهای مشابهی دارد و | ، آنها مقادیر هر دو عملوند را قبل از انجام عملیاتی روی آنها ارزیابی می كنند.

عملیات شیفت

(کار با نمایش بیت اولین عملوند)

عملیات bitwise

(کار با نمایش بیت از عملوندها)

عمل؟:

عملیات؟ سه تایی ، یعنی سه عملوند دارد. عملوند اول یک شرط است ، یک عبارت بولی. عملوند دوم و سوم عبارتهایی از هر نوع دیگری هستند. عمل به شرح زیر است: اگر شرط درست باشد ، در نتیجه عملوند دوم خود را برمی گرداند و در صورت نادرست ، سومین عمل را برمی گرداند.

به عنوان مثال ، عبارت (5\u003e 3)؟ 7 + 1: 2 * 2 8 خواهد بود ، اما عبارت (5 \u003d\u003d 3)؟ 7 + 1: 2 * 2 - مقدار 4. این نماد توصیفی به نظر نمی رسد ، اما برنامه نویسان اغلب از آن برای کوتاه کردن کد خود استفاده می کنند. بنابراین ، به جای دنباله ای از دستورات:

if (x\u003e 0) y \u003d 45 + a * 2؛ // اگر جمله در زیر بحث شده است در غیر این صورت y \u003d 45 - b * 3 ؛

شما می توانید بنویسید:

Y \u003d 45 + ((x\u003e 0)؟ A * 2: -b * 3) ؛

اپراتور واگذاری

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

این مقدار با استفاده از یک انتساب به یک متغیر مرتبط است. در جاوا ، با علامت برابر ساده نوشته می شود:

متغیر \u003d عبارت؛

یک متغیر همیشه در سمت چپ عملگر انتساب مشخص می شود. در سمت راست باید از نظر نوع با متغیر مطابقت داشته باشد. این می تواند ساده باشد (به عنوان مثال ، یک عدد یا یک نماد):

X \u003d 7 ؛ // متغیر x مقدار 7 را به خود اختصاص می دهد حرف \u003d "س" ؛ // نامه روی "Q" تنظیم شده است

به طور کلی ، عبارت چیزی است که می تواند محاسبه شود (به عنوان مثال ، نتیجه یک عملیات ریاضی یا نتیجه ای که با روش دیگری برگردانده می شود):

A \u003d 7.5 + 2.4 ؛ // متغیر a در نتیجه محاسبات 9.9 اختصاص داده شده است

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

B \u003d a + 1 ؛

متغیر b روی 10.9 تنظیم خواهد شد.

بنابراین ، اپراتور انتساب به شرح زیر عمل می کند. ابتدا مقدار عبارت در سمت راست ارزیابی شده و سپس نتیجه به متغیر مشخص شده در سمت چپ اختصاص می یابد. حتی وضعیت زیر نیز امکان پذیر است:

X \u003d x + 4 ؛

این دستور مقدار فعلی متغیر عدد صحیح x را 4 افزایش می دهد.

و دستورات زیر به درستی نوشته نشده اند و کار نمی کنند:

5 \u003d x + 7 ؛ // باید یک متغیر در سمت چپ باشد x + 3 \u003d 14 ؛ // فقط یک متغیر باید در سمت چپ باشد x \u003d 4.5؛ // متغیر x فقط می تواند مقادیر صحیح را بگیرد

Eclipse قبل از اجرای برنامه با قرار دادن علائم هشدار دهنده در حاشیه ویرایشگر کد سعی می کند خطای موجود در این سطرها را نشان دهد. می بینید که چگونه این کار را انجام می دهد.

درباره نوع ریخته گری

هنگامی که به یک متغیر از یک نوع مقداری از نوع دیگر اختصاص می یابد ، از آن استفاده می شود ریخته گری (تبدیل) انواع... برای انواع عددی (بایت ، کوتاه ، int ، طولانی ، float ، double ، char) به طور خودکار اتفاق می افتد در صورتی که نوع متغیر در حال تغییر می تواند "حاوی" مقداری از نوع دیگر باشد.

به عنوان مثال ، اگر به یک متغیر از نوع int مقداری از نوع بایت اختصاص داده شود ، تبدیل از نوع بایت به نوع int به طور خودکار رخ می دهد. به طور مشابه ، نوع شناور را می توان به نوع دوتایی و غیره ریخت.

اگر بخواهید متغیری از نوع دقیق کمتر (به عنوان مثال ، بایت) را از مقدار دقیق تر (به عنوان مثال ، int) اختصاص دهید ، کامپایلر پیام خطایی ایجاد می کند.

برای ریخته گری نوع ، می توانید استفاده کنید اپراتور بازیگران - قبل از عبارتی که می خواهیم برای آن تبدیل نوع انجام دهیم ، پرانتزها با نوعی که تبدیل به آن انجام می شود ، در داخل براکت ها قرار می گیرند. هنگام ریختن یک نوع عدد صحیح با دقت بالاتر به یک نوع عدد صحیح با دقت کمتر ، تقسیم مدول را می توان با محدوده مجاز نوعی که ریخته گری در آن انجام می شود ، انجام داد و هنگام ریختن یک عبارت دو برابر به یک عبارت شناور ، از دقت بیان کاسته می شود.

طولانی j \u003d (طولانی) 1.0؛ // از عملگر ریخته گری برای طولانی استفاده کنید ، j \u003d 1 char ch \u003d (char) 1001؛ // از عملگر ریخته گری برای char استفاده کنید ، ch \u003d "d" بایت b2 \u003d (بایت) (100)؛ // از عملگر ریخته گری از int به بایت استفاده کنید ، b2 \u003d 100 بایت b3 \u003d (بایت) (100 * 2) ؛ // توجه! تقسیم مدول رخ می دهد ، b3 \u003d -56

خطای عدم تطابق نوع معمولاً هنگامی اعمال می شود که به معنای واقعی استفاده می شود. به عنوان مثال ، شما نمی توانید انتساب a \u003d 7.5 + 2.4 را انجام دهید. اگر متغیر a از نوع float باشد ، از آنجا که متغیرهای 7.5 و 2.4 دو برابر در نظر گرفته می شوند. برای جلوگیری از خطا ، باید از نوع ریخته گری استفاده کنید:

A \u003d (شناور) (7.5 + 2.4)؛

یا برای نشان دادن اینکه کلمات واقعی نیز شناور هستند:

A \u003d 7.5f + 2.4f ؛ // این نیز یک دستور معتبر است

تقریباً برای هر عملیات باینری ، نوع متفاوتی از عملگر انتساب وجود دارد. به عنوان مثال ، برای عملگر جمع + ، یک عملگر انتساب واحد وجود دارد + \u003d ، که مقدار عملوند را با یک مقدار مشخص افزایش می دهد:

X + \u003d 8 ؛ // همان x \u003d x + 8 (x 8 برابر می شود)

به طور مشابه برای سایر عملیات: عملگرها * \u003d ، - \u003d ، / \u003d ،٪ \u003d ، & \u003d ^ \u003d و غیره:

X * \u003d 3 ؛ // همان x \u003d x * 3 (x 3 برابر افزایش می یابد) b1 ^ \u003d b2 ؛ // همان b1 \u003d b1 ^ b2

تمرین 1

دو متغیر عدد صحیح را اعلام کرده و مقادیری را به آنها اختصاص دهید. جمع و محصول آنها را چاپ کنید.

سریع: می توانید با وارد کردن دستورات لازم پس از دستور ، از پروژه ای که قبلاً در Eclipse ایجاد شده استفاده کنید تا خط "سلام ، جهان!" یا به جای آن

عملگرهای افزایش و کاهش

در مورد عملگرهای افزایش و کاهش

عملگرهای افزایش و کاهش ++ و –– افزایش و کاهش مقدار عملوند یک به یک. استفاده از دستور x ++ بسیار راحت تر است. به جای دستور x \u003d x + 1؛

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

Y \u003d 7 * x ++ ؛

در نتیجه ، متغیر x 1 افزایش می یابد و متغیر y مقداری هفت برابر مقدار قدیمی x می گیرد. همچنین می توانید این دستور را اجرا کنید:

Y \u003d 7 * ++ x ؛

در نتیجه ، متغیر x 1 افزایش می یابد و متغیر y مقداری هفت برابر مقدار جدید x به خود می گیرد.

شرط اگر بیانیه

ساده ترین شکل نوشتن یک عملگر شرطی:

دستور (شرط)

شرایط داخل پرانتز این است بیان بولی، یعنی می تواند درست یا نادرست باشد اگر شرط درست باشد ، دستور اجرا می شود ، در غیر این صورت هیچ اتفاقی نمی افتد. برای مثال:

if (x // اگر مقدار متغیر x کمتر از 17 باشد ، x را به 17 اختصاص دهید

اگر لازم باشد در مواردی که شرط نادرست است ، دستور دیگری اجرا شود ، از فرم گسترده دستور if استفاده کنید:

if (شرط) command1 else command2

در مورد دیگر اگر ساخت و ساز

در مثال بالا ، ممکن است بخواهیم متغیر x را به 5 اختصاص دهیم اگر شرط باشد x اجرا نشده است (چرا ما به آن نیاز داریم ، س anotherال دیگری).

if (x دیگری x \u003d 5 ؛

در صورت نیاز به استفاده از چندین شرایط منحصر به فرد ، می توان آنها را به صورت زیر نوشت:

اگر (شرط 1) فرمان 1 دیگری اگر (شرط 2) فرمان 2 دیگری اگر (شرط 3) دستور 3 ... دیگری دستور N

تمرین 2

دو متغیر عدد صحیح را اعلام کرده و مقادیری را به آنها اختصاص دهید. از دستور if برای یافتن و تولید حداکثر آنها استفاده کنید.

سریع: الگوریتم پیدا کردن حداکثر در هنگام تکرار ساخت های اساسی الگوریتم در نظر گرفته شد.

دستورات مرکب

چندین دستور زبان جاوا را می توان با استفاده از مهاربندهای فرفری در یک دستور مرکب ترکیب کرد. به عنوان مثال ، می توانید بنویسید:

(a \u003d 12 ؛ حرف \u003d "D" ؛)

از دستورات مرکب می توان در هر کجا که دستورات منظم هستند استفاده کرد. به عنوان مثال ، در دستور if ، اگر لازم است در صورت تحقق یک شرط چندین عمل انجام شود:

if (x "S"؛) دیگری (x \u003d 5؛)

ساختار بریس فرفری نیز نامیده می شود بلوک دستوراتو بریس های فرفری هستند مرزها را مسدود کنید.

توجه داشته باشید که علامت گذاری شده در مثال (وقتی مرزهای بلوک روی خطوط جداگانه قرار می گیرند و محتویات بلوک از مرزهای آن با تورفتگی نوشته می شوند) اختیاری است. این فقط یک قاعده سبک برای درک آسانتر برنامه ها و گیج نشدن با مهاربندهای فرفری است که معمولاً در برنامه های جاوا وجود دارد.

در مورد عبارت انتخاب سوئیچ

تغییر بیانیه انتخاب

اغلب انتخاب دستور مورد اجرا به مقدار برخی از متغیرها (یا عبارت ها) بستگی دارد. به عنوان مثال ، از کاربر خواسته می شود که علامت عملیاتی را وارد کند و بسته به نویسه وارد شده ، لازم است نتیجه جمع ، تفریق و غیره نمایش داده شود. یا اگر یک نویسه نادرست وارد شود ، یک پیام خطا وجود دارد. در این حالت ، استفاده از عبارت انتخاب سوئیچ که دارای نشان زیر است راحت است:

سوئیچ (عبارت) (مقدار مورد 1: دنباله دستور 1 قطع ؛ مقدار مورد 2: دنباله دستور 2 قطع

مقدار 1 ، مقدار 2 و غیره ثابت ها یا عباراتی هستند که فقط ثابت ها را درگیر می کنند. بیان در پرانتز بعد از کلمه کلیدی سوئیچ می تواند متغیر باشد. این عبارت ارزیابی شده و سپس نتیجه با یکی از مقادیر بعد از کلمه کلیدی مورد مطابقت دارد. اگر چنین تطبیقی \u200b\u200bیافت شود ، سپس کل دنباله دستورات واقع شده بین دو نقطه و نزدیکترین دستور شکست اجرا می شود. اگر مطابقت پیدا نشد ، توالی پیش فرض دستورات زیر کلمه کلیدی پیش فرض اجرا می شود. برای مثال:

کارگر کار؛ // علامت عملیاتی ، کاربر آن را انتخاب می کند ... // بیایید فرض کنیم که در این لحظه کاربر علامت را انتخاب کرده است سوئیچ (oper) (حالت "+": System.out.println (a + b)؛ break؛ case "-": System.out.println (a - b)؛ break؛ case "*": System.out. println (a * b)؛ break؛ default: System.out.println ( "علامت معامله نامعتبر"); }

می توانید بخش پیش فرض را حذف کنید. در این حالت ، اگر مطابقت پیدا نشد ، هیچ دستوری اجرا نمی شود.

دستور حلقه while

حلقه while به شکل زیر است:

while (شرط) دستور

اگر شرط پرانتز (که عبارت boolean است) درست باشد ، دستور اجرا می شود - بدن حلقه (این می تواند یک دستور ساده یا دنباله ای از دستورات در مهاربندهای مجعد باشد) ، پس از آن برنامه دوباره به اجرای این دستور باز می گردد و این کار را تکرار می کند تا زمانی که شرط نادرست باشد.

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

به عنوان مثال ، قطعه کد زیر اعداد زوج را از 2 تا 10 خارج می کند:

int x \u003d 2 ؛ در حالی که (x<= 10){ System.out.println(x); x += 2; }

در حالی که حلقه با شرایط پس از آن است

روش دیگری برای نوشتن حلقه while وجود دارد:

انجام دستور while (شرط)

هنگام استفاده از این گزینه ، ابتدا دستور اجرا می شود و سپس شرط بررسی می شود. هر دو گزینه به یک روش کار می کنند ، اما در حالت دوم ، بدن حلقه (دستور) حداقل یک بار اجرا می شود ، حتی اگر شرط اولیه نادرست باشد.

تمرین شماره 3

برای چاپ همه اعداد فرد از 1 تا 10 از حلقه while استفاده کنید.

سریع: الگوریتم خروجی اعداد زوج را کمی تغییر دهید.

برای اپراتور حلقه

حلقه for معمولاً وقتی استفاده می شود که از قبل مشخص شود چند بار باید یک دستور (یا توالی دستورات) تکرار شود. فرم زیر دارد:

for (دستور enter ؛ شرط ؛ دستور پرش) حلقه-بدن

دستور مقداردهی اولیه قبل از شروع حلقه اجرا می شود. سپس شرایط پرش (که عبارت boolean است) بررسی می شود. اگر این شرط درست باشد ، فرمانی که بدنه حلقه را تشکیل می دهد (یا مجموعه ای از دستورات). سپس دستور jump اجرا می شود و همه چیز از ابتدا شروع می شود. دستورالعمل پرش معمولاً متغیری را تغییر می دهد که صحت شرایط را تحت تأثیر قرار می دهد و دستورالعمل آغازین توصیف این متغیر است.

به طور معمول حلقه for به این صورت استفاده می شود:

برای (int i \u003d 1؛ i<= 10; i++) тело_цикла;

در این مثال ، loop_body دقیقاً 10 بار اجرا می شود. در این حالت ، در هر تکرار ، متغیر i در دسترس خواهد بود (که متغیر حلقه نامیده می شود) ، که به ترتیب مقادیر 1 تا 10 را اجرا می کند. قطعه برنامه بعدی اعداد زوج را از 2 تا 10 خارج می کند (شبیه به مثال حلقه while):

برای (int i \u003d 1؛ i<= 5; i++) System.out.println(i*2);

تمرین 4

برای چاپ تمام اعداد فرد از 1 تا 10 از حلقه for استفاده کنید.

بیانیه ها را بشکنید و ادامه دهید

وقتی متن حلقه (برای یا در حالی که) از چندین دستور تشکیل شده است ، ممکن است وضعیتی بوجود آید که در تکرار بعدی نیازی به اجرای همه آنها نباشد. در این حالت ، دستورات break و Continue مفید هستند.

دستور break ، اجرای حلقه فعلی را خاتمه می دهد ، صرف نظر از اینکه شرط پایان آن رعایت شده باشد.

دستور Continue اجرای تکرار حلقه فعلی را خاتمه می دهد. یعنی اگر این عملگر در بدنه حلقه مشاهده شود ، در این صورت بقیه دستورات زیر حذف شده و تکرار مجدد (تکرار) حلقه شروع می شود.

نتیجه

علیرغم این واقعیت که مطالب درس اول کاملاً گسترده است ، اما نباید دانش آموزانی را که از قبل با حداقل یک زبان برنامه نویسی آشنایی دارند ، مشکلی ایجاد کند ، زیرا ساخت و ساز در همه زبان ها یکسان است و شما فقط باید قوانین نوشتن آنها را بنویسید (نحو). اگر آشنایی با سایر زبانهای برنامه نویسی ضعیف بوده است ، شما به تکالیف بیشتری در مورد کتابچه راهنما و حل کارهای اضافی نیاز دارید. بهترین گزینه در این مورد ، خواندن فصلهای توصیه شده از ادبیات قبل از درس بعدی است.

ادبیات اضافی

1. ویازوویک N.A. برنامه نویسی جاوا (فصل 1 - 4 ، 7 ، 10)

2. Khabibullin I.Sh. جاوا خودآموز 2. (فصل 1)

توجه ویژه ای به انواع داده های جاوا و قوانین ریخته گری داشته باشید ، که در این آموزش به طور مفصل به آنها پرداخته نشده است. یک برنامه نویس حرفه ای همیشه باید در برنامه های خود امکان یک مقدار متغیر را که از نوع مجاز آن فراتر از حد مجاز است کنترل کند. خطاهای تایپ تایپ یکی از رایج ترین ها و تشخیص آنها دشوار است. فصل 4 و 7 کتاب اول برای همه دانش آموزان متقاضی کسب نمره عالی بسیار توصیه شده است.

از اختراع جاوا تا به روزرسانی نحو و توابع ، چندین نکته مهم وجود دارد که قابل توجه است:

  • جاوا 1.0: آغاز یک زبان برنامه نویسی.
  • جاوا 1.1 ، 1.2 ، 1.3 ، 1.4تغییرات زیادی در نحو و عملکرد وجود ندارد.
  • جاوا 1.5 (یا جاوا 5) همراه با افزودن برخی مفاهیم جدید ، تغییرات بزرگی ایجاد شده است.
    • عمومی
    • جعبه خودکار / جعبه گشایی
    • به روز رسانی عملکرد چرخه برای ("برای هر").
    • انواع انتقال (شمارشهای بی خطر).
    • Varargs (استدلال های متغیر)
    • واردات استاتیک
    • فراداده
  • جاوا 6.7 هیچ تغییر بزرگی در زبان وجود ندارد.
  • جاوا 8 همراه با افزودن برخی مفاهیم و توابع جدید ، تغییر بزرگی در زبان ایجاد شده است:
    • روش های پیش فرض رابط
    • عبارات لامبدا
    • روشهای مرجع
    • حاشیه نویسی های قابل تکرار
    • پخش جریانی

در این مقاله ، توابع و نحوها را به شما معرفی می کنم جاوا 8.

2- روشهای پیش فرض رابط

جاوا 8 به شما امکان می دهد با استفاده از کلمه کلیدی یک روش غیر بصری به رابط کاربری اضافه کنید پیش فرض... این روش ها به این صورت قابل درک است روشهای پیشرفته... این اولین مثال شماست:

بسته org.o7planning.tutorial.j8.itf؛ فرمول رابط عمومی (// اعلام یک روش انتزاعی. محاسبه مضاعف (int a) ؛ // اعلام یک روش غیر انتزاعی. // استفاده از کلمه کلیدی پیش فرض .sqrt (a)؛))

و کلاس فرمولرابط را پیاده سازی می کند فرمول .

FormulaImpl.java

بسته org.o7planning.tutorial.j8.itf؛ // کلاس فرمول رابط را اجرا می کند. کلاس عمومی FormulaImpl فرمول را پیاده سازی می کند (// شما فقط باید روش انتزاعی فرمول را اجرا کنید.

FormulaTest.java

بسته org.o7planning.tutorial.j8.itf؛ کلاس عمومی FormulaTest (public static void main (رشته های آرایه ای)) (فرمول فرمول \u003d فرمول جدید جدید) (//؛ ؛ // \u003d\u003d\u003e 600 مقدار دو برابر 2 \u003d formula. محاسبه (25)؛ System.out.println ("مقدار 2 \u003d" + مقدار 2)؛))

3- رابط کاربری

جاوا 8 فکر می کند که رابط ها یک روش انتزاعی دارند - این همان است رابط کاربری (رابط کاربری) می توانید از حاشیه نویسی استفاده کنید FuctionalInterfaceبرای علامت گذاری رابط کاربری خود به عنوان یک رابط کاربری ، این اختیاری است. با این حال ، کامپایلر (کامپایلر) جاوااگر به طور تصادفی روش انتزاعی دیگری به رابطی که با این حاشیه نویسی شده اضافه کنید ، خطایی را به شما اطلاع می دهد.

در زیر چند نمونه عملی با ذکر شده است FunctionalInterface:

مثال زیر معتبر است عملکردی زیرا فقط یک روش انتزاعی دارد.

بسته org.o7planning.tutorial.j8.funcitf؛ FunctionalInterface رابط عمومی Foo (void something ()؛ default void defaultMethod () (System.out.println ("..")؛))

بی اعتبار:



واقعاً:



بی اعتبار:



واقعاً:



4- بیان لامبدا

ابتدا به نحوه سازماندهی Java قبل از نسخه 8 می پردازیم مجموعه .

همچنین مشاهده کنید:

مرتب سازی بر اساس 8 مثال Java

بسته org.o7planning.tutorial.j8.lambda؛ وارد کردن java.util.Arrays؛ وارد کردن java.util.Clections؛ وارد کردن java.util.Comparator؛ وارد کردن java.util.List؛ کلاس عمومی SortBefore8Example (public static void main (String args) (// لیست میوه ها. لیست میوه ها \u003d Arrays.asList ("گریپ فروت" ، "سیب" ، "دوریان" ، "گیلاس") ؛ // از روش ابزار Collections // برای توزیع مجدد مجموعه استفاده کنید. // یک مقایسه کننده تهیه کنید. مجموعه ها. مرتب سازی (میوه ها ، مقایسه جدید () (@ Override public int مقایسه (رشته o1 ، رشته o2) (بازگشت o1.compareTo (o2) ؛)))) برای (میوه رشته ای: میوه ها) (System.out.println (میوه) ؛))))

نتیجه اجرای مثال بالا:



جاوا 8 در نظر می گیرد که رابط ها فقط یک روش دارند که یک رابط عملکردی است ( رابط کاربری) بر این اساس ، هنگام پیاده سازی یک رابط ، فقط باید روشی بنویسید که این روش مجزا را پیاده سازی کند. مقایسه کننده یک رابط است که فقط یک روش انتزاعی دارد و یک رابط کاربردی است ( رابط کاربری) می توانید مثال بالا را با نحو دوباره بنویسید Lambda Java 8:

SortJava8Example.java

بسته org.o7planning.tutorial.j8.lambda؛ وارد کردن java.util.Arrays؛ وارد کردن java.util.Clections؛ وارد کردن java.util.List؛ کلاس عمومی SortJava8Example (public static void main (رشته های کمان)) (// لیست میوه ها. لیست میوه ها \u003d Arrays.asList ("گریپ فروت" ، "سیب" ، "دورین" ، "گیلاس")؛ // از روش ابزار Collections برای توزیع مجدد لیست بالا استفاده کنید. // یک مقایسه کننده برای پارامتر دوم روش تهیه کنید. // از آنجا که Comparator یک رابط با یک روش واحد است. // \u003d\u003d\u003e را می توان با عبارت Lambda مخفف کرد. // نیازی به نوشتن نام رابط نیست ، // نیازی به نوشتن نام روش نیست. مجموعه ها. مرتب سازی (میوه ها ، (رشته o1 ، رشته o2) -\u003e (بازگشت o1.compareTo (o2) ؛))؛ برای (میوه رشته ای: میوه ها) (System.out.println (میوه) ؛))))

در یک بلوک فرمان ، اگر فقط یک دستور وجود دارد ، می توانید () را حذف کنید و می توانید آن قسمت از کد را به صورت مختصر تر بنویسید.

مجموعه ها. مرتب سازی (میوه ها ، (رشته o1 ، رشته o2) -\u003e o1.compareTo (o2))؛

حتی کامپایلر (کامپایلر) جاوابه اندازه کافی هوشمند است که می فهمد شما چه نوع وسایلی را برای سازماندهی نیاز دارید ، در این مثال این منظره است رشته... بنابراین ، مقایسه کننده ( مقایسه کننده ) مطمئناً به معنی مقایسه انواع داده ها است رشته... می توانید آن را مختصرتر بنویسید.

مجموعه ها. مرتب سازی (میوه ها ، (o1 ، o2) -\u003e o1.com مقایسه (o2)) ؛

مثالهای دیگر با عبارت Lambda.

بسته org.o7planning.tutorial.j8.lambda؛ مبدل رابط عمومیFunctionalInterface (تبدیل T (F از) ؛)

از رابط استفاده کنید مبدل به عنوان جاوا قبل از نسخه 8 (یعنی استفاده نکنید لامبدا).

ConverterBefore8Example.java

بسته org.o7planning.tutorial.j8.lambda؛ کلاس عمومی ConverterBefore8Example (public static void main (String args)) (// مقداردهی اولیه مبدل. مبدل مبدل \u003d مبدل جدید () (Override public Integer convert (String from) (بازگشت Integer.parseInt (از)؛))؛ // \u003d\u003d\u003e 100 عدد عدد صحیح \u003d converter.convert ("0100")؛ System.out.println ("Value \u003d" (! LANG: + value)؛))

با استفاده از بیان لامبدا بر جاوا 8:

ConveterJava8Example.java

بسته org.o7planning.tutorial.j8.lambda؛ کلاس عمومی ConveterJava8Example (public static void main (String args) (// Converter is FunctionalInterface // استفاده از نحو جاوا 8 (Lambda) // در مورد: ایجاد شی object مستقیماً از FunctionalInterface. مبدل مبدل 1 \u003d (رشته از) -\u003e (بازگشت Integer.parseInt (از) ؛)؛ // \u003d\u003d\u003e 100 عدد عدد صحیح 1 \u003d مبدل 1. تبدیل ("0100"); System.out.println("Value1 = " + value1); // Или проще: Converter!} مبدل 2 \u003d (از) -\u003e Integer .parseInt (از)؛ // \u003d\u003d\u003e 200 عدد صحیح 2 \u003d converter2.convert ("00200")؛ System.out.println ("مقدار 2 \u003d" + مقدار 2)؛ // اگر این روش فقط یک پارامتر دارد ، می توانید () را رد کنید. مبدل مبدل 3 \u003d از -\u003e Integer .parseInt (از)؛ // \u003d\u003d\u003e 300 عدد صحیح 3 \u003d converter3.convert ("00300")؛ System.out.println ("مقدار 3 \u003d" + مقدار 3)؛ ))

5- API رابط کاربری

5.1- java.util.function.Conumer

مصرف كننده (مصرف كننده) جاوا 8... این یک روش انتزاعی دارد که یک پارامتر ورودی را می گیرد و این روش هیچ چیزی را بر نمی گرداند.

بسته java.util.function؛ وارد کردن java.util.Objects؛ FunctionalInterface مصرف کننده رابط عمومی (// این روش یک پارامتر ورودی را می گیرد و هیچ چیزی بر نمی گرداند. از پذیرش (T t) اجتناب کنید؛)

استفاده از روش لیست برای هر (مصرف کننده) :

// java.util.List گسترش java.util.Collection (قابل تکرار شدن گسترش می یابد) // رابط java.util.Iterable: void default forEach (Consumer اقدام) (Objects.requireNonNull (اقدام)؛ برای (T t: این) (action.accept (t)؛))

ConsumerExample.java

بسته org.o7planning.tutorial.j8.api؛ وارد کردن java.util.Arrays؛ وارد کردن java.util.List؛ وارد کردن java.util.function.Conumer؛ ConsumerExample کلاس عمومی (// از روش List.forEach (Consumer) با نحو جاوا استفاده کنید< 8. // Напечатать список элементов List. public static void beforeJ8() { List list \u003d Arrays.asList ("a" ، "b" ، "c" ، "a1" ، "a2")؛ لیست برای هر (مشتری جدید) () (Override void عمومی قبول (رشته t) (System.out.println (t)؛))))؛ ) // از روش List.forEach (Consumer) با نحو موجود در جاوا 8. استفاده کنید // با استفاده از یک عبارت Lambda. باطل عمومی استاتیک java8Consumer () (لیست list \u003d Arrays.asList ("a" ، "b" ، "c" ، "a1" ، "a2")؛ list.forEach ((رشته t) -\u003e (System.out.println (t)؛))؛ ) // از روش List.forEach (Consumer) با نحو موجود در جاوا 8. استفاده کنید // با استفاده از یک عبارت Lambda. // (ساده تر) java8ConsumerMoreSimple عمومی () فهرست list \u003d Arrays.asList ("a" ، "b" ، "c" ، "a1" ، "a2")؛ list.forEach ((رشته t) -\u003e System.out.println (t))؛ ))

5.2- java.util.function.Predict

منکر یک رابط عملکردی قابل دسترسی است جاوا 8... این یک روش انتزاعی دارد که یک پارامتر ورودی را می گیرد و متد یک مقدار را برمی گرداند بولی (درست غلط). این روش برای ارزیابی مناسب بودن پارامتر ورودی برای موارد بولی استفاده می شود یا خیر.

بسته java.util.function؛ وارد کردن java.util.Objects؛ @ FunctionalInterface رابط عمومی Predicate (// پارامتر ورودی را ارزیابی می کند و درست یا نادرست را برمی گرداند. آزمون بولی (T t) ؛)

در مثال زیر ، لیست اعداد صحیح عجیب و غریب را با استفاده از فیلتر می کنیم منکرگرفتن فرم جاوا 8 و نسخه های قبلی

PredicateExample.java

بسته org.o7planning.tutorial.j8.api؛ وارد کردن java.util.Arrays؛ وارد کردن java.util.List؛ وارد کردن java.util.function.Predict؛ وارد کردن java.util.stream.Stream؛ کلاس عمومی PredicateExample (// استفاده از Stream.filter (Predicate) ) با نحو در جاوا< 8. // Отфильтровать список целых чисел и напечатать нечетные числа. public static void beforeJ8() { List stream2 \u003d stream.filter (گزاره جدید () (آزمون بولی عمومی Override (Integer t) (بازگشت t٪ 2 \u003d\u003d 1 ؛)))؛ ) // از روش Stream.filter استفاده کنید (Predicate ) توسط نحو جاوا\u003e \u003d 8. // لیست اعداد صحیح را فیلتر کرده و اعداد فرد را چاپ کنید. // استفاده از عبارت Lambda. باطل عمومی استاتیک java8Predicate () (لیست list \u003d Arrays.asList (1 ، 4 ، 5 ، 1 ، 7 ، 8) ؛ // جریان شامل عناصر لیست بالا است. پخش جریانی جریان \u003d list.stream ()؛ // جریان جدید فقط شامل اعداد فرد است. پخش جریانی stream2 \u003d stream.filter (t -\u003e (بازگشت t٪ 2 \u003d\u003d 1؛))؛ // Stream.forEach (مصرف کننده ) stream2.forEach (t -\u003e System.out.println (t)) ؛ ) // حتی ساده تر و کوتاه تر. باطل عمومی استاتیک java8ConsumerMoreSimple () (لیست list \u003d Arrays.asList (1 ، 4 ، 5 ، 1 ، 7 ، 8) ؛ // جریان شامل عناصر لیست بالا است. پخش جریانی جریان \u003d list.stream ()؛ stream.filter (t -\u003e t٪ 2 \u003d\u003d 1) .forEach (t -\u003e System.out.println (t))؛ ))

5.3- java.util.function.Function

تابع یک رابط عملکردی قابل دسترسی است جاوا 8... این یک روش انتزاعی دارد که یک پارامتر ورودی را می گیرد و این روش یک شی. دیگر را برمی گرداند.

بسته java.util.function؛ وارد کردن java.util.Objects؛ عملکرد رابط عمومیFunctionalInterface (// این روش یک پارامتر را می گیرد. // یک مقدار R اعمال می شود را برمی گرداند (T t) ؛)

مثال: با در اختیار داشتن یک لیست رشته، چاپ رشته در لیستی با حروف بزرگ

FunctionExample.java

بسته org.o7planning.tutorial.j8.api؛ وارد کردن java.util.Arrays؛ وارد کردن java.util.List؛ وارد کردن java.util.function.Function؛ وارد کردن java.util.stream.Stream؛ کلاس عمومی FunctionExample (// از روش Stream.map (عملکرد) با نحو جاوا استفاده کنید< 8. // Напечатать список элементов List. public static void beforeJ8() { List جریان \u003d list.stream ()؛ // Stream.map (عملکرد): // پخش جریانی نقشه (عملکرد نقشه بردار) // جریان جدیدی را با عناصر تغییر یافته برمی گرداند. پخش جریانی streamUpper \u003d stream.map (عملکرد جدید () (@ Override رشته عمومی اعمال می شود (رشته t) (بازگشت t \u003d\u003d null؟ تهی: t.toUpperCase ()؛))))؛ streamUpper.forEach (t -\u003e System.out.println (t)) ؛ ) public void void java8Function () (لیست list \u003d Arrays.asList ("a" ، "c" ، "B" ، "e" ، "g") ؛ // جریان شامل موارد لیست است. پخش جریانی جریان \u003d list.stream ()؛ stream.map (t -\u003e t \u003d\u003d null؟ null: t.toUpperCase ()). forEach (t -\u003e System.out.println (t))؛ ) public void main void (رشته های رشته ای) (beforeJ8 ()؛ java8Function ()؛))

رابط های عملکردی مشابه:

  • java.util.function.IntFunction
  • java.util.function.DoubleFunction
  • java.util.function.LongFunction

FunctionalInterface رابط عمومی IntFunction (R اعمال (مقدار int) ؛)FunctionalInterface رابط کاربری عمومی LongFunction (R اعمال می شود (مقدار طولانی) ؛)FunctionalInterface رابط عمومی DoubleFunction (R اعمال می شود (ارزش دو برابر) ؛)

5.4- java.util.function.Sulier

تامین کننده یک رابط عملکردی قابل دسترسی است جاوا 8... این یک روش انتزاعی منفرد و بدون پارامتر دارد و متد یک شی را برمی گرداند.

بسته java.util.function؛ FunctionalInterface تامین کننده رابط عمومی (// این روش هیچ پارامتری ندارد. // اما نتیجه ای را برمی گرداند. T get ()؛)

SupplierExample.java

بسته org.o7planning.tutorial.j8.api؛ وارد کردن java.util.function.Supplier؛ کلاس عمومی SupplierExample (// روش با پارامتر Supplier ... نمایش خالی استاتیک عمومی (تأمین کننده supp) (System.out.println (supp.get ())؛) // عدم استفاده از عبارت Lambda. خلاoid استاتیک عمومی قبل از J8 () (نمایشگر (تأمین کننده جدید () (Override رشته عمومی دریافت () (بازگشت "سلام"؛)))؛ نمایشگر (تأمین کننده جدید) () (Override رشته عمومی دریافت () (بازگشت "جهان" ؛)))؛ ) // استفاده از عبارت Lambda. void public static vava java8Supplier () (display (() -\u003e (return "Hello"؛))؛ display (() -\u003e (return "World"؛))؛) // با استفاده از عبارت Lambda. // (حتی کوتاه تر). void public static java8SupplierShortest () (display (() -\u003e "Hello")؛ display (() -\u003e "World")؛) public static void main (رشته های آرک) (beforeJ8 ()؛ System.out.println (" ----------- ")؛ java8SupplierShortest ()؛))

مقدار a و b و مقدار برگشتی int.

MyFunction.java

بسته org.o7planning.tutorial.j8.mref؛ FunctionalInterface رابط عمومی MyFunction (// این روش دارای 2 پارامتر a ، b است و int.public int doSomething (int a ، int b) را برمی گرداند))

MyMathUtils یک کلاس با دو روش استاتیک است که برای محاسبه جمع و اختلاف دو عدد استفاده می شود int.

MyMathUtils.java

بسته org.o7planning.tutorial.j8.mref؛ کلاس عمومی MyMathUtils (// این روش دارای 2 پارامتر a ، b است و int را برمی گرداند. // این روش نام متفاوتی دارد ، // اما ساختار مشابه MyFunction.doSomething (int ، int) است. public static int sum (int a، int b) (بازگشت a + b؛) public static int minus (int a، int b) (بازگشت a - b؛))

MethodReferenceExample.java

بسته org.o7planning.tutorial.j8.mref؛ کلاس عمومی MethodReferenceExample (// سومین پارامتر این روش MyFunction (رابط کاربری) است. // هنگام استفاده از این روش: // می توانید برای پارامتر سوم یک مرجع متد منتقل کنید. // (روش ها باید از همان نوع MyFunction باشند). public static int action (int a، int b، MyFunction func) (بازگشت func.doSomething (a، b)؛) public void main main (Args string) (int a \u003d 100؛ int b \u003d 30؛ // مرجع روش Pass MyMathUtils.sum int c \u003d action (a، b، MyMathUtils :: sum)؛ // \u003d\u003d\u003e 130. System.out.println ("c \u003d" + c)؛ // مرجع روش را به MyMathUtils.minus منتقل کنید. int d \u003d action (a، b، MyMathUtils :: منهای)؛ // \u003d\u003d\u003e 70 System.out.println ("d \u003d" + d)؛ // مرجعی را به روش Math.subtractExact منتقل کنید. int e \u003d action (a، b، Math :: subtractExact)؛ // \u003d\u003d\u003e 70 System.out.println ("e \u003d" + e)؛ // ارجاع مرجع روش Math.min int f \u003d action (a، b، Math :: min)؛ / / \u003d\u003d\u003e 30 System.out.println ("f \u003d" + f)؛))

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