سطح دانش مورد نیاز برای درک مقاله: مبتدی. شما در حال مطالعه کوئست Java Syntax هستید و به سطوح اولیه آن نزدیکتر هستید.
شما تازه شروع به یادگیری جاوا کرده اید. شما با اصطلاحاتی بمباران میشوید که گویی از یک قرنیه. شما مملو از اطلاعات فنی هستید و گاهی اوقات در سه کاج گیج می شوید. باور کنید، چون قبلاً درگیر برنامهنویسی شدهاید، همیشه همینطور خواهد بود (در این لحظه، صدای خندهای شوم در خارج از صفحه به گوش میرسد و صدایی آرام، قطع شده وسط جمله، زمزمه میکند: فرار کن... قبلش خودت را نجات بده. خیلی دیر است...»). باگ ها تا آخر عمر برنامه نویسی شما را آزار می دهند، حتی اگر بهترین توسعه دهنده باشید. با این حال، این به هیچ وجه آنقدر که به نظر می رسد ترسناک نیست.
اگر به تازگی یادگیری JavaRush را شروع کرده اید، به احتمال زیاد قبلاً با مشکلات مطرح شده در مقاله روبرو شده اید. در هر صورت، ما از نظراتی در مورد مشکلاتی که در ماه های اول یادگیری جاوا داشتید استقبال می کنیم. |
مشکل سطح 0: سردرگمی با عملگر مقایسه (==) و عملگر انتساب (=).
این یک مشکل بسیار رایج برای کسانی است که از زبان های برنامه نویسی دیگر تغییر می کنند. و به طور کلی، از دوران دبستان ما به این واقعیت عادت کرده ایم که
(=)
این یک علامت برابر است. یک ترفند ساده که می توان برای به خاطر سپردن از آن استفاده کرد این است: اگر می دانید که فقط به یکی از مقادیر اهمیت می دهید (یکی را به دیگری اختصاص می دهید) از یک
=
علامت " " استفاده می کنید، در غیر این صورت اگر به همه متغیرها اهمیت می دهید. و مقادیر (شما آنها را با هم مقایسه می کنید) به یک علامت دوگانه " " نیاز دارید
==
.
مشکل: استفاده از عملگر مقایسه (==) برای آزمایش هم ارزی رشته
چه باید کرد: به یاد داشته باشید،
هیچ شی جاوا را نمی توان با استفاده از هم ارزی بررسی کرد(==)
، زیرا این عملگر برای آزمایش برابری انواع اولیه طراحی شده است.
برای اشیا باید از
.equals()
. و
String
در زبان جاوا چیزی بیش از یک شی (و) نیست
immutable
.
یک شی که به عنوان علامت گذاری شده است Immutable ، یک شی است که حالت آن پس از ایجاد قابل تغییر نیست. در جاوا ، این بدان معنی است که تمام فیلدهای نمونه یک کلاس به صورت final اولیه (یا همچنین immutable ) علامت گذاری شده اند. |
مشکل: الحاق رشته در یک حلقه
خودتان این را امتحان نکنید! هر بار که رشته ها به هم متصل می شوند، یک شی جدید ایجاد می شود
String
(همانطور که در بالا متوجه شدیم، رشته ها
immutable
تغییر ناپذیر هستند). در برخی مواقع حافظه شما تمام می شود یا برنامه زمان زیادی برای تکمیل شدن می گیرد.
راه حل. StringBuilder
در عوض
String
هنگام به هم پیوستن محتوا در یک حلقه استفاده کنید . کلاس
StringBuilder
زمانی استفاده می شود که شما نیاز به ایجاد تغییرات زیادی در یک رشته کاراکتر دارید. و چنین خطوطی بر
String
خلاف
immutable
.
مشکل: NullPointerException
این نوع استثنا زمانی رخ می دهد که ما سعی می کنیم از یک اشاره گر تهی استفاده کنیم
null
در حالی که در واقع به یک شی واقعی نیاز داریم.
همه انواع اولیه دارای مقادیر پیش فرض هستند. بنابراین، y int است 0 ، و y boolean است false . مقدار پیشفرض هر نوع مرجع، یعنی اشیا، null . این یک شی یا یک نوع نیست، یک مقدار خاص است. که اساساً به این معنی است که "اینجا هیچ چیز وجود ندارد." |
چه کاری باید انجام دهید: اگر کد شما به گونه ای نوشته شده است که در نقطه ای از شی شما می تواند مقدار را بپذیرد
null
، باید یک "بررسی برای
null
" را اضافه کنید، به خصوص اگر خودتان آن شی را ایجاد نمی کنید. همچنین به یاد داشته باشید که بهتر است مجموعه های خالی را به جای مجموعه ای از
null
'ها برگردانید. همچنین خوب است که اعتبارسنجی برای گیرندگان و تنظیم کننده ها اضافه شود.
مشکل: به دلایلی حلقه if / while / for کار نمی کند
if (something.equals («что-то еще»)); {
System.out.println («Почему я не работаю???»);
}
اینجا چه اشکالی دارد؟ ساده است: یک نقطه ویرگول اضافی خون صدها هزار برنامه نویس تازه کار جاوا را خراب کرده است. خوب، بعد از آن نیازی به آن ندارید
if ()
. از نظر زبان، چنین نحوی کاملاً قابل قبول است، بنابراین کامپایلر از آن شکایت نخواهد کرد. اما دستور شرطی را خاتمه می دهد و کد داخل بلوک
{}
هرگز شرایط بالا را برآورده نمی کند.
راه حل: منطق طراحی را به خاطر بسپارید. علامت "
;
" به معنای پایان یک بلوک خاص است، اما اینجا همه چیز تازه شروع شده است.
مشکل: تلاش برای دسترسی به متغیرهای عضو غیراستاتیک از روشهای استاتیک (مانند اصلی)
راه حل . این مشکل به درک خود مفهوم مربوط می شود
static
. اگر متدی با این کلمه مشخص شده باشد به این معنی است که برای فراخوانی متد main نیازی به نمونه سازی کلاس نداریم. بنابراین راه حل این است که درک خوبی از "ایستا" داشته باشید و ماهیت آنها را درک کنید.
مشکل: تلاش برای اختراع مجدد چرخ با توسعه کتابخانه ها و ابزارهای موجود
راه حل. در واقع مشکل چندانی نیست. برای یک مبتدی، این بیشتر یک تمرین مفید است. با این حال، اگر می خواهید روی نتیجه تمرکز کنید، به عنوان مثال، ایجاد یک پایگاه داده مشترک راحت، پس جستجوی مشترک در دفترچه تلفن تنها یکی از نتایج برنامه شما است. در این حالت نیازی به نوشتن الگوریتم جستجوی دودویی نیست. از یک موجود استفاده کنید (ما به شما اطمینان می دهیم، شخصی قبلاً آن را قبل از شما نوشته است و در کتابخانه های استاندارد موجود است). بنابراین کتابخانه های استاندارد جاوا را در اسناد اوراکل مطالعه کنید. Google را یاد بگیرید، به خواندن Stack Overflow عادت کنید و در
Help JavaRush سؤال بپرسید ! ...البته اینها همه مشکلات مبتدیان نیست. مال خود را در نظرات توضیح دهید!
آیا علاقه مند به خواندن مقالات مرتبط با جاوا هستید؟ به گروه توسعه دهندگان جاوا بپیوندید .
اینجا خیلی چیزهای جالب هست
GO TO FULL VERSION