CodeGym /وبلاگ جاوا /Random-FA /سطح قدیمی 06
John Squirrels
مرحله
San Francisco

سطح قدیمی 06

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

نقشه راه یک توسعه دهنده جاوا

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

دستمزد توسعه دهنده نرم افزار

من می خواهم در مورد حقوق توسعه دهندگان به شما بگویم. چگونه زمین با حقوق است، کجا باید کار کنید و کجا نباید بروید. اگر توسعه‌دهنده نیستید و سعی می‌کنید به تنهایی آن را حل کنید، ممکن است داده‌های بحث‌برانگیزی دریافت کنید. نکته اصلی این است که عامل اصلی تأثیرگذار بر حقوق یک توسعه‌دهنده صلاحیت نیست، بلکه محل کار است. گاهی اوقات، با توجه به سطح صلاحیت یکسان، تفاوت بین محل کار خوب و بد می تواند 2 تا 10 برابر باشد(!) در هر لحظه از زمان صلاحیت شما ثابت است. شما نمی توانید در یک ماه دو برابر صلاحیت شوید و دو برابر بیشتر حقوق بگیرید. اما شما می توانید در یک ماه یک محل کار را تغییر دهید و دو برابر حقوق بگیرید. یک بار در جریان دو ماه حقوق من ضربدر سه (!) - تجربه فراموش نشدنی. بنابراین، بیایید دریابیم که کدام مکان بهترین است. در اینجا سه ​​عامل موثر بر سطح حقوق در شرکت ها آورده شده است:
  1. اینکه آیا کسب و کار اصلی یک شرکت توسعه نرم افزار است
  2. خواه شرکت در بازار جهانی باشد یا محلی
  3. دفتر اصلی کجاست: کشور توسعه یافته یا کشور در حال توسعه
توجه داشته باشید که شهری که در آن کار می کنید نامربوط است. به این معنی که اگر در بارسلونا پنج برابر کمتر از دوست خود در نیویورک درآمد کسب کنید، احتمالاً عواملی که ذکر کردم بر آن تأثیر گذاشته است. 

اعداد خاص

از آنجایی که حقوق ها در نقاط مختلف جهان متفاوت است، پیشنهاد می کنم حقوق برنامه نویس ارشد جاوا با 5 سال سابقه را به عنوان نقطه شروع در نظر بگیرید و آن را "حداکثر 5 سال" بنامید. تمام ارقام زیر به عنوان درصدی از این مبلغ ارائه می شود. در اینجا چند نمونه از حقوق حداکثر 5 ساله در شهرهای مختلف جهان آورده شده است: سطح قدیمی 06 - 2در زیر نشان داده شده است که یک برنامه نویس ارشد جاوا با تجربه 5 ساله بسته به شرکتی که در آن کار می کند چقدر می تواند درآمد کسب کند: سطح قدیمی 06 - 3سطح قدیمی 06 - 4عجیب ترین چیز در مورد وضعیت فعلی چیست؟ نیمی از برنامه نویسان در شرکت های سطح 1 و 2 کار می کنند. میخوای بدونی، گیرش چیه؟ صدها شغل خالی در شرکت های سطح 3 و 4 وجود دارد. این شرکت ها مایلند به شما حقوق بالاتر و معمولاً شرایط کاری بهتر را ارائه دهند. من دو جاوا جونیور را می شناسم، یکی از آنها با پرداخت حدود 3٪ از "حداکثر 5 سال" (شرکت سطح 1)، و دیگری با 30٪ از "حداکثر 5 سال" حقوق (سطح 4) شغلی پیدا کرد. پس چرا کمتر بگیریم؟ تقاضا برای برنامه نویسان از پیشنهاد بیشتر است - جایی که حقوق کمتری دریافت می کنید کار نکنید! نتیجه گیری 1: میانگین حقوق برای توسعه دهندگان جاوا (با هر تجربه ای) 40٪ - 50٪ از حقوق "حداکثر 5 سال" است. نتیجه 2: اگر در شرکت های سطح 1 و 2 کار نکنید و در شرکت های سطح 3 و 4 کار کنید، میانگین حقوق شما در 5 سال حدود 90 تا 110 درصد حقوق «حداکثر 5 سال» خواهد بود.

آنچه می توانید به دست آورید مگر اینکه کارهای احمقانه انجام دهید

