نقشه راه یک توسعه دهنده جاوا
یکی از دوستان من تعجب می کرد که چرا توسعه دهندگان همیشه اینقدر خوشحال هستند. پاسخی که او دریافت کرد ساده و شگفتانگیز بود: آنها کاری را که دوست دارند انجام میدهند و پول زیادی به دست میآورند. به دنیای توسعه دهندگان نرم افزار خوش آمدید.دستمزد توسعه دهنده نرم افزار
من می خواهم در مورد حقوق توسعه دهندگان به شما بگویم. چگونه زمین با حقوق است، کجا باید کار کنید و کجا نباید بروید. اگر توسعهدهنده نیستید و سعی میکنید به تنهایی آن را حل کنید، ممکن است دادههای بحثبرانگیزی دریافت کنید. نکته اصلی این است که عامل اصلی تأثیرگذار بر حقوق یک توسعهدهنده صلاحیت نیست، بلکه محل کار است. گاهی اوقات، با توجه به سطح صلاحیت یکسان، تفاوت بین محل کار خوب و بد می تواند 2 تا 10 برابر باشد(!) در هر لحظه از زمان صلاحیت شما ثابت است. شما نمی توانید در یک ماه دو برابر صلاحیت شوید و دو برابر بیشتر حقوق بگیرید. اما شما می توانید در یک ماه یک محل کار را تغییر دهید و دو برابر حقوق بگیرید. یک بار در جریان دو ماه حقوق من ضربدر سه (!) - تجربه فراموش نشدنی. بنابراین، بیایید دریابیم که کدام مکان بهترین است. در اینجا سه عامل موثر بر سطح حقوق در شرکت ها آورده شده است:- اینکه آیا کسب و کار اصلی یک شرکت توسعه نرم افزار است
- خواه شرکت در بازار جهانی باشد یا محلی
- دفتر اصلی کجاست: کشور توسعه یافته یا کشور در حال توسعه
اعداد خاص
از آنجایی که حقوق ها در نقاط مختلف جهان متفاوت است، پیشنهاد می کنم حقوق برنامه نویس ارشد جاوا با 5 سال سابقه را به عنوان نقطه شروع در نظر بگیرید و آن را "حداکثر 5 سال" بنامید. تمام ارقام زیر به عنوان درصدی از این مبلغ ارائه می شود. در اینجا چند نمونه از حقوق حداکثر 5 ساله در شهرهای مختلف جهان آورده شده است: در زیر نشان داده شده است که یک برنامه نویس ارشد جاوا با تجربه 5 ساله بسته به شرکتی که در آن کار می کند چقدر می تواند درآمد کسب کند: عجیب ترین چیز در مورد وضعیت فعلی چیست؟ نیمی از برنامه نویسان در شرکت های سطح 1 و 2 کار می کنند. میخوای بدونی، گیرش چیه؟ صدها شغل خالی در شرکت های سطح 3 و 4 وجود دارد. این شرکت ها مایلند به شما حقوق بالاتر و معمولاً شرایط کاری بهتر را ارائه دهند. من دو جاوا جونیور را می شناسم، یکی از آنها با پرداخت حدود 3٪ از "حداکثر 5 سال" (شرکت سطح 1)، و دیگری با 30٪ از "حداکثر 5 سال" حقوق (سطح 4) شغلی پیدا کرد. پس چرا کمتر بگیریم؟ تقاضا برای برنامه نویسان از پیشنهاد بیشتر است - جایی که حقوق کمتری دریافت می کنید کار نکنید! نتیجه گیری 1: میانگین حقوق برای توسعه دهندگان جاوا (با هر تجربه ای) 40٪ - 50٪ از حقوق "حداکثر 5 سال" است. نتیجه 2: اگر در شرکت های سطح 1 و 2 کار نکنید و در شرکت های سطح 3 و 4 کار کنید، میانگین حقوق شما در 5 سال حدود 90 تا 110 درصد حقوق «حداکثر 5 سال» خواهد بود.آنچه می توانید به دست آورید مگر اینکه کارهای احمقانه انجام دهید
اگر همین الان شروع به کار روی آموزش خودآموزی در برنامه نویسی کنید، حقوق شما می تواند به شکل زیر باشد:طرح
0-3 ماه (دانشجویی)
شما اطلاعات کمی در مورد برنامه نویسی دارید. ممکن است آن را در مدرسه یا کالج در سطح پایه خوانده باشید. کاری که باید انجام دهید این است که برنامه نویسی و یادگیری جاوا را یاد بگیرید. هدف شما این است که به عنوان برنامه نویس Java Junior در یک شرکت سطح 3 یا بالاتر استخدام شوید. در سه ماه اول برنامه هیچ چیزی به دست نمی آورید، زیرا فقط در حال یادگیری نحوه برنامه ریزی هستید. اما هر چه زودتر شروع کنید بهتر است. بهترین زمان هم اکنون است. در آینده، وقتی خانواده ای داشته باشید و وام های زیادی داشته باشید، دریافت مجدد صلاحیت بسیار سخت تر خواهد بود. برای تصحیح اشتباه خود باید پولی را کنار بگذارید تا حداقل یک سال زندگی عادی را بپردازید. مرتکب اشتباهات احمقانه نشوید3 تا 15 ماه (توسعهدهنده جاوا جونیور)
شما در حال حاضر به عنوان یک توسعه دهنده نرم افزار کار می کنید و تجربه شما هر روز افزایش می یابد. آرام نگیرید. قبل از استراحت روی پاروها باید کارهای زیادی انجام دهید. کاری که شما باید انجام دهید این است که فناوری هایی را مطالعه کنید که به عنوان یک توسعه دهنده میانی به آن نیاز دارید. این ها چه هستند؟ جهان مدام در حال تغییر است. من تو را با نصیحت بار می کنم و زندگی همه چیز را تغییر خواهد داد. چند جای خالی در وب پیدا کنید و ببینید چه چیزی باید درخواست کنید. حتما کتابی از بروس اکل "تفکر در جاوا" را بخوانید. هدف شما در سال اول کار به عنوان برنامه نویس Java Junior رسیدن به سطح Java Middle Developer است. هیچ کس نمی گوید که این کار آسان است، اما برای یک فرد هدفمند امکان پذیر است. دستمزد شما را در یک لحظه تا 40 درصد از "حداکثر 5 سال" افزایش می دهد (50 هزار دلار برای SF و لندن، 6 هزار دلار برای بنگلور).برنامه نویسی دو روزه (توسعه دهنده میانی جاوا، سطح 1)
شما در سال گذشته کار خوبی انجام داده اید و اکنون یک توسعه دهنده Java Middle هستید. شما می توانید با دریافت 50 درصد از حقوق برنامه نویس ارشد جاوا به خوبی زندگی کنید. در محل کار به شما وظایف جدی داده می شود و تجربه شما به طور قابل توجهی افزایش می یابد. دو یا سه سال دیگر به سطح توسعهدهنده ارشد جاوا خواهید رسید. نیازی به عجله نیست. به هر حال حقوق بالایی دریافت نخواهید کرد. آنچه شما باید انجام دهید این است که الگوهای طراحی را بیاموزید، بخوانید - کد مک کانل کامل شده است. کیفیت کد و مهارت های تیم خود را کامل کنید. قانون خواندن 1 کتاب در مورد برنامه نویسی کامپیوتر را در هر ماه ایجاد کنید. سپس، در 4 سال، 50 کتاب از بقیه باهوشتر خواهید شد. آن را به تعویق نیندازید: شما مقدار بیشتری از اوقات فراغت نخواهید داشت، علاوه بر این، به احتمال زیاد خانواده تشکیل می دهید، یا اگر دارید، بزرگتر می شود. هدف شما این است که چند فناوری را برای تخصص به عنوان یک توسعه دهنده ارشد جاوا انتخاب کنید. شما نمی توانید همه آنها را یاد بگیرید، می دانید. و همیشه یک تصمیم خوب برای تبدیل شدن به یک گورو در یک تخصص واحد است.برنامه نویسی سه روزه (توسعه دهنده میانی جاوا، سطح 2)
شما اکنون یک توسعه دهنده باتجربه هستید و در فکر تبدیل شدن به یک توسعه دهنده ارشد هستید. خوشایند و همچنین معتبر است. حقوق شما بیش از 60 درصد «حداکثر 5 سال» است (10 هزار دلار در بنگلور، 25 هزار دلار در کیف، 40 هزار دلار در برلین، 80 هزار دلار در نیویورک). از این لحظه به بعد تقاضا برای افراد حرفه ای مانند شما افزایش می یابد. همیشه میتوانید ظرف چند روز شغلی پیدا کنید و به سختی کمتر از الان درآمد کسب خواهید کرد. البته اگر کار احمقانه ای انجام ندهید. کاری که باید انجام دهید این است که به مطالعه فناوری هایی که انتخاب کرده اید ادامه دهید. بهتر کار کن نه به خاطر کارفرمایتان، به خاطر خودتان. برای شرکت در پروژههایی که شامل فناوریهای امیدوارکننده هستند (مانند BigData، در حال حاضر این مقاله در حال نوشتن است) درخواست دهید. به هر حال شما 8 ساعت در روز را در دفتر سپری خواهید کرد، پس چرا پول بیشتری برای آن به دست نیاورید، و مهمتر از آن، ارزشمندترین تجربه ای است که در آینده به آن نیاز خواهید داشت. هدف شما یافتن شغل جدید است. یک تیم خوب همیشه پیدا می شود. شما با پروژه ها و فناوری های جدید روبرو خواهید شد. شما نیازی به ریشه کردن روی صندلی خود ندارید. اگر هنوز در یک شرکت سطح سوم کار می کنید، به استخدام در سطح چهارم فکر کنید.برنامه نویسی سال پنجم (توسعه دهنده ارشد جاوا، سطح 1
شما اکنون یک توسعه دهنده ارشد هستید. شاید لیاقتش را نداشتی و حسش می کنی. با این حال من تبریک می گویم. مهم نیست که اکنون شایسته موقعیت خود هستید یا خیر، مهم این است که در آینده شایسته آن باشید. من فکر می کنم شما موافق باشید که بهتر است یک شغل خوب پیدا کنید و بعد از رشد به سطح مورد نیاز و برعکس. امیدوارم توصیه من برای خواندن یک کتاب در ماه را فراموش نکرده باشید؟ اکنون هر دانش آموزی به دانش و مهارت شما حسادت می کند. برای دقیق تر، او بر آنها دعا خواهد کرد. فقط به آن فکر کنید: شما درآمد جدی دارید، نزدیک به 90٪ از حقوق "حداکثر 5 سال". احتمالا هنوز جوان هستی دنیا زیر پای توست کاری که باید انجام دهید این است که فناوری هایی را که انتخاب کرده اید دوباره ارزیابی کنید. شاید، شما نیاز به تغییر تخصص دارید. دنیا تغییر کرده است، فناوریها تغییر کردهاند، و شما در دو سال گذشته دانش زیادی کسب کردهاید. آنچه اکنون انتخاب میکنید، برای چند سال آینده برای شما سرفصل خبر خواهد بود. وقت آن است که فناوری های مورد علاقه خود را انتخاب کنید. هدف شما این است که جهت رشد خود را انتخاب کنید. آنها متعدد هستند، هیچکس نمی تواند همه آنها را نام برد، اما انتخاب شما باید همین الان انجام شود. اگر امروز کمی تغییر ایجاد کنید، در آینده تغییر بزرگی خواهید داشت.برنامه نویسی سال ششم (برنامه نویس ارشد جاوا، سطح 2)
شما در مورد آینده خود تصمیم گرفته اید و برای تحقق رویای خود کار می کنید. جهتی که به درستی انتخاب شده همراه با تمایل به حرکت رو به جلو - و نتیجه طولانی نخواهد بود. تبریک می گویم. من خوشحالم که می بینم یک نفر دیگر به رویای خود رسیده است. یک حقیقت عمیق وجود دارد. مردم اغلب آنچه را که در یک سال می توانند به دست آورند دست کم می گیرند و کارهایی را که می توانند در پنج سال انجام دهند دست کم می گیرند. به پنج سال پیش نگاه کن اینطور است. کاری که باید انجام دهید این است که از تصمیمات نابخردانه اجتناب کنید و تنبل نباشید. هدف شما انتخاب جهت و حرکت به جلو است. یا فکر کردی اینجا تمام می شود؟ فارغ التحصیلی خود را به خاطر بسپارید. این پایان نیست، فقط آغاز است.شما تخصص آینده
شما می توانید به عنوان متخصص فنی (شاخه بالا)، به عنوان مدیریت (شاخه پایین) یا به عنوان مشاور حرفه ای/مستقل استخدام شده (شاخه متوسط) رشد کنید. همه چیز به آنچه ترجیح می دهید بستگی دارد.حرفه برنامه نویس جاوا
حرفه توسعه دهنده با سایرین متفاوت است. برای کسب درآمد خوب نیازی به مدیر شدن ندارید. اغلب اتفاق می افتد که یک توسعه دهنده ارشد بیشتر از مدیر-رئیس خود درآمد دارد. هرچه تجربه بیشتری کسب کنید، روابط کاری شما با رئیستان قویتر میشود و از «رئیس – زیردستان» به «ستاره و مدیر» تغییر میکند.توسعه دهنده دویست ساله
اگر بیشتر از همه از برنامه نویسی لذت می برید، پس این راه شماست: توسعه دهنده ارشد، سپس توسعه دهنده ارشد فناوری و یک معمار. به این ترتیب می توانید به مدت 50 سال و بیشتر به عنوان یک توسعه دهنده کار کنید. در بیشتر موارد حقوق توسعه دهندگان ارشد و توسعه دهندگان ارشد فناوری از حقوق مدیران آنها بیشتر است. پس ارزش پول خود را بدست آورید.مدیر. تو خوش شانسی که مثل بقیه نیستی
به طرف دشمن رفتی شوخی کردم اگر مهارت های سازمانی عالی را کشف کردید، راه شما این است: سرپرست تیم و سپس مدیر پروژه. این به شما فرصتی می دهد تا رئیس بخش شوید و کسب و کار خود را باز کنید. این چیزی است که شما می خواهید، اینطور نیست؟خانه جاییست که دل آنجا باشد
اگر قبلاً تشکیل خانواده داده اید ، شاید آرزو داشته باشید که در کشوری با اقتصاد قوی، زندگی خوب و آرامی داشته باشید. شاید به فکر مهاجرت به کانادا، ایالات متحده آمریکا، سوئیس یا حتی استرالیا باشید. شما مهارت های عالی و حرفه ای دارید. لازم نیست از شستن ظروف شروع کنید. شما به عنوان یک توسعه دهنده ارشد جاوا شروع می کنید. احتمالاً درآمد زیادی دارد. بد نیست، ها؟ناپل را ببین و نمرد.
شما هنوز خانواده ندارید و عاشق سفر هستید . o Desk همه چیز شماست. مشتری پیدا کنید، با نرخ 20 تا 50 دلار در ساعت موافقت کنید، یک لپ تاپ با خود ببرید و بروید! حقوق شما برای زندگی در هر جای دنیا کافی است. چرا بلافاصله شروع به تحقق رویاهای خود نمی کنید؟من برنامه نمیخوام من دخترم..
اگر دختر هستید ، ممکن است نیاز به مرخصی زایمان داشته باشید . به نظر می رسد یک شوخی جنسیتی است، که هم هست. با این حال، عقل سلیم زیادی در آن وجود دارد. به احتمال زیاد، با گرفتن مرخصی زایمان، می توانید پول مرخصی زایمان زیادی دریافت کنید (در کشورهایی که حمایت اجتماعی بالایی دارند). شرکتهایی هستند که هیچ پولی نمیپردازند، و شرکتهایی هم هستند که خوب پرداخت میکنند. یکی از دانش آموزان من یک سوم حقوق سالانه را در مرخصی زایمان می گرفت. و این اتفاق در بهار 2009 و در جریان اخراجهای استخدامی رخ داد. و بعد از یک سال و نیم ممکن است بازگردید، حداقل توسعه دهنده میانه باشید.لبول 6
1 الی. دید شی خالی
- هی، آمیگو! - سلام الی! امروز یه چیز جالب بهم میگی؟ - امروز در مورد طول عمر یک شی به شما می گویم . پس از ایجاد یک شی، تا زمانی که حداقل یک متغیر آدرس آن را ذخیره کند (حداقل یک مرجع شی وجود دارد) وجود دارد (زندگی می کند). اگر دیگر هیچ مرجعی وجود نداشته باشد، شی می میرد. مثالها: - شی «cat Tommy» از لحظه ایجاد آن در تنها یک خط وجود دارد. در خط بعدی، تنها متغیری که مرجع خود را ذخیره می کند، null می شود و ماشین مجازی جاوا شی را از بین می برد. - شی «cat Sammy» پس از ایجاد در متغیر cat1 ذخیره می شود. یا بهتر است بگوییم cat1 یک ارجاع به شی را ذخیره می کند. سپس چند خط زیر این مرجع در متغیر cat2 کپی می شود. پس از آن یک ارجاع به یک شی دیگر در cat1 ذخیره می شود و ارجاع به «cat Sammy» فقط در cat2 باقی می ماند. در نهایت، در خط آخر متد main، آخرین مرجع به شی روی null تنظیم می شود. - شی «cat Maisy» از لحظه ایجاد آن در تنها یک خط وجود دارد. در خط بعدی به متغیر cat2 مقدار دیگری اختصاص داده می شود و ارجاع به «cat Maisy» از بین می رود. شی غیر قابل دسترس می شود و زباله (مرده) در نظر گرفته می شود. - شی «cat Ginger» از لحظه ایجاد تا پایان روش وجود دارد. در زمان اجرا وقتی متد خارج می شود، متغیر cat1 از بین می رود و بعد از شیء «cat Ginger» نیز از بین می رود. - واضح است. - با این حال، اگر شی Cat را در روشی ایجاد کنید و مرجع آن را در یک متغیر کلاس ذخیره کنید، Cat تا زمانی وجود خواهد داشت که از یک شی موجود دیگر به آن ارجاع داده شود. - معمولاً یک شی بلافاصله از بین نمی رود. ماشین مجازی جاوا گاهی اوقات مجموعه زباله را برای حذف اشیاء استفاده نشده فعال می کند. بعداً در مورد آن به شما خواهم گفت. - اگر می خواهید متغیری ذخیره یک مرجع شی را متوقف کند، می توانید آن را مقدار null یا یک مرجع به شی دیگری اختصاص دهید.2 پروفسور، جمع آوری زباله
- هی، آمیگو! در اینجا یک پیوند مفید در مورد جمع آوری زباله در جاوا وجود دارد. این قطعاً سخنرانیهای عالی من نیست، اما به اندازه کافی خوب است: مبانی جمعآوری زباله جاوا3 الی، نهایی کنید
- دوباره سلام! اکنون به شما معرفی مختصری از متد () finalize میکنم . این متد توسط ماشین مجازی جاوا بر روی شیء قبل از از بین رفتن شیء فراخوانی می شود. در واقع این روش برخلاف سازنده است. در این روش امکان آزادسازی منابع مورد استفاده توسط یک شی وجود دارد. - کلاس Object این متد را دارد، بنابراین، هر کلاسی آن را دارد ( همه کلاس های جاوا به عنوان ارثی از کلاس Object در نظر گرفته می شوند و حاوی یک کپی از متدهای آن هستند ). اگر متد ()finalize را در کلاس خود بنویسید و قبل از نابودی اشیاء این کلاس فراخوانی می شود. مثال: - فهمیدم. - اما یک چیز وجود دارد. ماشین مجازی جاوا خودش تصمیم می گیرد که این متد را فراخوانی کند یا نه. اغلب، اشیایی که در متد ایجاد می شوند و پس از خروج به عنوان زباله اعلام می شوند، بلافاصله و بدون فراخوانی متد ()finalize از بین می روند. این روش یک ابزار دیگر برای کنترل تخصیص منابع خارجی (خارج از JVM) است. بهتر است تمام منابع خارجی استفاده شده را آزاد کنید و زمانی که می خواهید شیء از بین برود، مراجع ذخیره شده را بازنشانی کنید. من از مزایای این روش و جزئیات کار آن در 10 یا 20 سطح می گویم. در ضمن، باید دو چیز را بدانید: چنین روشی وجود دارد و ( تعجب! ) همیشه نامیده نمی شود.4 الی، طول عمر شی
- همچنین می خواهم چند نکته جالب در مورد طول عمر شی به شما بگویم. در جاوا، گم کردن تصادفی شی بسیار دشوار است. اگر یک مرجع شی دارید، به این معنی است که آن شی مطمئناً زنده است. - در داخل یک شی مرجع یک عدد - آدرس این شی را در حافظه ذخیره می کند. شما نمی توانید آن عدد را تغییر دهید، آن را کم یا زیاد کنید. وقتی فقط آدرسی در حافظه دارید نمی توانید یک مرجع ایجاد کنید. شما فقط می توانید یک شی جدید ایجاد کنید و مرجع آن را به یک متغیر اختصاص دهید. این تنها راه برای به دست آوردن یک مرجع جدید است. - می بینم. یعنی اگر تمام ارجاعات شیء را null (پاک) کنم، هرگز مرجع شیء را دریافت نمی کنم و به آن دسترسی پیدا نمی کنم؟ - بله اما اغلب برعکس است - تعداد زیادی اشیاء زنده بدون استفاده وجود دارد. اکثر برنامه ها ده ها شی ایجاد می کنند و در زمان اجرا در لیست های مختلف ذخیره می کنند، اما هرگز آن لیست ها را پاک نکنید. - اغلب، برنامه نویسان اشیاء ناخواسته را به عنوان "حذف شده" برچسب گذاری می کنند، فقط همین. هیچ کس به حذف آنها از لیست اهمیت نمی دهد. بنابراین برنامه های جاوا بزرگ تمایل به باد کردن دارند - اشیاء استفاده نشده بیشتر و بیشتری در حافظه زنده می مانند. - همین. در آینده همیشه توجه شما را به اشیاء بلااستفاده و دفع صحیح آنها جلب خواهم کرد. - باشه، ممنون شما چند مورد را در مورد مراجع روشن کردید.5 دیگو، وظایف مادام العمر Object
- هی، آمیگو! در اینجا چند کار برای شما وجود دارد:وظایف | |
---|---|
1 | 1. متد finalize() از کلاس Cat نوشتن یک متد محافظت شده void finalize() Throwable را در کلاس Cat پرتاب می کند. |
3 | 2. کلاس های Cat and Dog و متد finalize() برای هر کلاس در هر کلاس Cat and Dog یک متد ()finalize بنویسید که به صفحه نمایش پیامی مبنی بر نابودی شی نشان می دهد. |
3 | 3. 50000 شی از کلاس Cat و 50000 شی از کلاس Dog در یک حلقه 50000 شی از کلاس Cat و 50000 شی از کلاس Dog ایجاد کنید. (ماشین مجازی جاوا اشیاء استفاده نشده را از بین می برد، بنابراین متد ()finalize حداقل یک بار فراخوانی می شود). |
4 | 4. Cat counter در سازنده کلاس Cat [public Cat()]، شمارنده cat (متغیر استاتیک catCount همان کلاس) را 1 افزایش دهید. در روش finalize() 1 کاهش دهید. |
6 Elly، کلاس ها و روش های Static
- اینجا یک موضوع جالب جدید است. می خواهم در مورد متغیرهای استاتیک و روش ها به شما بگویم. - اوه، من قبلاً در مورد متغیرهای استاتیک شنیده بودم. در مورد روش های استاتیک نیز حدس می زنم. اما من می خواهم جزئیات بیشتری داشته باشم. - هنگام اعلان متغیرها در یک کلاس، مشخص می کنیم که آیا این متغیرها در یک نمونه مشترک ایجاد می شوند یا اینکه لازم است کپی های آنها برای هر شی ایجاد شود. به طور پیش فرض، یک کپی جدید از متغیر کلاس برای هر شی از این کلاس ایجاد می شود. در اینجا به نظر می رسد: - اگرچه متغیرهای cat1.name و cat2.name در یک کلاس اعلان می شوند - Cat، مقادیر متفاوتی را ذخیره می کنند، زیرا به اشیاء متفاوتی متصل هستند. - واضح است. - یک متغیر استاتیک در یک نمونه وجود دارد. شما باید با استفاده از نام کلاس به آن دسترسی داشته باشید: - این هم واضح است. - متدهای کلاس نیز به دو دسته تقسیم می شوند. متدهای معمولی بر روی شی فراخوانی می شوند و به داده های این شی دسترسی دارند. متدهای استاتیک چنین دسترسی ندارند ، زیرا فقط مرجع شی ندارند. متدهای استاتیک می توانند به متغیرهای استاتیک این کلاس یا سایر روش های استاتیک دسترسی داشته باشند. - روش های استاتیک نمی توانند به روش های غیر ایستا یا متغیرهای غیر استاتیک دسترسی پیدا کنند! - چرا؟ - هر متغیر کلاس معمولی در داخل یک شی قرار می گیرد. هر متدی فقط زمانی می تواند به چنین متغیری دسترسی داشته باشد که به آن شی ارجاع داشته باشد. چنین ارجاعی به روش استاتیک منتقل نمی شود. - روش های معمولی چطور؟ - به متد معمولی ارجاع مخفی به شیئی که این متد روی آن فراخوانی می شود ارسال می شود. متغیری که این مرجع را ذخیره می کند این نامیده می شود . بنابراین، متد همیشه میتواند دادههای شیء خود را دریافت کند یا متد غیراستاتیک دیگری از همان شی را فراخوانی کند. - یک عدد تهی به جای مرجع شیء به یک متد استاتیک ارسال می شود. بنابراین، یک متد استاتیک نمیتواند به متغیرها و متدهای غیراستاتیک دسترسی داشته باشد - فقط هیچ مرجعی به شیئی که به آن مقید شدهاند ندارد. - می بینم. - روشی که روشهای غیراستاتیک معمولی کار میکنند: - و روشهای استاتیک به این ترتیب کار میکنند: - یک متغیر یا یک متد اگر با کلمه کلیدی static اعلان شوند، ثابت است. - و اگر چنین روش هایی بسیار محدود هستند، چه فایده ای دارند؟ - این رویکرد مزایای خود را نیز دارد. - اولاً، برای دسترسی به متدها و متغیرهای استاتیک، نیازی به ارسال هیچ مرجع شیء ندارید . - دوم، گاهی اوقات لازم است که متغیر منحصر به فرد باشد . مانند متغیر System.out (متغیر ثابت خارج از کلاس System). - و سوم،گاهی اوقات لازم است یک متد را فراخوانی کنید تا بتوانید هر شیئی را ایجاد کنید . - به چه مناسبتی؟ - به نظر شما چرا روش main استاتیک اعلام شده است؟ برای فراخوانی آن بلافاصله پس از بارگذاری کلاس در حافظه قبل از ایجاد هر شیئی.7 ریشا، کلاس ها و روش های استاتیک
- علاوه بر روش های استاتیک، کلاس های استاتیک نیز وجود دارد . ما این مورد را بعداً بررسی خواهیم کرد، من فقط میخواهم نمونهای از آن را به شما نشان دهم: - میتوانید به تعداد دلخواه شیء کلاس Cat ایجاد کنید. بر خلاف یک متغیر استاتیک که در یک نمونه وجود دارد. - هدف اصلی اصلاح کننده static قبل از اعلان کلاس، حفظ رابطه بین کلاس Cat و کلاس StaticClassExample است . به طور کلی، کلاس Cat به شی StaticClassExample محدود نمی شود (ارجاع پنهانی ندارد) و نمی تواند به متغیرهای StaticClassExample معمولی (غیر استاتیک) دسترسی داشته باشد. - پس من می توانم در داخل کلاس های دیگر کلاس ایجاد کنم؟ - بله جاوا این امکان را فراهم می کند. حالا زیاد بهش فکر نکن بعداً چیزهای دیگری را توضیح خواهم داد و همه چیز کمی ساده تر خواهد شد. - امیدوارم.8 دیگو، وظایف روش استاتیک
- هی، آمیگو! در اینجا چند کار جالب در مورد روش های استاتیک وجود دارد:وظایف | |
1 | 1. کلاس Cat و متغیر استاتیک catCount یک متغیر استاتیک int catCount در کلاس Cat بنویسید. یک سازنده [ Cat()] عمومی ایجاد کنید که در آن متغیر داده شده باید 1 افزایش یابد. |
2 | 2. متدهای استاتیک: int getCatCount() و setCatCount(int) دو متد استاتیک را به کلاس Cat اضافه کنید: int getCatCount( ) و setCatCount(int) که با استفاده از آنها می توانید تعداد cat ها را دریافت/تغییر دهید (متغیر catCount) |
3 | 3. کلاس Util یک متد استاتیک را دو برابر getDistance (x1, y1, x2, y2) پیاده سازی کنید . باید فاصله بین نقاط را محاسبه کند. از روش double Math.sqrt(double a) برای محاسبه جذر پارامتر پاس شده استفاده کنید |
4 | 4. کلاس ConsoleReader یک کلاس ConsoleReader بنویسید که دارای 4 متد ثابت است: - string readString() برای خواندن رشته ها از صفحه کلید - int readInt() برای خواندن اعداد از صفحه کلید - double readDouble() برای خواندن اعداد کسری از صفحه کلید - void readLn () منتظر فشار دادن enter [از readString()] استفاده کنید. |
5 | 5. کلاس StringHelper یک کلاس StringHelper بنویسید که دارای 2 روش ثابت است: - ضرب رشته (رشته ها، تعداد int) باید تعداد دفعات تکرار رشته را برگرداند. - ضرب رشته (رشته s) باید رشته s تکرار شده 5 بار برگرداند. مثال: Amigo → AmigoAmigoAmigoAmigoAmigo |
9 پروفسور، دامنه استاتیک شی و طول عمر
- بازم منم متاسفانه امروز نمیتونم هیچ لینکی بهتون بدم. آن سخنرانی های بزرگ در جایی گم شده اند. من می ترسم که امروز باید خودتان این کار را انجام دهید. اما بهتر است بیشتر به الی و ریشا گوش دهید، آنها همیشه می توانند چیزی به شما یاد بدهند. با این حال این یکی را امتحان کنید: چرخه حیات شی10 جولیو
- هی، آمیگو! امروز کار بزرگی انجام دادی به همین دلیل است که نمی توانم بیشتر به شما بدهم. بیا بشین، نمایش شروع میشه:11 کاپیتان سنجاب
- سلام سرباز! - صبح بخیر آقا! - یه خبر عالی برات دارم. در اینجا یک بررسی سریع برای تقویت مهارت های شما وجود دارد. این کار را هر روز انجام دهید، و به سرعت مهارت های خود را افزایش خواهید داد. وظایف به طور ویژه برای انجام در Intellij IDEA طراحی شده اند.کارهای اضافی برای انجام در Intellij Idea | |
---|---|
1 | Class Cat و متغیر static catCount یک متغیر استاتیک public int catCount در کلاس Cat بنویسید . یک سازنده [Public Cat()] ایجاد کنید. اجازه دهید متغیر ثابت catCount هر بار که یک cat (یک شی جدید Cat) ایجاد می کنید، 1 افزایش یابد. 10 شی Cat ایجاد کنید و مقدار متغیر catCount را نمایش دهید . |
2 | 2. گربه های ساکن
برای ایجاد متغیر cats از خط کد استفاده کنید: public static ArrayList<Cat> cats = new ArrayList<Cat>(); |
3 | 3. یک اصلاح کننده ایستا را جابجا کنید یک اصلاح کننده استاتیک را جابجا کنید تا کد کامپایل شود. |
4 | 4. حداقل تعداد کلمات کلیدی ثابت حداقل تعداد کلمات کلیدی ثابت را اضافه کنید تا کد کامپایل شده و برنامه با موفقیت کامل شود. |
5 | 5. آیا ایده جدیدی دارید؟ بیا فکر کنیم...
|
6 | 6. KissMyShinyMetalAss کلاسی به نام KissMyShinyMetalAss بنویسید. یک شی از این کلاس ایجاد کنید، سپس آن را روی صفحه نمایش دهید. |
7 | 7. نام سه متغیر استاتیک 3 متغیر استاتیک عمومی بنویسید: String Solution.name ، String Cat.name ، String Dog.name |
GO TO FULL VERSION