यह कई "सुरक्षित प्रोग्रामिंग" प्रथाओं आप स्पष्टता में सुधार लाने और सूक्ष्म त्रुटियों जो आप या आपके कोड के भविष्य के मेंटेनर को पेश हो सकता है को रोकने के लिए गोद ले सकते हैं में से एक है। निम्न उदाहरण लें:
private static void printMessage(int k) {
System.out.println("number" + '=' + k);
}
उत्पादन: number=5
अब आप पिछले संख्या पहले और पाठ मुद्रित करने के लिए चाहते हैं। सभी मैं कर रहा हूँ स्ट्रिंग संयोजन में प्रथम और अंतिम आइटम की अदला-बदली है:
private static void printMessage2(int k) {
System.out.println(k + '=' + "number");
}
उत्पादन: 66number
ऊप्स! =
का int मान संगत होने की बजाय k
में जोड़ा गया था। एक समाधान =
को String
में बनाना है। एक अन्य समाधान स्पष्ट int
एक String
कन्वर्ट करने के लिए है:
private static void printMessage2Safe(int k) {
System.out.println(Integer.toString(k) + '=' + "number");
}
उत्पादन: 5=number
"ओह, लेकिन मुझे लगता है कि, वैसे भी, कभी नहीं करना चाहते हैं" आप कहते हैं। "किसी भी व्यक्ति ने अपने सही दिमाग में अन्य स्ट्रिंग के =
भाग को बनाया होगा।" लेकिन क्या होगा यदि आप मूल कैलक्यूलेटर ऐप का हिस्सा लागू कर रहे हैं, और आप अभिव्यक्ति और इसके परिणाम को आउटपुट करना चाहते हैं? यदि आप वास्तव में सावधान रहने की कोशिश कर रहे हैं, तो मुझे लगता है कि आप अभिव्यक्ति के हिस्सों को संयोजित करने के लिए StringBuilder.append()
का उपयोग करेंगे। लेकिन यदि नहीं, तो मुझे उम्मीद है कि आप नीचे display
विधि का पहला कार्यान्वयन नहीं लिखेंगे।
public class Calculator {
public static void main(String[] args) {
display(2, '+', 3, 5);
displaySafe(2, '+', 3, 5);
}
public static void display(int num1, char operator, int num2, int result) {
System.out.println(num1 + operator + num2 + '=' + result);
}
public static void displaySafe(int num1, char operator, int num2, int result) {
System.out.println(Integer.toString(num1) + operator + Integer.toString(num2) + "=" + result);
}
}
उत्पादन:
114
2+3=5
वहाँ दोनों के बीच कोई महत्वपूर्ण अंतर है। ट्यूटोरियल जोर दे सकता था कि 'toString' को "कवर के तहत" कहा जाता है, लेकिन, दिन-प्रति-दिन प्रोग्रामिंग के लिए यह केवल अतिरिक्त अव्यवस्था है। –
मैंने पहले से ही एक उत्तर पोस्ट किया है, लेकिन आकस्मिक पाठकों के लिए इंगित करना चाहता था कि ऐसे व्यावहारिक मामले हैं जिनमें आपको * * को * इंटीजर.टोस्ट्रिंग (int) और/या अन्य सुरक्षा उपायों का उपयोग करना चाहिए, जब तत्वों को लंबे समय तक स्ट्रिंग में '+ ऑपरेटर यदि आप सावधान नहीं हैं, तो '+' ऑपरेटर के साथ स्ट्रिंग कॉन्सटेनेशन अनपेक्षित परिणाम उत्पन्न कर सकता है। – rob