اگر همین الان شروع به کار روی آموزش خودآموزی در برنامه نویسی کنید، حقوق شما می تواند به شکل زیر باشد: سطح قدیمی 06 - 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 کتاب از بقیه باهوش‌تر خواهید شد. آن را به تعویق نیندازید: شما مقدار بیشتری از اوقات فراغت نخواهید داشت، علاوه بر این، به احتمال زیاد خانواده تشکیل می دهید، یا اگر دارید، بزرگتر می شود. هدف شما این است که چند فناوری را برای تخصص به عنوان یک توسعه دهنده ارشد جاوا انتخاب کنید. شما نمی توانید همه آنها را یاد بگیرید، می دانید. و همیشه یک تصمیم خوب برای تبدیل شدن به یک گورو در یک تخصص واحد است. سطح قدیمی 06 - 6

برنامه نویسی سه روزه (توسعه دهنده میانی جاوا، سطح 2)

شما اکنون یک توسعه دهنده باتجربه هستید و در فکر تبدیل شدن به یک توسعه دهنده ارشد هستید. خوشایند و همچنین معتبر است. حقوق شما بیش از 60 درصد «حداکثر 5 سال» است (10 هزار دلار در بنگلور، 25 هزار دلار در کیف، 40 هزار دلار در برلین، 80 هزار دلار در نیویورک). از این لحظه به بعد تقاضا برای افراد حرفه ای مانند شما افزایش می یابد. همیشه می‌توانید ظرف چند روز شغلی پیدا کنید و به سختی کمتر از الان درآمد کسب خواهید کرد. البته اگر کار احمقانه ای انجام ندهید. کاری که باید انجام دهید این است که به مطالعه فناوری هایی که انتخاب کرده اید ادامه دهید. بهتر کار کن نه به خاطر کارفرمایتان، به خاطر خودتان. برای شرکت در پروژه‌هایی که شامل فناوری‌های امیدوارکننده هستند (مانند BigData، در حال حاضر این مقاله در حال نوشتن است) درخواست دهید. به هر حال شما 8 ساعت در روز را در دفتر سپری خواهید کرد، پس چرا پول بیشتری برای آن به دست نیاورید، و مهمتر از آن، ارزشمندترین تجربه ای است که در آینده به آن نیاز خواهید داشت. هدف شما یافتن شغل جدید است. یک تیم خوب همیشه پیدا می شود. شما با پروژه ها و فناوری های جدید روبرو خواهید شد. شما نیازی به ریشه کردن روی صندلی خود ندارید. اگر هنوز در یک شرکت سطح سوم کار می کنید، به استخدام در سطح چهارم فکر کنید.

