Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

JShell में Java 9: नियम और सिंटैक्स गाइड

JShell Java 9 का REPL (Read-Eval-Print Loop) टूल है जो कोड स्निपेट्स के त्वरित निष्पादन की अनुमति देता है। एक स्निपेट एक निर्देश है जो मानक Java सिंटैक्स का उपयोग करता है - अभिव्यक्ति, कथन, या घोषणा।

JShell नियम और प्रतिबंध

1. अनुमत स्निपेट प्रकार

  • आयात घोषणाएं
  • कक्षा घोषणाएं
  • इंटरफेस घोषणाएं
  • विधि घोषणाएं
  • फील्ड घोषणाएं
  • कथन
  • प्राथमिक अभिव्यक्तियां

2. प्रतिबंधित घोषणाएं

3. इनपुट संचालन

  • अपूर्ण इनपुट: JShell अधिक इनपुट के लिए प्रॉम्प्ट करता है (उदाहरण: System.out टाइप करने पर println के लिए प्रतीक्षा करता है)
  • गुम सेमीकोलन: पूर्ण कथनों के लिए JShell स्वचालित रूप से जोड़ देता है

JShell सत्र उदाहरण

चर और अभिव्यक्तियां

jshell> int x = 10
x ==> 10

jshell> x * 2
$2 ==> 20

jshell> String name = "JShell"
name ==> "JShell"

jshell> name.length()
$4 ==> 6

कक्षा परिभाषा और तत्काल उपयोग

jshell> class Employee {
   ...>     private String firstName;
   ...>     private String lastName;
   ...>     private String designation;
   ...>     
   ...>     public Employee(String firstName, String lastName, String designation) {
   ...>         this.firstName = firstName;
   ...>         this.lastName = lastName;
   ...>         this.designation = designation;
   ...>     }
   ...>     
   ...>     public String getFirstName() { return firstName; }
   ...>     public String getLastName() { return lastName; }
   ...>     public String getDesignation() { return designation; }
   ...>     
   ...>     public String toString() {
   ...>         return "Name = " + firstName + ", " + lastName + 
   ...>                " | designation = " + designation;
   ...>     }
   ...> }
|  created class Employee

jshell> Employee emp = new Employee("Sai", "Adithya", "Content Developer")
emp ==> Name = Sai, Adithya | designation = Content Developer

jshell> emp.getFirstName()
$3 ==> "Sai"

विधि घोषणा

jshell> int factorial(int n) {
   ...>     return n <= 1 ? 1 : n * factorial(n - 1);
   ...> }
|  created method factorial(int)

jshell> factorial(5)
$2 ==> 120

आयात

jshell> import java.util.*
|  imported java.util.*

jshell> List list = List.of("a", "b", "c")
list ==> [a, b, c]

JShell कमांड्स (स्निपेट्स नहीं)

स्लैश / से शुरू होने वाले कमांड्स JShell मेटा-कमांड्स हैं:

घोषणाअनुमत?नोट
पैकेज घोषणा❌ नहींJShell कोड transient JShell पैकेज में रखा जाता है
public/protected/private (टॉप-लेवल)⚠ अनदेखाचेतावनी के साथ अनदेखा किया जाता है
final/static (टॉप-लेवल)⚠ अनदेखाचेतावनी के साथ अनदेखा किया जाता है
default/synchronized (टॉप-लेवल)❌ नहींत्रुटि, लेकिन नेस्टेड संदर्भ में अनुमत
abstract (टॉप-लेवल)केवल कक्षाओं मेंविधियों/फील्ड्स के लिए नहीं
कमांडविवरण
/listसभी स्निपेट्स सूचीबद्ध करें
/list -allविफल/अस्वीकृत स्निपेट्स सहित
/list -startस्टार्टअप स्निपेट्स सूचीबद्ध करें
/varsचर सूचीबद्ध करें
/methodsविधियां सूचीबद्ध करें
/typesकक्षाएं/इंटरफेस सूचीबद्ध करें
/importsआयात सूचीबद्ध करें
/edit <id|name>बाहरी संपादक में संपादित करें
/drop <id|name>स्निपेट हटाएं
/save file.jshसत्र सहेजें
/open file.jshसत्र लोड करें
/historyकमांड इतिहास
/helpसहायता
/exitJShell से बाहर निकलें
/envवातावरण सेटिंग्स
/resetसत्र रीसेट करें (सभी स्निपेट्स हटाएं)

उन्नत सुविधाएं

ऑटो-कम्प्लीशन

jshell> System.out.  // Tab दबाएं
print(     printf(    println(   

एक्सप्रेशन परिणाम चर ($)

jshell> 2 + 3
$1 ==> 5

jshell> $1 * 10
$2 ==> 50

jshell> String s = "test"
s ==> "test"

jshell> s.toUpperCase()
$4 ==> "TEST"

एक्सेप्शन संचालन

jshell> int x = 10 / 0
|  Exception java.lang.ArithmeticException: / by zero
|        at (#1:1)

jshell> // पिछला स्निपेट अभी भी इतिहास में है लेकिन विफल के रूप में चिह्नित

ओवरलोडिंग और रिप्लेसमेंट

jshell> void print(String s) { System.out.println(s); }
|  created method print(String)

jshell> void print(int i) { System.out.println("Int: " + i); }
|  created method print(int)

jshell> print("hello")
hello

jshell> print(42)
Int: 42

jshell> // समान सिग्नेचर से बदलें
jshell> void print(String s) { System.out.println(">> " + s); }
|  modified method print(String)

सर्वोत्तम अभ्यास

  • एक्सप्लोरेशन के लिए उपयोग करें: API सीखें, रेगेक्स टेस्ट करें, एल्गोरिदम प्रोटोटाइप करें
  • सत्र सहेजें: /save बाद के लिए उपयोगी स्निपेट्स संरक्षित करता है
  • रीसेट सावधानी से: /reset सब कुछ साफ़ करता है
  • बाहरी संपादक: /edit जटिल कक्षाओं के लिए $EDITOR खोलता है
  • सेमीकोलन वैकल्पिक: अभिव्यक्तियों और पूर्ण कथनों के लिए

सीमाएं

  • कोई पैकेज घोषणा नहीं
  • टॉप-लेवल एक्सेस मॉडिफायर्स अनदेखे किए जाते हैं
  • बड़े प्रोजेक्ट्स के लिए IDE प्रतिस्थापन नहीं
  • राज्य मेमोरी में है (डिस्क पर सहेजे बिना खो जाता है)
  • कुछ एडवांस्ड भाषा सुविधाएं प्रतिबंधित हो सकती हैं
  1. - जावा 9 में JShell में बाहरी घोषणाओं के नियम क्या हैं?

    JShell  जावा 9 में पेश किया गया एक कमांड-लाइन टूल है, और यह जावा का पहला आधिकारिक REPL  टूल है जो एक सरल प्रोग्रामिंग वातावरण बनाता है जो उपयोगकर्ता के इनपुट को पढ़ता है, उसका मूल्यांकन करता है, और परिणाम प्रिंट करता है। एक क्लास  या इंटरफेस  के बाहर की घोषणाएं (और स्वयं कक्षाओं

  1. - जावा 9 में JShell में विभिन्न स्टार्टअप स्क्रिप्ट क्या हैं?

    JShell  एक इंटरैक्टिव जावा शेल टूल है जो JShell से कोड निष्पादित करता है और तुरंत आउटपुट प्रदर्शित करता है। JShell REPL (रीड-इवैल्यूएट-प्रिंट-लूप) टूल है जिसे कमांड-लाइन प्रॉम्प्ट से चलाया जा सकता है। JShell में, स्टार्टअप पर एक स्क्रिप्ट लोड करने का विकल्प होता है जिसमें कुछ विशेष पूर्वनि

  1. जावा 9 में JShell में विभिन्न /edit कमांड्स जावा 9 में JShell में विभिन्न /edit कमांड्स

    JShell जावा 9 में पेश किया गया एक कमांड-लाइन टूल है जो main() मेथड के बिना डिक्लेरेशन्स, स्टेटमेंट्स, और एक्सप्रेशन्स का मूल्यांकन करता है। JShell एक टेक्स्ट एडिटर सेट कर सकता है जिसे JShell Edit Pad कहा जाता है, जो कोड को बहुत आसानी से संशोधित करने की अनुमति देता है, और इसे /edit कमांड का उपयोग करक