जावा बेसिक सिंटैक्स

💖क्या आपको यह पसंद है?लिंक को अपने दोस्तों के साथ साझा करें

जब हम एक जावा प्रोग्राम पर विचार करते हैं, तो इसे वस्तुओं के एक संग्रह के रूप में परिभाषित किया जा सकता है जो एक-दूसरे के तरीकों को कॉल करके बातचीत करते हैं। अब संक्षेप में समझते हैं जावा भाषा वाक्यविन्यासक्लास, ऑब्जेक्ट, मेथड्स और इंस्टेंस वेरिएबल्स का क्या मतलब है?

एक वस्तु- वस्तुओं की अवस्था और व्यवहार होता है। उदाहरण के लिए: एक कुत्ते की एक अवस्था हो सकती है - रंग, नाम, साथ ही व्यवहार - सिर हिलाना, दौड़ना, भौंकना, खाना। एक वस्तु एक वर्ग का एक उदाहरण है।

कक्षा- इसे एक पैटर्न के रूप में परिभाषित किया जा सकता है जो किसी वस्तु के व्यवहार का वर्णन करता है।

तरीका- मूलतः व्यवहार है. एक क्लास में कई विधियाँ हो सकती हैं। यह उन तरीकों में है जिसमें तार्किक रूप से रिकॉर्ड किए गए डेटा में हेरफेर किया जाता है और सभी क्रियाएं की जाती हैं।

आवृत्ति के चर- प्रत्येक ऑब्जेक्ट में इंस्टेंस वेरिएबल्स का अपना अनूठा सेट होता है। किसी ऑब्जेक्ट की स्थिति इन इंस्टेंस वेरिएबल्स को निर्दिष्ट मानों द्वारा बनाई जाती है।

पहला कार्यक्रम और भाषा के वाक्य-विन्यास से परिचित होना

आइए एक सरल कोड देखें जो "हैलो वर्ल्ड!" शब्द और जावा सिंटैक्स प्रदर्शित करेगा।

सार्वजनिक वर्ग MyFirstJavaप्रोग्राम (सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग आर्ग्स) ( /* यह मेरा पहला जावा प्रोग्राम है। निष्पादन के परिणामस्वरूप, "हैलो वर्ल्ड!" स्क्रीन पर प्रदर्शित होगा */ System.out.println("हैलो वर्ल्ड !"); // स्क्रीन पर एक संदेश प्रदर्शित करें ) )

  • नोटपैड खोलें और ऊपर दिया गया कोड जोड़ें।
  • फ़ाइल को "MyFirstJavaProgram.java" के रूप में सहेजें। नीचे हम जावा सिंटैक्स को देखेंगे और पता लगाएंगे कि इस नाम के तहत क्यों।
  • कमांड प्रॉम्प्ट विंडो खोलें और उस निर्देशिका पर जाएँ जहाँ फ़ाइल सहेजी गई थी। आइए मान लें कि यह "C:\" है।
  • "Javac MyFirstJavaProgram.java" टाइप करें और कोड संकलित करने के लिए एंटर दबाएँ। यदि कोड में कोई त्रुटि नहीं है, कमांड लाइनतुम्हें ले जाएगा अगली पंक्ति: (धारणा: पथ चर सेट है)।
  • अब प्रोग्राम को चलाने के लिए "java MyFirstJavaProgram" दर्ज करें।
  • अब आपको विंडो पर "हैलो वर्ल्ड!" छपा हुआ दिखाई देगा।
C:>javac MyFirstJavaProgram.java C:>java MyFirstJavaProgram हेलो वर्ल्ड!

बेसिक जावा सिंटैक्स

वाक्यविन्यास में निम्नलिखित बिंदुओं को जानना और याद रखना बहुत महत्वपूर्ण है:

  • केस सेंसिटिविटी - जावा केस सेंसिटिव है, यानी पहचानकर्ता हैलो और हैलो के अलग-अलग अर्थ हैं।
  • कक्षाओं के नाम - सभी के लिए पहला अक्षर अवश्य होना चाहिए अपरकेस.
  • यदि क्लास नाम बनाने के लिए एकाधिक शब्दों का उपयोग किया जाता है, तो प्रत्येक आंतरिक शब्द का पहला अक्षर अपरकेस में होना चाहिए, उदाहरण के लिए, "MyJavaClass"।
  • विधि के नाम - जावा सिंटैक्स में, सभी विधि के नाम छोटे अक्षर से शुरू होने चाहिए।
  • यदि विधि का नाम बनाने के लिए कई शब्दों का उपयोग किया जाता है, तो प्रत्येक आंतरिक शब्द का पहला अक्षर अपरकेस में होना चाहिए, उदाहरण के लिए, "सार्वजनिक शून्य myMethodName()"।
  • प्रोग्राम फ़ाइल का नाम - प्रोग्राम फ़ाइल का नाम होना चाहिए बिल्कुल मेल खाओकक्षा के नाम के साथ.
  • किसी फ़ाइल को सहेजते समय, आपको इसे क्लास नाम (केस संवेदनशील होना याद रखें) का उपयोग करके सहेजना होगा और नाम के अंत में ".java" जोड़ना होगा (यदि नाम मेल नहीं खाते हैं, तो आपका प्रोग्राम संकलित नहीं होगा), उदाहरण के लिए , "MyJavaProgram" क्लास का नाम है, तो फ़ाइल को "MyJavaProgram.java" के रूप में सहेजा जाना चाहिए।
  • सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग आर्ग्स) - प्रोग्राम प्रोसेसिंग मेन () विधि से शुरू होती है, जो हर प्रोग्राम का एक आवश्यक हिस्सा है।

जावा में पहचानकर्ता

पहचानकर्ता- वर्गों, चरों और विधियों के लिए प्रयुक्त नाम। सभी जावा घटकों को नाम की आवश्यकता होती है।

जावा सिंटैक्स में कई नियम हैं जिन्हें आपको पहचानकर्ता के बारे में याद रखना होगा। वे इस प्रकार हैं:

  • प्रत्येक पहचानकर्ता को "Z" से पहले "A" या "z", "$" या "_" से पहले "a" से शुरू होना चाहिए।
  • पहले वर्ण के बाद वर्णों का कोई भी संयोजन हो सकता है।
  • कीवर्ड का उपयोग पहचानकर्ता के रूप में नहीं किया जा सकता.
  • सबसे महत्वपूर्ण बात यह है कि जावा में पहचानकर्ता केस संवेदी होता है।
  • सही वर्तनी का उदाहरण: आयु, $वेतन, _मूल्य, __1_मूल्य।
  • गलत वर्तनी का उदाहरण: 123abc, -वेतन।

स्थानांतरण

जावा 5.0 में गणनाएँ शुरू की गईं। वे एक चर को कई पूर्वनिर्धारित मानों में से केवल एक का चयन करने के लिए बाध्य करते हैं। इस गणना योग्य सूची में मानों को कहा जाता है तबादलों.

जावा में गणना का उपयोग करके, आप अपने कोड में त्रुटियों की संख्या को कम कर सकते हैं।

उदाहरण के लिए, यदि हम किसी स्टोर में ताज़ा जूस के अनुरोधों को देख रहे थे, तो हम जूस पैक के आकार को छोटे, मध्यम और बड़े तक सीमित कर सकते थे। यह जावा में एक गणना के उपयोग के माध्यम से यह सुनिश्चित करना संभव बनाता है कि कोई भी छोटे, मध्यम या बड़े के अलावा किसी अन्य पैकेज आकार का ऑर्डर न दे।

जावा में एनम कोड उदाहरण