برنامه نویسی سال پنجم (توسعه دهنده ارشد جاوا، سطح 1

شما اکنون یک توسعه دهنده ارشد هستید. شاید لیاقتش را نداشتی و حسش می کنی. با این حال من تبریک می گویم. مهم نیست که اکنون شایسته موقعیت خود هستید یا خیر، مهم این است که در آینده شایسته آن باشید. من فکر می کنم شما موافق باشید که بهتر است یک شغل خوب پیدا کنید و بعد از رشد به سطح مورد نیاز و برعکس. امیدوارم توصیه من برای خواندن یک کتاب در ماه را فراموش نکرده باشید؟ اکنون هر دانش آموزی به دانش و مهارت شما حسادت می کند. برای دقیق تر، او بر آنها دعا خواهد کرد. فقط به آن فکر کنید: شما درآمد جدی دارید، نزدیک به 90٪ از حقوق "حداکثر 5 سال". احتمالا هنوز جوان هستی دنیا زیر پای توست کاری که باید انجام دهید این است که فناوری هایی را که انتخاب کرده اید دوباره ارزیابی کنید. شاید، شما نیاز به تغییر تخصص دارید. دنیا تغییر کرده است، فناوری‌ها تغییر کرده‌اند، و شما در دو سال گذشته دانش زیادی کسب کرده‌اید. آنچه اکنون انتخاب می‌کنید، برای چند سال آینده برای شما سرفصل خبر خواهد بود. وقت آن است که فناوری های مورد علاقه خود را انتخاب کنید. هدف شما این است که جهت رشد خود را انتخاب کنید. آنها متعدد هستند، هیچکس نمی تواند همه آنها را نام برد، اما انتخاب شما باید همین الان انجام شود. اگر امروز کمی تغییر ایجاد کنید، در آینده تغییر بزرگی خواهید داشت.

برنامه نویسی سال ششم (برنامه نویس ارشد جاوا، سطح 2)

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

شما تخصص آینده

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

حرفه برنامه نویس جاوا

حرفه توسعه دهنده با سایرین متفاوت است. برای کسب درآمد خوب نیازی به مدیر شدن ندارید. اغلب اتفاق می افتد که یک توسعه دهنده ارشد بیشتر از مدیر-رئیس خود درآمد دارد. هرچه تجربه بیشتری کسب کنید، روابط کاری شما با رئیستان قوی‌تر می‌شود و از «رئیس – زیردستان» به «ستاره و مدیر» تغییر می‌کند. از دانستن اینکه توسعه دهندگان ارزش آنها را می دانند، پروژه ها و موقعیت های خالی را انتخاب می کنند. بیایید برای خودمان شاد باشیم. بنابراین برای تبدیل شدن به یک توسعه دهنده با ارزش بالا و محبوب در مقیاس جهانی به چه چیزی نیاز دارید؟ شما باید تجربه زیادی در بیشتر فناوری های مورد تقاضا و جدید داشته باشید. چگونه می توان به این امر دست یافت؟ زیر را ببینید. سطح قدیمی 06 - 8به محض اینکه شغلی به عنوان توسعه دهنده پیدا می کنید، دو چیز برای شما شروع می شود. هنوز آنها همیشه قابل مشاهده نیستند. 1. در پروژه های واقعی تجربه کسب می کنید و به سرعت رشد می کنید. یک سال در این شغل به شما تجربه ای بیشتر از 5 سال در کالج می دهد. تجربه آنقدر موضوع مهمی است که در پست های خالی پست شده می نویسند «توسعه دهنده جاوا با 3 سال تجربه لازم است». 2. روزی 8 ساعت در مورد فناوری های جدید مطالعه می کنید و بابت آن دستمزد خوبی می گیرید. واقعا نمی توان این واقعیت را دست بالا گرفت. در برخی موارد، مهارت‌هایی که به دست می‌آورید آنقدر ارزشمند هستند که می‌توانستید برای به دست آوردن آن‌ها یا حتی پرداخت هزینه رایگان کار کنید. اگر پروژه‌هایی را که عاقلانه روی آن‌ها کار می‌کنید انتخاب کنید، در شرف داشتن یک حرفه توسعه‌دهنده نرم‌افزاری هستید. بنابراین ... چه چیزی را انتخاب کنید؟ اغلب اتفاق می‌افتد که نمی‌دانید کدام فناوری مفید خواهد بود، بنابراین شروع به انتخاب روی «پسندیدن و دوست نداشتن» و «روندهای مد» می‌کنید. ممکن است خوش شانس باشید یا نه. پس بهتر است از قبل مقصد خود را بدانید. راه‌های زیادی برای تکامل برای برنامه‌نویسان وجود دارد، بنابراین، برای ساده‌تر کردن آن، چند تا از آنها را انتخاب می‌کنم و دیدگاه خود را از موقعیت پیش رو می‌نویسم. فکر نکنید که این الگو یک خط سخت است. این بیشتر یک دیدگاه ساده از چیزهایی است که برای روشن شدن آن ارائه شده است.

توسعه دهنده دویست ساله

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

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

به طرف دشمن رفتی شوخی کردم اگر مهارت های سازمانی عالی را کشف کردید، راه شما این است: سرپرست تیم و سپس مدیر پروژه. این به شما فرصتی می دهد تا رئیس بخش شوید و کسب و کار خود را باز کنید. این چیزی است که شما می خواهید، اینطور نیست؟

خانه جاییست که دل آنجا باشد

سطح قدیمی 06 - 9اگر قبلاً تشکیل خانواده داده اید ، شاید آرزو داشته باشید که در کشوری با اقتصاد قوی، زندگی خوب و آرامی داشته باشید. شاید به فکر مهاجرت به کانادا، ایالات متحده آمریکا، سوئیس یا حتی استرالیا باشید. شما مهارت های عالی و حرفه ای دارید. لازم نیست از شستن ظروف شروع کنید. شما به عنوان یک توسعه دهنده ارشد جاوا شروع می کنید. احتمالاً درآمد زیادی دارد. بد نیست، ها؟

ناپل را ببین و نمرد.

شما هنوز خانواده ندارید و عاشق سفر هستید . o Desk همه چیز شماست. مشتری پیدا کنید، با نرخ 20 تا 50 دلار در ساعت موافقت کنید، یک لپ تاپ با خود ببرید و بروید! حقوق شما برای زندگی در هر جای دنیا کافی است. چرا بلافاصله شروع به تحقق رویاهای خود نمی کنید؟

من برنامه نمیخوام من دخترم..

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

لبول 6

سطح قدیمی 06 - 10

1 الی. دید شی خالی

- هی، آمیگو! - سلام الی! امروز یه چیز جالب بهم میگی؟ - امروز در مورد طول عمر یک شی به شما می گویم . پس از ایجاد یک شی، تا زمانی که حداقل یک متغیر آدرس آن را ذخیره کند (حداقل یک مرجع شی وجود دارد) وجود دارد (زندگی می کند). اگر دیگر هیچ مرجعی وجود نداشته باشد، شی می میرد. مثالها: سطح قدیمی 06 - 11- شی «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 پروفسور، جمع آوری زباله

سطح قدیمی 06 - 12- هی، آمیگو! در اینجا یک پیوند مفید در مورد جمع آوری زباله در جاوا وجود دارد. این قطعاً سخنرانی‌های عالی من نیست، اما به اندازه کافی خوب است: مبانی جمع‌آوری زباله جاوا

3 الی، نهایی کنید

- دوباره سلام! اکنون به شما معرفی مختصری از متد () finalize می‌کنم . این متد توسط ماشین مجازی جاوا بر روی شیء قبل از از بین رفتن شیء فراخوانی می شود. در واقع این روش برخلاف سازنده است. در این روش امکان آزادسازی منابع مورد استفاده توسط یک شی وجود دارد. - کلاس Object این متد را دارد، بنابراین، هر کلاسی آن را دارد ( همه کلاس های جاوا به عنوان ارثی از کلاس Object در نظر گرفته می شوند و حاوی یک کپی از متدهای آن هستند ). اگر متد ()finalize را در کلاس خود بنویسید و قبل از نابودی اشیاء این کلاس فراخوانی می شود. مثال: سطح قدیمی 06 - 13- فهمیدم. - اما یک چیز وجود دارد. ماشین مجازی جاوا خودش تصمیم می گیرد که این متد را فراخوانی کند یا نه. اغلب، اشیایی که در متد ایجاد می شوند و پس از خروج به عنوان زباله اعلام می شوند، بلافاصله و بدون فراخوانی متد ()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

- اینجا یک موضوع جالب جدید است. می خواهم در مورد متغیرهای استاتیک و روش ها به شما بگویم. - اوه، من قبلاً در مورد متغیرهای استاتیک شنیده بودم. در مورد روش های استاتیک نیز حدس می زنم. اما من می خواهم جزئیات بیشتری داشته باشم. - هنگام اعلان متغیرها در یک کلاس، مشخص می کنیم که آیا این متغیرها در یک نمونه مشترک ایجاد می شوند یا اینکه لازم است کپی های آنها برای هر شی ایجاد شود. به طور پیش فرض، یک کپی جدید از متغیر کلاس برای هر شی از این کلاس ایجاد می شود. در اینجا به نظر می رسد: سطح قدیمی 06 - 14- اگرچه متغیرهای cat1.name و cat2.name در یک کلاس اعلان می شوند - Cat، مقادیر متفاوتی را ذخیره می کنند، زیرا به اشیاء متفاوتی متصل هستند. - واضح است. - یک متغیر استاتیک در یک نمونه وجود دارد. شما باید با استفاده از نام کلاس به آن دسترسی داشته باشید: سطح قدیمی 06 - 15- این هم واضح است. - متدهای کلاس نیز به دو دسته تقسیم می شوند. متدهای معمولی بر روی شی فراخوانی می شوند و به داده های این شی دسترسی دارند. متدهای استاتیک چنین دسترسی ندارند ، زیرا فقط مرجع شی ندارند. متدهای استاتیک می توانند به متغیرهای استاتیک این کلاس یا سایر روش های استاتیک دسترسی داشته باشند. - روش های استاتیک نمی توانند به روش های غیر ایستا یا متغیرهای غیر استاتیک دسترسی پیدا کنند! - چرا؟ - هر متغیر کلاس معمولی در داخل یک شی قرار می گیرد. هر متدی فقط زمانی می تواند به چنین متغیری دسترسی داشته باشد که به آن شی ارجاع داشته باشد. چنین ارجاعی به روش استاتیک منتقل نمی شود. - روش های معمولی چطور؟ - به متد معمولی ارجاع مخفی به شیئی که این متد روی آن فراخوانی می شود ارسال می شود. متغیری که این مرجع را ذخیره می کند این نامیده می شود . بنابراین، متد همیشه می‌تواند داده‌های شیء خود را دریافت کند یا متد غیراستاتیک دیگری از همان شی را فراخوانی کند. - یک عدد تهی به جای مرجع شیء به یک متد استاتیک ارسال می شود. بنابراین، یک متد استاتیک نمی‌تواند به متغیرها و متدهای غیراستاتیک دسترسی داشته باشد - فقط هیچ مرجعی به شیئی که به آن مقید شده‌اند ندارد. - می بینم. - روشی که روش‌های غیراستاتیک معمولی کار می‌کنند: سطح قدیمی 06 - 16- و روش‌های استاتیک به این ترتیب کار می‌کنند: سطح قدیمی 06 - 17- یک متغیر یا یک متد اگر با کلمه کلیدی static اعلان شوند، ثابت است. - و اگر چنین روش هایی بسیار محدود هستند، چه فایده ای دارند؟ - این رویکرد مزایای خود را نیز دارد. - اولاً، برای دسترسی به متدها و متغیرهای استاتیک، نیازی به ارسال هیچ مرجع شیء ندارید . - دوم، گاهی اوقات لازم است که متغیر منحصر به فرد باشد . مانند متغیر System.out (متغیر ثابت خارج از کلاس System). - و سوم،گاهی اوقات لازم است یک متد را فراخوانی کنید تا بتوانید هر شیئی را ایجاد کنید . - به چه مناسبتی؟ - به نظر شما چرا روش main استاتیک اعلام شده است؟ برای فراخوانی آن بلافاصله پس از بارگذاری کلاس در حافظه قبل از ایجاد هر شیئی.

7 ریشا، کلاس ها و روش های استاتیک

- علاوه بر روش های استاتیک، کلاس های استاتیک نیز وجود دارد . ما این مورد را بعداً بررسی خواهیم کرد، من فقط می‌خواهم نمونه‌ای از آن را به شما نشان دهم: سطح قدیمی 06 - 18- می‌توانید به تعداد دلخواه شیء کلاس 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 پروفسور، دامنه استاتیک شی و طول عمر

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

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. گربه های ساکن
  1. یک متغیر ثابت عمومی cats (ArrayList<Cat>) در کلاس Cat اضافه کنید.
  2. هر بار که یک گربه (یک شی جدید Cat) ایجاد می کنید، اجازه دهید این گربه جدید به متغیر cats اضافه شود . ایجاد 10 شی گربه.
  3. متد printCats() باید همه cat ها را نمایش دهد. شما باید از متغیر cats در روش استفاده کنید.
نکته:
برای ایجاد متغیر cats از خط کد استفاده کنید:
public static ArrayList<Cat> cats = new ArrayList<Cat>();
3 3. یک اصلاح کننده ایستا را جابجا کنید
یک اصلاح کننده استاتیک را جابجا کنید تا کد کامپایل شود.
4 4. حداقل تعداد کلمات کلیدی ثابت
حداقل تعداد کلمات کلیدی ثابت را اضافه کنید تا کد کامپایل شده و برنامه با موفقیت کامل شود.
5 5. آیا ایده جدیدی دارید؟ بیا فکر کنیم...
  1. در کلاس Solution یک کلاس استاتیک عمومی بنویسید
  2. یک متد public String getDescription() در کلاس Idea بنویسید تا هر پیام غیر خالی را برگرداند.
  3. در کلاس Solution یک متد استاتیک ایجاد کنید public void printIdea (Idea idea) برای نمایش توضیحات ایده - این همان چیزی است که متد getDescription() برمی گرداند .
6 6. KissMyShinyMetalAss
کلاسی به نام KissMyShinyMetalAss بنویسید. یک شی از این کلاس ایجاد کنید، سپس آن را روی صفحه نمایش دهید.
7 7. نام سه متغیر استاتیک
3 متغیر استاتیک عمومی بنویسید: String Solution.name ، String Cat.name ، String Dog.name
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION