1. वस्तूंशी तुलना करणे==
नवशिक्या प्रोग्रामरची आवडती चूक म्हणजे ==
ऑपरेटर वापरून ऑब्जेक्ट्सची (विशेषतः स्ट्रिंग्स) तुलना करणे. उदाहरणार्थ:
Scanner console = new Scanner(System.in);
String s1 = console.nextLine();
String s2 = console.nextLine();
if (s1 == s2)
{
System.out.println("The strings are equal");
}
हा कोड कधीही "स्ट्रिंग्स समान" प्रदर्शित करणार नाही, कारण if
विधान दोन भिन्न स्ट्रिंग ऑब्जेक्ट्सच्या संदर्भांची तुलना करते.
येथे कोडची योग्य आवृत्ती आहे:
Scanner console = new Scanner(System.in);
String s1 = console.nextLine();
String s2 = console.nextLine();
if (s1.equals(s2))
{
System.out.println("The strings are equal");
}
2. एखादी String
वस्तू बदलणे
नवशिक्या प्रोग्रामर अनेकदा हे विसरतात की वर्गातील सर्व वस्तू अपरिवर्तनीय आहेत , आणि String
वर्गाची प्रत्येक पद्धत एक नवीन ऑब्जेक्ट देते - वर्तमान ऑब्जेक्ट कधीही बदलत नाही.
उदाहरण:
String s = "Hello";
s.toUpperCase (); // Convert to uppercase
हा कोड अगदी योग्य कोडसारखा आहे, परंतु तो अपेक्षेप्रमाणे कार्य करणार नाही. पद्धत toUpperCase()
ज्या ऑब्जेक्टवर कॉल केली जाते ती बदलत नाही. योग्य कोड असे दिसेल:
String s = "Hello";
String result = s.toUpperCase(); // Convert to uppercase
3. अॅरेचे घटक असलेल्या ऑब्जेक्ट्स सुरू करण्यास विसरणे
आणखी एक सामान्य चूक म्हणजे अॅरे व्हेरिएबल सुरू करण्यास विसरणे. उदाहरण:
int[] array;
array[0] = 1;
array[0] = 2;
हा कोड कार्य करणार नाही: तुम्हाला अॅरे व्हेरिएबल कंटेनर ऑब्जेक्टच्या संदर्भाप्रमाणे स्पष्टपणे सेट करणे आवश्यक आहे जे अॅरेचे घटक संचयित करेल.
int[] array = new int[10];
array[0] = 1;
array[0] = 2;
4. उदाहरण व्हेरिएबल ऐवजी स्थानिक व्हेरिएबल वापरणे.
नवशिक्यांना व्हेरिएबल्ससाठी लांब आणि अर्थपूर्ण नावे यायला आवडत नाहीत. ते वारंवार एकल-अक्षरी नावे वापरतात: a
, b
, i
, इ. कोडमध्ये असे अनेक व्हेरिएबल्स असतात तेव्हा ते करणे अत्यंत क्रूर गोष्ट आहे:
अॅरेच्या 100 सेलमध्ये 99 क्रमांक ठेवा |
---|
|
वरील कोड संकलित होणार नाही. योग्य आवृत्ती असे दिसते:
अॅरेच्या 100 सेलमध्ये 99 क्रमांक ठेवा |
---|
|
5. संकलन आयटम काढणे
बर्याचदा अशी परिस्थिती असते जेव्हा एखादा विशिष्ट घटक संग्रहातून काढून टाकणे आवश्यक असते. कोड अंदाजे असे दिसते:
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 0, -5, -7, -12, 5, 15);
for (Integer value: list)
if (value < 0)
list.remove(value);
हा कोड कार्य करणार नाही, कारण तुम्ही संग्रहातील घटकांचा एकाच वेळी मार्गक्रमण करण्यासाठी आणि त्या संग्रहात सुधारणा करण्यासाठी प्रत्येकासाठी लूप वापरू शकत नाही.
अनेक उपाय आहेत. प्रथम, तुम्ही एका संग्रहातून पुढे जाऊ शकता आणि दुसरा बदलू शकता:
उपाय १ |
---|
|
दुसरे, Java 8 पासून, संग्रहांमध्ये एक removeIf()
पद्धत आहे, ज्यामध्ये तुम्ही एक नियम (लॅम्बडा फंक्शन) पास करू शकता जे कोणते घटक काढायचे हे सूचित करतात.
उदाहरण:
उपाय 2 |
---|
|
public
6. एकाच फाईलमध्ये मॉडिफायरसह अनेक वर्ग ठेवणे
फाईलमध्ये फक्त एक सार्वजनिक वर्ग असू शकतो. फाईलमध्ये अधिक वर्ग घोषित केले जाऊ शकतात, परंतु ते एकतर सार्वजनिक वर्गाचे अंतर्गत वर्ग असले पाहिजेत किंवा सुधारक नसावेत public
. उदाहरण:
Solution.java फाइलची सामग्री | नोंद |
---|---|
|
याची परवानगी नाही: एकाच फाईलमध्ये दोन सार्वजनिक वर्ग. |
|
पण तुम्ही हे करू शकता. मुख्य वर्ग सार्वजनिक नाही |
|
आणि तुम्ही हे करू शकता. मुख्य वर्ग हा नेस्टेड वर्ग आहे |
main()
7. स्टॅटिक पद्धतीवरून वर्गाच्या सामान्य (नॉन-स्टॅटिक) पद्धती कॉल करणे
main()
काहीवेळा नवीन प्रोग्रामर पद्धत किंवा इतर स्थिर पद्धतींमधून नॉन-स्टॅटिक व्हेरिएबल्स आणि पद्धतींमध्ये प्रवेश करण्याचा प्रयत्न करतात . असा कोड नक्कीच काम करणार नाही.
public class Solution
{
public int n = 100;
public int[] createArray()
{
return new int[n];
}
public static void main(String[]args)
{
int[] array = createArray();
}
}
मुख्य पद्धत केवळ स्थिर पद्धती/व्हेरिएबल्सचा संदर्भ घेऊ शकते. बरं, किंवा प्रथम वर्गाचे उदाहरण तयार केले पाहिजे Solution
आणि त्यानंतरच त्या ऑब्जेक्टच्या नॉन-स्टॅटिक पद्धती कॉल करा. उदाहरण:
उपाय १ | उपाय 2 |
---|---|
|
|
8. पद्धतीप्रमाणे कन्स्ट्रक्टर घोषित करणे
दुसरी सामान्य चूक म्हणजे चुकीच्या पद्धतीने क्लास कन्स्ट्रक्टर घोषित करणे. कन्स्ट्रक्टरचे नाव वर्गाच्या नावासारखेच असणे आवश्यक आहे आणि कन्स्ट्रक्टरचा कोणताही परिणाम प्रकार नाही. सर्वात सामान्य चुका यासारख्या दिसतात:
|
येथे परतीचा प्रकार नसावा |
|
अवैध कन्स्ट्रक्टर नाव. कन्स्ट्रक्टरचे नाव वर्गाच्या नावाशी जुळले पाहिजे |
|
this हरवले आहे. व्हेरिएबल value स्वतःला नियुक्त केले जाईल |
|
ते सर्व बरोबर आहे |
9. इंटरफेसचा चुकीचा वारसा
Java च्या निर्मात्यांनी ते इंग्रजीच्या अगदी जवळ आणण्याचा प्रयत्न केला, म्हणून त्यांनी काही संबंधित संकल्पनांसाठी भिन्न कीवर्ड निवडले.
जेव्हा एखादा वर्ग वर्गाचा वारसा घेतो, तेव्हा तुम्हाला कीवर्ड वापरावे लागेल extends
:
class Pet
{
}
class Cat extends Pet
{
}
जेव्हा वर्गाला इंटरफेस वारसा मिळतो, तेव्हा तुम्हाला implements
कीवर्ड वापरण्याची आवश्यकता असते:
interface Meow
{
}
class Cat implements Meow
{
}
जेव्हा इंटरफेस इंटरफेसचा वारसा घेतो तेव्हा extends
कीवर्ड वापरा:
interface Meow
{
}
interface Voice extends Meow
{
}
10. break
विधानात switch
वगळणे
आणि आज आपल्यासाठी शेवटची चूक, परंतु नवशिक्यांसाठी शेवटची नाही, break
एका switch
विधानात विधान समाविष्ट करण्यात अयशस्वी होत आहे. उदाहरण
चुकीचे | बरोबर |
---|---|
|
|