क्लास फ्रेशजूस (एनम फ्रेशजूस साइज (छोटा, मध्यम, बड़ा) फ्रेशजूस साइज साइज; ) पब्लिक क्लास फ्रेशजूसटेस्ट (पब्लिक स्टेटिक वॉयड मेन(स्ट्रिंग आर्ग्स)( फ्रेशजूस जूस = नया फ्रेशजूस(); जूस.साइज = फ्रेशजूस.फ्रेशजूस साइज.मीडियम; सिस्टम.आउट .println("आकार:" + juice.size);

उपरोक्त उदाहरण से परिणामी परिणाम:

मध्यम आकार

टिप्पणी:जावा में, गणनाओं को स्वतंत्र रूप से या एक वर्ग के भीतर घोषित किया जा सकता है। गणना के अंदर विधियों, चर, निर्माणकर्ताओं को भी परिभाषित किया जा सकता है।

परिवर्तनशील प्रकार

  • स्थानीय चर.
  • वर्ग चर (स्थैतिक)।
  • उदाहरण चर (गतिशील)।

संशोधक

अन्य भाषाओं की तरह, जावा में आप संशोधक का उपयोग करके कक्षाओं, विधियों आदि को संशोधित कर सकते हैं। जावा में संशोधक को दो श्रेणियों में विभाजित किया गया है:

  • पहुंच के साथ: डिफ़ॉल्ट, सार्वजनिक, संरक्षित, निजी।
  • बिना पहुंच के: अंतिम, सार, स्ट्रिक्टएफपी।

हम अगले भाग में वर्ग संशोधक, विधि संशोधक और अन्य पर करीब से नज़र डालेंगे।

सरणी

जावा में, ऐरे एक ऑब्जेक्ट है जो एक ही प्रकार के कई वेरिएबल्स को संग्रहीत करता है। हालाँकि, सरणी स्वयं एक ऑब्जेक्ट है। हम बाद के अध्यायों में देखेंगे कि किसी सरणी को कैसे बनाया और भरा जाए।

जेएसपी पेजों में एक हाइब्रिड सिंटैक्स होता है: HTML विनिर्देश के अनुरूप मानक सिंटैक्स और जावा सर्वर पेज विनिर्देश द्वारा परिभाषित जेएसपी सिंटैक्स का संयोजन। जेएसपी सिंटैक्स मानक वाले जेएसपी पेज लिखने के नियमों को परिभाषित करता है एचटीएमएल टैगऔर जेएसपी टैग। JSP पेजों में, HTML टैग के अलावा, निम्नलिखित श्रेणियों के JSP टैग होते हैं:

जेएसपी निर्देश

निर्देशोंजेएसपी को भेजे गए विशिष्ट अनुरोधों के संबंध में वैश्विक जानकारी प्रदान करें और अनुवाद चरण में आवश्यक जानकारी प्रदान करें।

निर्देशोंहमेशा अन्य सभी टैग से पहले JSP पेज की शुरुआत में रखा जाता है, ताकि पार्सर(विश्लेषक) पाठ को पार्स करते समय, जेएसपी ने शुरुआत में ही वैश्विक निर्देशों पर प्रकाश डाला। इस प्रकार, JSP इंजन (JSP रनटाइम) कोड का विश्लेषण करता है और JSP से एक सर्वलेट बनाता है। निर्देशोंजेएसपी कंटेनर में संदेशों का प्रतिनिधित्व करें। वाक्य - विन्यास निर्देशोंजेएसपी इस तरह दिखता है:

<%@ директива имяАтрибута="значение" %>जॉब सिंटैक्स निर्देशोंएक्सएमएल में: आदेशअनेक गुण हो सकते हैं. इस मामले में आदेशप्रत्येक विशेषता के लिए दोहराया जा सकता है। उसी समय, जोड़े "विशेषतानाम=मूल्य"विभाजक के रूप में एक स्थान के साथ एक निर्देश के तहत रखा जा सकता है। निर्देश तीन प्रकार के होते हैं:

  • पृष्ठ
  • टैगलिब (टैग लाइब्रेरी)
  • शामिल करना

पृष्ठ निर्देश

आदेश पृष्ठजेएसपी पृष्ठ गुणों को परिभाषित करता है जो अनुवादक को प्रभावित करते हैं। किसी निर्देश में विशेषताओं का क्रम पृष्ठकोई फर्क नहीं पड़ता। वाक्यविन्यास के उल्लंघन या अपरिचित विशेषताओं की उपस्थिति के परिणामस्वरूप अनुवाद त्रुटि होती है। एक निर्देश का उदाहरण पृष्ठनिम्नलिखित कोड सेवा प्रदान कर सकता है:<%@ page buffer="none" isThreadSafe="yes" errorPage="/error.jsp" %>यह निर्देश इसकी घोषणा करता है यह पृष्ठजेएसपी बफरिंग का उपयोग नहीं करता है, कई उपयोगकर्ताओं के लिए एक ही समय में दिए गए जेएसपी पेज तक पहुंचना संभव है, और इसे एक त्रुटि पेज कहा जाता है त्रुटि.जेएसपी.
आदेश पृष्ठपेज की जानकारी हो सकती है:<%@ page info = "JSP Sample 1" %>संभावित निर्देश विशेषताओं की सूची पृष्ठतालिका में प्रस्तुत किया गया है।
उत्तरदायी ठहराने के लिए नामअर्थ विवरण
भाषा रेखा जेएसपी फ़ाइल की स्क्रिप्टलेट्स, अभिव्यक्तियों, या अनुवादित कोड के मुख्य भाग सहित किसी भी सम्मिलित फ़ाइल में प्रयुक्त भाषा निर्दिष्ट करता है। डिफ़ॉल्ट मान "जावा" है
का विस्तार रेखा जेनरेट किए गए सर्वलेट के लिए सुपरक्लास निर्दिष्ट करता है। इस विशेषता का उपयोग बहुत सावधानी से किया जाना चाहिए, क्योंकि यह संभव है कि सर्वर पहले से ही कुछ सुपरक्लास का उपयोग कर रहा हो
आयात रेखा उदाहरण के लिए, आयात किए जाने वाले पैकेजों की परिभाषा:
<%@ पेज आयात='java.util.* %>
सत्र सही या गलत अर्थ सत्य(डिफ़ॉल्ट) इंगित करता है कि एक पूर्वनिर्धारित चर सत्र(प्रकार HttpSession) यदि कोई मौजूदा सत्र है तो उसे उससे जुड़ा होना चाहिए, अन्यथा एक नया सत्र बनाया जाएगा और उससे जुड़ा होगा। अर्थ असत्यनिर्धारित करता है कि सत्रों का उपयोग नहीं किया जाएगा, और वेरिएबल तक पहुंचने का प्रयास करता है सत्र JSP पेज को सर्वलेट में अनुवाद करते समय त्रुटि उत्पन्न होगी
बफर KB में कोई नहीं या बफ़र आकार। JspWriter के लिए बफ़र आकार सेट करता है। डिफ़ॉल्ट मान सर्वर सेटिंग्स पर निर्भर करता है और 8 KB से अधिक नहीं होना चाहिए। यदि मान है कोई नहींआउटपुट सीधे ऑब्जेक्ट पर होता है
ऑटोफ्लश सही या गलत यह निर्धारित करता है कि क्या बफ़र पूर्ण होने पर स्वचालित रूप से जारी किया जाना चाहिए या कोई त्रुटि उत्पन्न होती है। डिफ़ॉल्ट मान सत्य
थ्रेडसेफ है सही या गलत अर्थ सत्य(डिफ़ॉल्ट) सर्वलेट निष्पादन के सामान्य मोड को निर्दिष्ट करता है, जहां एक ही सर्वलेट इंस्टेंस का उपयोग करके कई अनुरोधों को एक साथ संसाधित किया जाता है, इस धारणा के आधार पर कि लेखक ने उस इंस्टेंस के चर तक पहुंच को सिंक्रनाइज़ किया है। गलत संकेतों का एक मान जो सर्वलेट को विरासत में मिलना चाहिए सिंगल थ्रेड मॉडल(एकल-थ्रेडेड मॉडल), जिसमें अनुक्रमिक या एक साथ अनुरोधों को अलग-अलग सर्वलेट उदाहरणों द्वारा संसाधित किया जाता है
जानकारी रेखा जेएसपी पेज जानकारी की एक स्ट्रिंग को परिभाषित करता है जिसे विधि का उपयोग करके एक्सेस किया जाएगा सर्वलेट.getServletInfo()
त्रुटि पृष्ठ रेखा विशेषता मान उस URL पृष्ठ का प्रतिनिधित्व करता है जिसे प्रदर्शित किया जाना चाहिए संभावित त्रुटियाँअपवाद उत्पन्न कर रहा है
isErrorPage सही या गलत संकेत देता है कि क्या इस पृष्ठ का उपयोग अन्य JSP पृष्ठों की त्रुटियों को संभालने के लिए किया जा सकता है। डिफ़ॉल्ट मान है असत्य
सामग्री प्रकार रेखा JSP पृष्ठ और प्रतिक्रिया के लिए एन्कोडिंग, साथ ही JSP प्रतिक्रिया के MIME प्रकार को परिभाषित करता है। डिफ़ॉल्ट सामग्री प्रकार मान है टेक्स्ट/एचटीएमएल, एन्कोडिंग - आईएसओ-8859-1.उदाहरण के लिए:
contentType='text/html;charset=ISO-8859-1'
पेज एन्कोडिंग रेखा JSP पेज के कैरेक्टर एन्कोडिंग को परिभाषित करता है। डिफ़ॉल्ट है charsetगुण से सामग्री प्रकार, यदि इसे वहां परिभाषित किया गया है। यदि मान charsetविशेषता में सामग्री प्रकारअपरिभाषित, मूल्य पेज एन्कोडिंगके बराबर सेट किया गया है आईएसओ-8859-1

टैगलिब निर्देश

आदेश टैगलिबघोषणा करता है कि एक दिया गया JSP पेज एक टैग लाइब्रेरी का उपयोग करता है, इसे यूआरआई के साथ विशिष्ट रूप से पहचानता है, और एक टैग उपसर्ग निर्दिष्ट करता है जो लाइब्रेरी में कार्यों की अनुमति देता है। यदि कंटेनर को टैग लाइब्रेरी नहीं मिल पाती है, तो एक घातक अनुवाद त्रुटि उत्पन्न होती है। आदेश टैगलिबनिम्नलिखित वाक्यविन्यास है:<%@ taglib uri="शामिल करने के लिए टैग लाइब्रेरी का यूआरआई"उपसर्ग =" उपसर्ग नाम" %> उपसर्ग " उपसर्ग नाम" का उपयोग लाइब्रेरी तक पहुँचने के लिए किया जाता है। टैग लाइब्रेरी का उपयोग करने का एक उदाहरण मेरे टैग: <%@ taglib uri="http://www.taglib/mytags" prefix="customs" %> . . . इस उदाहरण में, टैग लाइब्रेरी में एक यूआरआई है "http://www.taglib/mytags", स्ट्रिंग को उपसर्ग के रूप में असाइन किया गया है प्रथाएँ, जिसका उपयोग टैग लाइब्रेरी तत्वों तक पहुँचने के दौरान JSP पेज में किया जाता है।

निर्देश शामिल करें

आदेश शामिल करनाआपको जेएसपी पेज को सर्वलेट में अनुवाद करते समय टेक्स्ट या कोड डालने की अनुमति देता है। निर्देशात्मक वाक्यविन्यास शामिल करनानिम्नलिखित रूप है:<%@ include file="शामिल करने के लिए पृष्ठ का सापेक्ष यूआरआई" %> निर्देश शामिल करनाएक विशेषता है - फ़ाइल. इसमें JSP फ़ाइल में निर्दिष्ट संसाधन का पाठ शामिल है। इस निर्देश का उपयोग प्रत्येक JSP पेज पर एक मानक कॉपीराइट हेडर लगाने के लिए किया जा सकता है:<%@ include file="copyright.html" %>JSP कंटेनर सम्मिलित फ़ाइल तक पहुँचता है। यदि सम्मिलित फ़ाइल बदल गई है, तो कंटेनर JSP पृष्ठ को पुन: संकलित कर सकता है। आदेश शामिल करनाकिसी संसाधन, जैसे कि JSP पृष्ठ, को एक स्थिर वस्तु के रूप में मानता है। दिए गए यूआरआई की व्याख्या आमतौर पर जेएसपी पेज के सापेक्ष की जाती है जिस पर लिंक स्थित है, लेकिन, किसी भी अन्य सापेक्ष यूआरआई की तरह, आप सिस्टम को "जोड़कर वेब सर्वर की होम डायरेक्टरी के सापेक्ष रुचि के संसाधन का स्थान बता सकते हैं" /" यूआरआई की शुरुआत तक। शामिल फ़ाइल की सामग्री को सादे JSP टेक्स्ट के रूप में संसाधित किया जाता है और इसलिए इसमें स्थिर HTML, स्क्रिप्ट तत्व, निर्देश और क्रियाएं जैसे तत्व शामिल हो सकते हैं। कई साइटें प्रत्येक पृष्ठ पर एक छोटे नेविगेशन बार का उपयोग करती हैं। HTML फ़्रेमों के उपयोग की समस्याओं के कारण, इस कार्य को अक्सर शीर्ष पर या पृष्ठ के बाएँ आधे भाग में एक छोटी तालिका रखकर हल किया जाता है, जिसका HTML कोड साइट के प्रत्येक पृष्ठ के लिए कई बार दोहराया जाता है। आदेश शामिल करना- यह सर्वाधिक है प्राकृतिक तरीकाइस समस्या का समाधान, डेवलपर को प्रत्येक व्यक्तिगत फ़ाइल में HTML की प्रतिलिपि बनाने के दुःस्वप्न से बचाना। निर्देश के बाद से शामिल करनापृष्ठ अनुवाद के दौरान फ़ाइलों को जोड़ता है, फिर नेविगेशन बार में परिवर्तन करने के बाद, इसका उपयोग करने वाले सभी JSP पृष्ठों का पुनः अनुवाद आवश्यक होता है। यदि कनेक्टेड फ़ाइलें अक्सर बदलती रहती हैं, तो आप कार्रवाई का उपयोग कर सकते हैं जेएसपी: शामिल करें, जिसमें JSP पेज तक पहुंचने पर फ़ाइल शामिल होती है।

जेएसपी घोषणाएँ

घोषणाओंइसका उद्देश्य स्क्रिप्टिंग भाषा में वेरिएबल्स और विधियों को परिभाषित करना है, जिन्हें बाद में जेएसपी पेज में उपयोग किया जाता है। वाक्य - विन्यास घोषणाओंनिम्नलिखित रूप है:<%! код Java %> विज्ञापनडिक्लेरेशन ब्लॉक में स्थित हैं और जेएसपी पेज के एक्सप्रेशन ब्लॉक में कॉल किए जाते हैं। विज्ञापन ब्लॉक में कोड आमतौर पर लिखा होता है जावा भाषा, हालाँकि एप्लिकेशन सर्वर अन्य स्क्रिप्ट के सिंटैक्स का उपयोग कर सकते हैं। विज्ञापन JavaBeans घटकों के गुणों से प्राप्त गतिशील डेटा के साथ काम करते समय कभी-कभी अतिरिक्त कार्यक्षमता जोड़ने के लिए उपयोग किया जाता है। उदाहरण विज्ञापनोंतालिका में प्रस्तुत किये गये हैं। घोषणाइसमें कई पंक्तियाँ हो सकती हैं, जैसे किसी फ़ंक्शन के मान की गणना के लिए नीचे दिए गए कोड में तथ्य (int n), जो 1 के बराबर होना चाहिए जब n 2 से कम हो और n! n के सकारात्मक मान के लिए;<%! public static int fact (int n) { if (n विज्ञापनमानक आउटपुट के लिए कोई आउटपुट उत्पन्न न करें बाहर. चर और विधियाँ घोषित की गईं विज्ञापनों, प्रारंभ किए गए हैं और स्क्रिप्टलेट्स और अन्य लोगों के लिए उपलब्ध कराए गए हैं विज्ञापनोंजिस समय JSP पृष्ठ आरंभ किया गया है।

जेएसपी स्क्रिप्टलेट्स

स्क्रिप्टलेट्सनिर्देश में परिभाषित स्क्रिप्ट भाषा में लिखे गए कोड के विभिन्न टुकड़े शामिल करें भाषा. कोड अंशों को भाषा की वाक्य रचना के अनुरूप होना चाहिए स्क्रिप्टलेट्स, यानी, एक नियम के रूप में, जावा भाषा का वाक्यविन्यास। स्क्रिप्टलेट्सनिम्नलिखित वाक्यविन्यास है:<% текст скриптлета %>समतुल्य वाक्यविन्यास स्क्रिप्टलेटएक्सएमएल के लिए है: स्क्रिप्टलेट पाठ
यदि पाठ में स्क्रिप्टलेटवर्णों के अनुक्रम का उपयोग %> बिल्कुल वर्णों के संयोजन के रूप में करना आवश्यक है, न कि टैग के रूप में - एक अंतिम संकेत स्क्रिप्टलेट, अनुक्रम %> के बजाय आपको वर्णों के निम्नलिखित संयोजन %\> का उपयोग करना चाहिए।
जेएसपी विनिर्देश एक सरल और प्रदान करता है स्पष्ट उदाहरण स्क्रिप्टलेट, जो जेएसपी पेज सामग्री को पूरे दिन गतिशील रूप से बदलने की अनुमति देता है।<% if (Calendar.getInstance ().get (Calendar.AM_PM) == Calendar.AM) {%>शुभ प्रभात<% } else { %>शुभ दोपहर<% } %>यह ध्यान दिया जाना चाहिए कि कोड अंदर है स्क्रिप्लेटलिखित रूप में डाला गया है, और सभी स्थिर HTML पाठ (टेम्पलेट पाठ) पहले या बाद में स्क्रिप्लेटऑपरेटर का उपयोग करके परिवर्तित किया गया छपाई. इसका मतलब यह है कि स्क्रिप्टलेट में आवश्यक रूप से पूर्ण जावा ब्लॉक शामिल होने की आवश्यकता नहीं है, और खुले छोड़े गए ब्लॉक स्थिर HTML टेक्स्ट पर प्रभाव डाल सकते हैं स्क्रिप्लेट. लिपियाँअभिव्यक्ति के रूप में समान स्वचालित रूप से परिभाषित चर तक पहुंच है। इसलिए, उदाहरण के लिए, यदि किसी पृष्ठ पर कोई जानकारी प्रदर्शित करने की आवश्यकता है, तो आपको वेरिएबल का उपयोग करने की आवश्यकता है बाहर. <% String queryData = request.getQueryString (); out.println ("Дополнительные данные запроса: " + queryData); %>

जेएसपी अभिव्यक्तियाँ

अभिव्यक्ति JSP पृष्ठ में घोषणा में निर्दिष्ट स्क्रिप्ट भाषा में लिखी गई एक निष्पादन योग्य अभिव्यक्ति है भाषा(आमतौर पर जावा)। परिणाम अभिव्यक्तिजेएसपी का एक आवश्यक प्रकार है डोरी, मानक आउटपुट पर जाता है बाहरवर्तमान वस्तु का उपयोग करना जेएसपीराइटर. यदि परिणाम अभिव्यक्तिटाइप करने के लिए नहीं डाला जा सकता डोरी, यदि अनुवाद चरण के दौरान समस्या की पहचान की गई थी, तो या तो अनुवाद त्रुटि उत्पन्न होती है, या एक अपवाद उठाया जाता है क्लासकास्ट अपवाद, यदि अनुरोध निष्पादन प्रक्रिया के दौरान विसंगति की पहचान की गई थी। अभिव्यक्तिनिम्नलिखित सिंटैक्स है: <%= अभिव्यक्ति टेक्स्ट %> के लिए वैकल्पिक सिंटैक्स अभिव्यक्ति XML का उपयोग करते समय JSP: अभिव्यक्ति पाठनिष्पादन आदेश अभिव्यक्तिजेएसपी पेज में बाएँ से दाएँ। अगर अभिव्यक्तिएक से अधिक रनटाइम विशेषता में प्रकट होता है, फिर इसे दिए गए टैग में बाएं से दाएं निष्पादित किया जाता है। अभिव्यक्तिएक विशिष्ट स्क्रिप्ट (आमतौर पर जावा) में पूर्ण अभिव्यक्ति होनी चाहिए। HTTP प्रोटोकॉल चलने के दौरान अभिव्यक्तियाँ निष्पादित होती हैं। अभिव्यक्ति का मान एक स्ट्रिंग में परिवर्तित किया जाता है और जेएसपी फ़ाइल में उचित स्थान पर शामिल किया जाता है। अभिव्यक्तिआमतौर पर JSP पृष्ठ के घोषणा ब्लॉक में परिभाषित या JSP से पहुंच योग्य JavaBeans घटकों से प्राप्त चर और विधियों के स्ट्रिंग प्रतिनिधित्व का मूल्यांकन और प्रदर्शित करने के लिए उपयोग किया जाता है। निम्नलिखित कोड अभिव्यक्तिइस पृष्ठ के लिए अनुरोध की तिथि और समय प्रदर्शित करने का कार्य करता है: वर्तमान समय: <%= new java.util.Date() %> सरल बनाने के लिए अभिव्यक्तिऐसे कई पूर्वनिर्धारित चर हैं जिनका उपयोग किया जा सकता है। सबसे अधिक उपयोग किए जाने वाले चर:
  • अनुरोध, HttpServletRequest;
  • प्रतिक्रिया, HttpServletResponse;
  • सत्र, HttpSession - अनुरोध से संबद्ध, यदि कोई हो;
  • बाहर, प्रिंटराइटर - क्लाइंट को डेटा भेजने के लिए JspWriter प्रकार का एक बफ़र्ड संस्करण।

यह आवश्यक रूप से उस वर्ग के नाम से मेल खाना चाहिए जिसकी मुख्य() विधि जावा मशीन शुरू होने पर कॉल की जाती है।

  • वस्तु - वह वर्ग जिससे वे विरासत में मिले हैं सभीजावा में ऑब्जेक्ट, जिसमें सरणियाँ और स्ट्रिंग्स() शामिल हैं।
  • प्रत्येक सदस्य के लिए एक्सेस विनिर्देशक अलग-अलग होते हैं (घोषणा से पहले संकेतित)।
  • सभी वर्ग सदस्य डिफ़ॉल्ट रूप से दायरे में आते हैं पैकेट. "डिफ़ॉल्ट" दायरा निजी और संरक्षित के बीच कहीं है, देखें।
  • प्रत्येक *.java फ़ाइल में शामिल हो सकते हैं केवल एकएक वर्ग को सार्वजनिक और बाहर से पहुंच योग्य घोषित किया गया।
  • किसी वर्ग की परिभाषा और घोषणा हमेशा एक ही फ़ाइल में होती है; हेडर में प्रोटोटाइप डालना असंभव है।
  • कोई संकेत नहीं हैं.
  • सभी वर्ग चर वास्तव में वस्तुओं के संदर्भ हैं, न कि स्वयं वस्तुएं। उपयोग के लिए उन्हें प्रारंभ करना नए के माध्यम से किया जाना चाहिए<конструктор-класса>(...) .
  • पिछले बिंदु के आधार पर, एक ऑब्जेक्ट वेरिएबल को दूसरे में असाइन करते समय, केवल संदर्भ बदला जाता है, लेकिन ऑब्जेक्ट की प्रतिलिपि नहीं बनाई जाती है।
  • फ़ंक्शंस में वेरिएबल्स को मान द्वारा पारित किया जाता है यदि यह है प्राथमिक प्रकार(इंट, बाइट, लॉन्ग, आदि...), या यदि ये ऑब्जेक्ट हैं तो संदर्भ द्वारा।
  • किसी वर्ग के सार्वजनिक स्थैतिक सदस्यों तक डॉट ऑपरेटर के माध्यम से प्रवेश किया जाता है। , और इसके माध्यम से नहीं ::, जो मेरी राय में कुछ बाहरी भ्रम पैदा करता है।
  • कोई विध्वंसक नहीं है, लेकिन अंतिम रूप() है।
  • C++ डिस्ट्रक्टर के साथ फाइनलाइज़() को भ्रमित न करें। अंतिम रूप() कहा जाता है केवल कचरा संग्रहण के दौरान, जिसका वस्तु के दायरे से बाहर जाने और इस वस्तु के कम से कम एक संदर्भ की अनुपस्थिति से कोई लेना-देना नहीं है।
  • वर्तमान रनटाइम ऑब्जेक्ट या स्टेटिक System.gc() विधि पर Runtime.gc() विधि को कॉल करके कचरा संग्रहण को बाध्य किया जा सकता है। प्रयोगों के आधार पर, स्मृति को मुक्त करना केवल सीमा के भीतर ही काम करता है आभासी मशीनजब तक मशीन बंद नहीं हो जाती, जावा OS को आवंटित की गई मेमोरी वापस नहीं लौटाता।
  • जावा कोडिंग शैली में, फ़ंक्शन कोड लौटाने के बजाय अपवाद फेंकते हैं प्रणालीगतत्रुटियाँ या वर्चुअल मशीन तर्क त्रुटियाँ। इसलिए, कई फ़ंक्शन को हैंडलिंग अपवाद के ट्राइ (...) कैच (...) (...) ब्लॉक के अंदर निष्पादित किया जाना चाहिए, या उन्हें कॉल करने वाली विधि को इन फ़ंक्शन द्वारा उत्पन्न अपवादों की सूची को थ्रो के माध्यम से स्पष्ट रूप से इंगित करना चाहिए। जिसे इसके द्वारा संसाधित नहीं किया जा सकता है, ताकि उन्हें कॉल स्टैक के "उच्च" तरीकों से संभाला जा सके।
  • अपवादों को और में विभाजित किया गया है।
  • एक प्रयास (...) ब्लॉक अंततः (...) ब्लॉक के साथ भी समाप्त हो सकता है, जिसे पिछले प्रयास (...) ब्लॉक में अपवादों की उपस्थिति या अनुपस्थिति की परवाह किए बिना निष्पादित किया जाता है। कोड के ब्लॉक को निष्पादित करने के परिणामों की परवाह किए बिना किसी भी अनिवार्य कार्रवाई को करने के लिए इसका उपयोग करना सुविधाजनक है, उदाहरण के लिए, इसमें आवंटित सभी संसाधनों को स्वचालित रूप से जारी करना।
  • char C/C++ की तरह एकल-बाइट प्रकार नहीं है, यह 16-बिट सहायक प्रकार है यूनिकोडपंक्तियाँ.
  • जावा में बूल को बूलियन के नाम से जाना जाता है।
  • सशर्त स्वीकार करते हैं केवलबूलियन प्रकार के चर या अभिव्यक्तियाँ। इसका मतलब है कि कोड इस तरह दिखता है:
    int ए; ... वेरिएबल ए पर कार्रवाई ...; यदि एक) ( ... )
    यह जावा सिंटैक्स के संदर्भ में सही नहीं है और संकलित नहीं होगा।
  • स्थिरांक को अंतिम घोषित किया जाता है न कि स्थिरांक को।
  • सभी ऐरे ऑब्जेक्ट हैं।
  • यहां तक ​​कि स्ट्रिंग स्थिरांक (उदाहरण के लिए "कोई भी स्ट्रिंग कॉन्स्ट") ऑब्जेक्ट हैं।
  • स्ट्रिंग्स (स्ट्रिंग क्लास) के लिए, केवल एक ऑपरेटर परिभाषित किया गया है - +, संयोजन।
  • स्ट्रिंग की तुलना स्ट्रिंग वर्ग की बूल बराबर() विधि के माध्यम से की जाती है, उदाहरण के लिए s1.equals(s2) ।
  • स्ट्रिंग ऑब्जेक्ट की सामग्री स्थिर होती है और इसका तात्पर्य स्ट्रिंग के किसी व्यक्तिगत तत्व को बदलना नहीं है, यह प्रदर्शन को बेहतर बनाने के लिए किया जाता है। यदि आपको समान संचालन की आवश्यकता है, तो आप स्ट्रिंगबफ़र क्लास का उपयोग कर सकते हैं।
  • जब एक अप्रारंभीकृत स्ट्रिंग को एक गैर-आरंभीकृत स्ट्रिंग के साथ संयोजित किया जाता है खाली पंक्तिहो जाएगा शून्य + गैर-रिक्त-स्ट्रिंग, उदाहरण के लिए s += "|string"; "null|string" के बराबर होगा
  • सरणियों में सार्वजनिक सदस्य चर लंबाई होती है। लाइनों में कोई नहीं है, वे इसके बजाय length() विधि का उपयोग करते हैं।
  • जावा समर्थन मत करोएकाधिक विरासत. इसके कुछ कार्य "इंटरफ़ेस" के माध्यम से किए जाते हैं। इंटरफ़ेस एकाधिक "विरासत" का समर्थन करते हैं - एक वर्ग में कई इंटरफ़ेस का कार्यान्वयन, और सामान्य तौर पर "कई (इंटरफ़ेस) से कई (वर्ग)" संबंध और इसके विपरीत।
  • इंटरफ़ेस लिंक के निर्माण की अनुमति देते हैं जिसके माध्यम से आप उन कक्षाओं की वस्तुओं तक पहुंच सकते हैं जो इन इंटरफेस को लागू करते हैं। सच है, लिंक इंटरफ़ेस के माध्यम से एक्सेस करते समय गतिशील रूप से एक उपयुक्त विधि की खोज करने के लिए बहुत अधिक ओवरहेड की आवश्यकता होती है, और इसलिए यह वांछनीय नहीं है।
  • एनम के बजाय, आप उन पर तरीकों की घोषणा किए बिना इंटरफेस का उपयोग कर सकते हैं। इस स्थिति में, इंटरफ़ेस परिभाषित होने पर सभी इंटरफ़ेस चर प्रारंभ किए जाने चाहिए और उनके मान स्वचालित रूप से स्थिर रहेंगे। उसके बाद, उपकरणों के माध्यम से उन्हें परिभाषित वर्ग से "कनेक्ट" किया जा सकता है।
  • इसके अलावा, JDK 5 से शुरू कर रहे हैं बाहर सेक्लासिक एनम - एनम। वास्तव में, यह केवल नामित स्थिरांकों की सूची नहीं है, बल्कि एनम सुपरक्लास से विरासत में मिला एक विशेष वर्ग है। गणना का प्रत्येक तत्व इस वर्ग का एक ऑब्जेक्ट है। किसी गणना वस्तु का संख्यात्मक मान अंतर्निहित क्रमिक फ़ंक्शन का उपयोग करके प्राप्त किया जा सकता है।
  • रिवाज़ ऑपरेटर ओवरलोडिंग C++, Java में परिचित समर्थित नहीं.
  • जावा में "आदिम प्रकार" (इंट, फ्लोट, चार, आदि...) के साथ ऑब्जेक्ट वातावरण में काम करने के लिए इसका उपयोग किया जाता है ऑटोपैकिंग/ऑटोअनपैकिंगरैपर प्रकारों में (पूर्णांक, फ़्लोट, कैरेक्टर, आदि...)। संक्षेप में, यह कई अंतर्निहित वर्गों के लिए ऑपरेटर ओवरलोडिंग का कार्यान्वयन है जो आदिम प्रकार + ऑब्जेक्ट विधियों की कार्यक्षमता को लागू करता है।
  • सुपर एक कीवर्ड है जो आपको उपवर्ग से सुपरक्लास कंस्ट्रक्टर को कॉल करने, या उपवर्ग के किसी सदस्य द्वारा छिपे सुपरक्लास के सदस्य तक पहुंचने की अनुमति देता है।
    • जब कंस्ट्रक्टर के रूप में उपयोग किया जाता है - सुपर हमेशा प्रथम होना चाहिएउपवर्ग कंस्ट्रक्टर में ऑपरेटर।
  • निर्धारण हेतु अमूर्तविधियाँ अमूर्त कीवर्ड का उपयोग करती हैं, अमूर्त विधि वाले वर्ग को भी अमूर्त वर्ग के रूप में परिभाषित किया जाना चाहिए...
  • फाइनल बाल कक्षाओं में विधियों को ओवरराइड होने से रोकता है। अंतिम घोषित की गई "छोटी" विधियों के लिए, इस कीवर्ड का प्रभाव C++ में इनलाइन के समान होता है - फ़ंक्शन को कॉल करने के बजाय उपवर्गों में शायदसुपरक्लास विधि का बाइटकोड कॉलिंग क्लास विधि के कोड में डाला जाता है।
  • फ़ाइनल, फ़ाइनल घोषित वर्ग को विरासत में मिलने से भी रोकता है।
  • नेमस्पेसजावा में (नेमस्पेस) को इस प्रकार कार्यान्वित किया जाता है संकुल(पैकेट)।
  • कनेक्ट करने के लिए संकुलआयात का उपयोग किया जाता है, आप आयात स्थैतिक का भी उपयोग कर सकते हैं ..(*|) स्थिर वर्ग के सदस्यों को आयात करने के लिए।
  • जावा अंतर्निहित थ्रेड क्लास और रनएबल इंटरफ़ेस के माध्यम से थ्रेड्स का समर्थन करता है। सिंक्रोनाइज़ेशन के लिए, वर्ग विवरण में विधि से पहले सिंक्रोनाइज़्ड विनिर्देशक का उपयोग करें, या सिंक्रोनाइज़्ड( ) (...) के साथ सिंक्रनाइज़ कोड के एक ब्लॉक के लिए . सिंक्रनाइज़ थ्रेड्स के बीच संकेतों के लिए, मूल वर्ग ऑब्जेक्ट के तरीकों का उपयोग किया जाता है: wait()/notify()/notifyAll() ।
  • क्षणिक - एक संशोधक जो दर्शाता है कि किसी ऑब्जेक्ट/वैरिएबल के मान को ऑब्जेक्ट को सहेजते समय "होल्ड" करने की आवश्यकता नहीं है, उदाहरण के लिए इसे डिस्क पर/डेटाबेस में लिखने से पहले क्रमबद्ध करते समय। अद्वितीय रनटाइम पहचानकर्ताओं और अन्य समान जानकारी वाले वेरिएबल्स को चिह्नित करना इस तरह से तर्कसंगत है जो केवल जावा प्रक्रिया के वर्तमान उदाहरण में समझ में आता है।
  • का उदाहरण - रनटाइम ऑपरेशन, रिटर्न सत्यअगर कक्षा के लिए एक लिंक है , या अन्यथा इस वर्ग के संदर्भ में डाला जा सकता है असत्य.
  • जोर - जावा में दावे का उपयोग उसी तरह किया जाता है जैसे सी में: जोर [: अभिकथन विफल विवरण], लेकिन ध्यान रखने की जरूरत हैकि उन्हें संकलित बाइटकोड में बेक किया गया है, और java -ea चलाते समय सक्षम किया जा सकता है।
  • यह (...) - एक क्लास कंस्ट्रक्टर के अंदर उसी क्लास के दूसरे कंस्ट्रक्टर को कॉल करने के लिए इस्तेमाल किया जा सकता है जो तर्कों के हस्ताक्षर से मेल खाता है।
  • के बजाय खाकेउपयोग किया जाता है सामान्यीकरण, बहुत समान दिखता है: क्लास CLASS_NAME (...). सामान्यीकरण में यह वर्जित हैउपयोग प्राचीनप्रकार ( int, बाइट, चार, आदि...). पैरामीटर्स का उपयोग किया जा सकता है केवल कक्षाएं.
    इसके अलावा, यह समर्थन करता है सीमित प्रकार, पैरामीटर वर्गों के लिए एक सुपरक्लास निर्दिष्ट करके। उदाहरण के लिए, "सामान्य वर्ग" वर्ग CLASS_NAME की घोषणा जिसमें केवल सामान्य संख्यात्मक वर्ग संख्या के वंशज वर्गों का उपयोग करने की अनुमति है।
  • सरणियों को शीघ्रता से कॉपी करने के लिए, System.arraycopy() का उपयोग करना सुविधाजनक है।
  • कई प्रोग्रामिंग भाषाओं के मूलभूत तत्वों में से एक है सशर्त, . ये डिज़ाइन आपको कुछ शर्तों के आधार पर प्रोग्राम के कार्य को किसी एक पथ पर निर्देशित करने की अनुमति देते हैं।

    जावा में निम्नलिखित सशर्त निर्माणों का उपयोग किया जाता है: यदि..अन्यथा और स्विच..केस

    यदि/अन्यथा निर्माण करें

    एक if/else कथन किसी स्थिति की सत्यता का परीक्षण करता है और, परीक्षण के परिणामों के आधार पर, कुछ कोड निष्पादित करता है:

    पूर्णांक 1 = 6; पूर्णांक संख्या2 = 4; if(num1>num2)( System.out.println('पहली संख्या दूसरी से बड़ी है'); )

    बाद कीवर्डयदि शर्त निर्धारित है. और यदि यह शर्त पूरी हो जाती है, तो जो कोड आगे if ब्लॉक में रखा जाता है घुंघराले ब्रेसिज़. शर्तें दो संख्याओं की तुलना करने की क्रिया हैं।

    चूँकि, इस मामले में, पहली संख्या दूसरी से बड़ी है, अभिव्यक्ति num1 > num2 सत्य है और सत्य लौटाता है। नतीजतन, नियंत्रण घुंघराले ब्रेसिज़ के बाद कोड के ब्लॉक में चला जाता है और वहां मौजूद निर्देशों को निष्पादित करना शुरू कर देता है, विशेष रूप से विधि System.out.println('पहला नंबर दूसरे से बड़ा है'); . यदि पहली संख्या दूसरी से कम या उसके बराबर थी, तो if ब्लॉक में कथन निष्पादित नहीं किए जाएंगे।

    लेकिन क्या होगा यदि हम चाहते हैं कि कोई शर्त पूरी न होने पर भी कुछ कार्रवाई की जाए? इस मामले में हम एक और ब्लॉक जोड़ सकते हैं:

    पूर्णांक 1 = 6; पूर्णांक संख्या2 = 4; if(num1>num2)( System.out.println('पहली संख्या दूसरी से बड़ी है'); ) else( System.out.println('पहली संख्या दूसरी से कम है');

    पूर्णांक 1 = 6; पूर्णांक संख्या2 = 8; if(num1>num2)( System.out.println("पहला नंबर दूसरे से बड़ा है"); ) अन्यथा if(num1

    हम तार्किक ऑपरेटरों का उपयोग करके एक साथ कई स्थितियाँ भी जोड़ सकते हैं:

    पूर्णांक 1 = 8; पूर्णांक संख्या2 = 6; if(num1 > num2 && num1>7)( System.out.println('पहली संख्या दूसरी से बड़ी और 7 से बड़ी है'); )

    यहां if ब्लॉक निष्पादित किया जाएगा यदि num1 > num2 सत्य है और साथ ही num1>7 सत्य है।

    स्विच निर्माण

    डिज़ाइन स्विच केसयदि/अन्यथा निर्माण के समान है, क्योंकि यह आपको एक साथ कई स्थितियों को संसाधित करने की अनुमति देता है:

    पूर्ण संख्या = 8; स्विच (संख्या) (केस 1: System.out.println ("संख्या 1 है"); ब्रेक; केस 8: System.out.println ("संख्या 8 है"); num++; ब्रेक; केस 9: सिस्टम। out. println('संख्या 9 है');

    स्विच कीवर्ड के बाद, तुलना की जाने वाली अभिव्यक्ति कोष्ठक में आती है। इस अभिव्यक्ति के मान की तुलना केस ऑपरेटर के बाद रखे गए मानों से क्रमिक रूप से की जाती है। और यदि कोई मिलान पाया जाता है, तो एक विशिष्ट केस ब्लॉक निष्पादित किया जाएगा।

    अन्य ब्लॉकों को निष्पादित करने से बचने के लिए केस ब्लॉक के अंत में एक ब्रेक स्टेटमेंट रखा जाता है। उदाहरण के लिए, यदि हमने निम्नलिखित मामले में ब्रेक स्टेटमेंट हटा दिया है:

    केस 8: System.out.println('संख्या 8 है'); संख्या++; केस 9: System.out.println('संख्या 9 है'); तोड़ना;

    फिर चूंकि हमारा वेरिएबल नंबर 8 के बराबर है, तो ब्लॉक केस 8 निष्पादित किया जाएगा, लेकिन चूंकि इस ब्लॉक में वेरिएबल नंबर एक से बढ़ गया है, कोई ब्रेक स्टेटमेंट नहीं है, तो ब्लॉक केस 9 निष्पादित होना शुरू हो जाएगा।

    यदि हम उस स्थिति को भी संभालना चाहते हैं जहां कोई मिलान नहीं मिलता है, तो हम एक डिफ़ॉल्ट ब्लॉक जोड़ सकते हैं, जैसा कि ऊपर दिए गए उदाहरण में है। हालाँकि डिफ़ॉल्ट ब्लॉक वैकल्पिक है.

    जेडीके 7 से शुरू करके, आदिम प्रकारों के अलावा, आप स्विच..केस एक्सप्रेशन में स्ट्रिंग्स का भी उपयोग कर सकते हैं:

    पैकेज फर्स्टएप; आयात java.util.स्कैनर; पब्लिक क्लास फ़र्स्टऐप (सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग आर्ग्स) (स्कैनर इन = नया स्कैनर (सिस्टम.इन); System.out.println ("Y या N दर्ज करें:"); स्ट्रिंग इनपुट = in.nextLine(); स्विच( इनपुट)( केस "Y": System.out.println ("आपने अक्षर Y दबाया"); ब्रेक; केस "N": System.out.println ("आपने अक्षर N दबाया"); ब्रेक; डिफ़ॉल्ट: सिस्टम .out .println('आपने एक अज्ञात पत्र दबाया');

    टर्नरी ऑपरेशन

    टर्नरी ऑपरेटर में निम्नलिखित सिंटैक्स है: [पहला ऑपरेंड - स्थिति]? [दूसरा ऑपरेंड] : [तीसरा ऑपरेंड]। इस प्रकार, इस ऑपरेशन में तीन ऑपरेंड शामिल हैं। स्थिति के आधार पर, टर्नरी ऑपरेटर दूसरा या तीसरा ऑपरेंड लौटाता है: यदि स्थिति सत्य है, तो दूसरा ऑपरेंड लौटाया जाता है; यदि शर्त झूठी है, तो तीसरा। उदाहरण के लिए:

    पूर्णांक x=3; int y=2; पूर्णांक z = x

    यहां टर्नरी ऑपरेशन का परिणाम वेरिएबल z है। सबसे पहले शर्त x की जाँच की जाती है

    स्टानिस्लाव गोर्नकोव

    किसी भी विदेशी भाषा को बोलने और पढ़ने के लिए आपको उस भाषा की वर्णमाला और व्याकरण सीखना होगा। प्रोग्रामिंग भाषाओं का अध्ययन करते समय भी ऐसी ही स्थिति देखी जाती है, एकमात्र अंतर यह है कि मुझे ऐसा लगता है कि यह प्रक्रिया कुछ हद तक आसान है। लेकिन इससे पहले कि आप प्रोग्राम का सोर्स कोड लिखना शुरू करें, आपको सबसे पहले आपको सौंपी गई समस्या को आपके लिए सुविधाजनक किसी भी रूप में हल करना होगा।

    आइए एक निश्चित वर्ग बनाएं जो जिम्मेदार है, उदाहरण के लिए, एक टेलीफोन के लिए, जिसमें केवल दो विधियां होंगी: इसी फोन को चालू और बंद करना। चूँकि हम वर्तमान में जावा भाषा का सिंटैक्स नहीं जानते हैं, इसलिए हम फ़ोन क्लास को एक अमूर्त भाषा में लिखेंगे।

    क्लास फ़ोन (विधि सक्षम करें() (//फ़ोन चालू करने के लिए ऑपरेशन) विधि अक्षम करें (//फ़ोन बंद करने के लिए ऑपरेशन))

    फ़ोन क्लास कुछ इस तरह दिख सकती है. ध्यान दें कि घुंघराले ब्रेसिज़ क्रमशः किसी वर्ग, विधि या डेटा के किसी अनुक्रम के मुख्य भाग की शुरुआत और अंत को दर्शाते हैं। अर्थात्, कोष्ठक किसी विधि या वर्ग में सदस्यता दर्शाते हैं। प्रत्येक आरंभिक कोष्ठक के लिए एक समापन कोष्ठक अवश्य होना चाहिए। भ्रम से बचने के लिए, उन्हें आमतौर पर कोड में समान स्तर पर रखा जाता है।

    अब उसी क्लास को केवल जावा में लिखते हैं।

    क्लास टेलीफ़ोन ( शून्य ऑन() ( // मेथड बॉडी ऑन() ) वॉयड ऑफ() ( // मेथड बॉडी ऑफ() ) )

    जावा भाषा में कीवर्ड क्लास एक क्लास घोषित करता है, जिसके बाद क्लास का नाम आता है। हमारे मामले में, यह टेलीफ़ोन है। रिकॉर्डिंग रजिस्टर के बारे में बस कुछ शब्द। लगभग सभी प्रोग्रामिंग भाषाओं में, नामों को उस रजिस्टर में सहेजना महत्वपूर्ण है जिसमें वे लिखे गए थे। यदि आपने टेलीफ़ोन लिखा है, तो टेलीफ़ोन या टेलीफ़ोन जैसी वर्तनी संकलन के दौरान एक त्रुटि उत्पन्न करेगी। जैसा कि हमने शुरू में लिखा था, हमें इसी तरह लिखना जारी रखना चाहिए।

    आरक्षित या कीवर्ड अपने विशिष्ट मामले में लिखे जाते हैं, और आप उन्हें विधियों, वर्गों, वस्तुओं आदि का नाम देकर उपयोग नहीं कर सकते हैं। शब्दों के बीच रिक्त स्थान कोई मायने नहीं रखता क्योंकि कंपाइलर बस उन्हें अनदेखा कर देता है, लेकिन वे कोड पठनीयता के लिए महत्वपूर्ण हैं।

    टेलीफ़ोन क्लास के मुख्य भाग में दो विधियाँ हैं: चालू() - फ़ोन चालू करता है और बंद() विधि - फ़ोन बंद करता है। दोनों विधियों के अपने-अपने निकाय हैं और, सिद्धांत रूप में, उनमें कुछ स्रोत कोड होना चाहिए जो दोनों विधियों की आवश्यक क्रियाओं का वर्णन करता है। हमारे लिए अब यह मायने नहीं रखता कि इन तरीकों को कैसे लागू किया जाता है, मुख्य बात जावा भाषा का सिंटैक्स है।

    दोनों विधियों में on() कोष्ठक हैं जिनके भीतर पैरामीटर लिखे जा सकते हैं, जैसे on(int time) या on(int time, int time1)। मापदंडों की मदद से तरीकों और बाहरी दुनिया के बीच एक तरह का संबंध बनता है। कहा जाता है कि on(int time) विधि एक समय पैरामीटर लेती है। यह किस लिए है? उदाहरण के लिए, आप चाहते हैं कि आपका फ़ोन एक निश्चित समय पर चालू हो। फिर समय पैरामीटर में पूर्णांक मान विधि के मुख्य भाग में भेज दिया जाएगा और, प्राप्त डेटा के आधार पर, फ़ोन चालू हो जाएगा। यदि कोष्ठक खाली हैं, तो विधि किसी भी पैरामीटर को स्वीकार नहीं करती है।

    टिप्पणियाँ

    टेलीफ़ोन वर्ग में, दोनों विधियों के मुख्य भाग में दो स्लैश के बाद एक प्रविष्टि होती है: //। यह प्रविष्टि उन टिप्पणियों को दर्शाती है जिन्हें कंपाइलर द्वारा अनदेखा कर दिया जाएगा, लेकिन कोड पठनीयता के लिए आवश्यक हैं। कार्यक्रम लिखते समय आप जितनी अधिक जानकारी पर टिप्पणी करेंगे, उतनी ही अधिक संभावना होगी कि आप एक वर्ष में यह याद रखेंगे कि आप इस समय किस पर काम कर रहे थे।

    जावा में टिप्पणियाँ तीन प्रकार की हो सकती हैं: //, /*…*/ और /**…*/। // ऑपरेटर का उपयोग करके लिखी गई टिप्पणियाँ एक पंक्ति में दिखाई देनी चाहिए:

    // एक लकीर!!! गलती! आप इसे दूसरी पंक्ति में नहीं लपेट सकते! // पहली पंक्ति // दूसरी पंक्ति // ... // अंतिम पंक्ति

    /*…*/ ऑपरेटरों का उपयोग करने वाली टिप्पणियाँ कई पंक्तियों तक फैली हो सकती हैं। अपनी टिप्पणी की शुरुआत में, /* डालें, और अंत में, जब आप कोड पर टिप्पणी करना समाप्त कर लें, तो ऑपरेटर */ डालें। अंतिम प्रकार की टिप्पणी /**…*/ का उपयोग कोड का दस्तावेजीकरण करते समय किया जाता है और इसे किसी भी संख्या में लाइनों पर भी स्थित किया जा सकता है।

    जावा डेटा प्रकार

    मनमाना मान सेट करने के लिए, जावा में डेटा प्रकार हैं। टेलीफ़ोन क्लास में हमने दो विधियाँ बनाई हैं। दोनों विधियों में कोई पैरामीटर नहीं था, लेकिन जब समय पैरामीटर के साथ ऑन (इंट टाइम) विधि का उदाहरण दिया गया, तो उन्होंने विधि में एक मान पारित करने के बारे में बात की। यह मान उस समय को इंगित करता है जिस पर फ़ोन चालू होना चाहिए। इंट स्पेसिफायर समय मान के प्रकार को निर्धारित करता है। Java 2 ME में छह डेटा प्रकार हैं।

    बाइट - -128 से 128 तक छोटा पूर्णांक मान;
    लघु - -32768 से 32767 तक की सीमा में लघु पूर्णांक मान;
    int - इसमें -2147483648 से 2147483647 तक कोई भी पूर्णांक मान शामिल है;
    लंबा - बहुत बड़ा पूर्णांक मान, -922337203685475808 से 9223372036854775807 तक;
    char एक यूनिकोड वर्ण स्थिरांक है। इस प्रारूप की सीमा 0 से 65536 तक है, जो 256 वर्णों के बराबर है। इस प्रकार का कोई भी अक्षर सिंगल कोट्स में लिखा जाना चाहिए, उदाहरण के लिए: 'जी';
    बूलियन एक तार्किक प्रकार है जिसमें केवल दो मान होते हैं: गलत और सत्य। इस प्रकार का उपयोग अक्सर लूप में किया जाता है, जिस पर बाद में चर्चा की जाएगी। मतलब बहुत सरल है - यदि आपकी जेब में पैसा है, तो यह सच माना जाता है, और यदि नहीं, तो यह झूठ है। इस प्रकार, यदि हमारे पास पैसा है, तो हम रोटी या बीयर के लिए दुकान पर जाते हैं (जो उचित है उसे रेखांकित करें), यदि पैसा नहीं है, तो हम घर पर रहते हैं। अर्थात्, यह एक तार्किक मूल्य है जो आपके कार्यक्रम की आगे की कार्रवाइयों के चुनाव में योगदान देता है।

    कुछ आवश्यक मान घोषित करने के लिए, निम्नलिखित प्रविष्टि का उपयोग करें:

    इंट टाइम; लंबा बिगटाइम; चार शब्द;

    प्रविष्टियों के बाद अर्धविराम ऑपरेटर की आवश्यकता होती है और इसे पंक्ति के अंत में रखा जाता है। आप अल्पविराम से अलग करके एक ही प्रकार की कई घोषणाओं को जोड़ सकते हैं:

    माउंट समय, समय1, समय2;

    आइए अब इसमें कुछ मान जोड़कर अपनी टेलीफ़ोन कक्षा को बेहतर बनाएं। हमें अब on() और off() तरीकों की आवश्यकता नहीं है, आइए नए तरीके जोड़ें जो वास्तव में कुछ समस्याओं का समाधान कर सकें।

    क्लास टेलीफ़ोन ( //एस - डिस्प्ले एरिया //डब्ल्यू - डिस्प्ले चौड़ाई //एच - डिस्प्ले ऊंचाई int w, h, S; // वह विधि जो डिस्प्ले एरिया शून्य क्षेत्र की गणना करती है () (एस = डब्ल्यू*एच; ))

    तो, हमारे पास तीन वेरिएबल एस, डब्ल्यू और एच हैं, जो पिक्सेल में डिस्प्ले के क्षेत्र, चौड़ाई और ऊंचाई के लिए क्रमशः जिम्मेदार हैं। एरिया() विधि फोन की स्क्रीन के क्षेत्र की गणना पिक्सल में करती है। यह ऑपरेशन बेकार है, लेकिन बहुत ही उदाहरणात्मक और समझने में आसान है। एरिया() विधि का मुख्य भाग स्वयं मिल गया है और इसका रूप S = w*h है। इस पद्धति में, हम बस चौड़ाई को ऊंचाई से गुणा करते हैं और असाइन करते हैं या, जैसा कि वे कहते हैं, परिणाम को वेरिएबल एस में संग्रहीत करते हैं। इस वेरिएबल में इस फोन के डिस्प्ले क्षेत्र के मान शामिल होंगे . अब हम जावा भाषा ऑपरेटरों के करीब आ गए हैं, जिनकी मदद से आप सभी प्रकार के ऑपरेशन कर सकते हैं और जिसके बारे में हम लेखों की इस श्रृंखला के अगले भाग में बात करेंगे।




    मित्रों को बताओ