logo

Lees-Eval-Print-lus (REPL) in Java

De Lees-Eval-Print lus of VERV is een shell-interface. Deze interface leest en evalueert elke invoerregel en drukt vervolgens het resultaat af. De Lees-Eval-Print lus helpt ons om te communiceren met de runtime van onze applicatie die zich in een specifieke staat bevindt. De opdrachten worden gelezen en geëvalueerd door de VERV en print het resultaat. Na het afdrukken van het resultaat gaat REPL terug naar het begin om onze volgende invoer te lezen, evalueren en afdrukken.

Lees-Eval-Print-lus (REPL) in Java

Met REPL kunnen we eenvoudig onze Java-code schrijven en testen zonder deze te compileren, en kunnen we de uitvoer rechtstreeks op de console zien.

Java heeft nog geen REPL?

Absoluut, een REPL moet in een gevestigde taal zijn, zoals Java . Maar niet alle talen hebben de REPL, en Java is daar een van. De Java-ontwikkelaars hadden er het meeste behoefte aan. Java heeft al een tijdje zoiets als REPL als Java Beanshell. Maar het project was geen volledig functionele REPL met andere talen. Hiervoor werd in 2016 Java 9 uitgebracht, dat een volledig functionele REPL-omgeving levert.

Waarom is REPL zo nuttig?

Door de REPL te gebruiken, hoeven we onze Java-code niet te compileren of te testen met behulp van de javac-opdracht. Na gebruik van de REPL,

  1. Er is geen editor nodig om het Java-programma te schrijven.
  2. U hoeft het Java-programma niet op te slaan.
  3. Het is niet nodig om een ​​Java-programma te compileren.
  4. U hoeft geen bewerkingen uit te voeren als er een compilatie- of runtime-fout optreedt.
  5. Het is niet nodig om het proces te herhalen.
Lees-Eval-Print-lus (REPL) in Java

We kunnen methoden, klassen en instructies evalueren zonder een klasse te maken. Het programma 'Hello World' kan ook worden geschreven zonder een klasse te maken.

hoop sorteren

Vereisten voor het gebruik van REPL

Er is slechts één vereiste om te gebruiken VERV d.w.z. dat hadden we moeten doen Java 9 of hogere versie in ons systeem. Als Java 9 in ons systeem is geïnstalleerd, zijn we klaar voor gebruik VERV . Om de stroom te controleren versie van Java in uw systeem opent u de opdrachtprompt en typt u de volgende opdracht:

een string splitsen in c++
 java -version 

Lees-Eval-Print-lus (REPL) in Java

REPL gebruiken

Hieronder staan ​​enkele voorbeelden van REPL waarin we de wiskundige uitdrukkingen evalueren, de Fibonacci-reeks berekenen, een dynamische klasse creëren, de geschiedenis kennen en de klasse aanpassen.

Voorbeeld 1: Wiskundige uitdrukkingen evalueren

 jshell> double a = 10; jshell> a= Math.pow(a, 2); jshell> a+20 jshell> /vars jshell> double data = Math.pow(8.3, 5); 

Beschrijving:

In de eerste regel creëren we een variabele 'A' van het type double en stel de beginwaarde ervan in op 10. Daarna vinden we het kwadraat van variabele 'a' en slaan dit op in dezelfde variabele. Daarna voegen we eenvoudigweg 20 toe aan de variabele 'a'. De Jshell plaatst het resultaat in een tijdelijke variabele '$ 3' . Vervolgens voeren we de '/van wie' commando, dat ons alle gemaakte variabelen toont. Ten slotte creëren we een variabele 'gegevens' van het type dubbel en bewaar de 5emacht van cijfer 8.3.

Uitgang:

operators in Python-programmering
Lees-Eval-Print-lus (REPL) in Java

Voorbeeld 2: Fibonacci-reeks berekenen

 jshell> int fibo(int no) (no == 1)) ...> return no;e all possible completions; total possible completions ...> else ...> return fibo(no-1)+fibo(no-2); ...> jshell> /methods jshell> fibo(11) jshell> fibo(12) jshell> int[] arr = { 1,2,3,4,5,6}; jshell> for(int i: arr){ ...> System.out.println(fibo(i)); ...> } 

Beschrijving:

In de eerste zes regels code creëren we een methode voor de Fibonacci-reeks. Daarna gebruiken we de /methoden commando van Jshell, dat ons alle beschikbare methoden laat zien. In de volgende twee regels testen we de fibo() methode door gehele waarden door te geven. We maken een array arr om te bepalen hoeveel termen we de Fibonacci-reeks willen krijgen. Vervolgens herhalen we elke waarde van arr met behulp van voor elke lus. We geven elke waarde van de arr door aan de fibo()-methode en drukken de retourwaarde ervan af.

Uitgang:

Lees-Eval-Print-lus (REPL) in Java

Voorbeeld 3: REPL voor hergebruik

 jshell> int fibo(int no){ ...> return 2; ...> } jshell> for(int i: arr){ ...> System.out.println(fibo(i)); ...> } 

Beschrijving:

In de bovenstaande code maken we een fibo()-methode met hetzelfde retourtype en argument als we eerder hebben gemaakt. Op dit moment overschrijft de Jshell de vorige 'fibo()' methode met de huidige. Vervolgens geven we elke waarde van de arr door aan de functie om er zeker van te zijn dat onze fibo()-methode wordt overschreven of niet.

Uitgang:

array van strings in c-programmering
Lees-Eval-Print-lus (REPL) in Java

Voorbeeld 4: De klasse definiëren

 jshell> class Student{ ...> public String Name; ...> public int age; ...> public String course; ...> public int semester; ...> public Student(String Name, int age, String course, int semester){ ...> this.Name=Name; ...> this.age=age; ...> this.course = course; ...> this.semester=semester; ...> } ...> public void showData(){ ...> System.out.println('Name= '+ Name); ...> System.out.println('Age= '+ age); ...> System.out.println('Course= '+ course); ...> System.out.println('Semester= '+semester); ...> } ...> } 

Beschrijving:

In de bovenstaande code maken we class 'Student' , met naam, leeftijd, cursus en semester. We maken een constructor waarin we de waarden voor deze variabelen instellen. Na de constructor maken we een methode die de waarde van alle variabelen voor elke instantie van de klasse toont.

Uitgang:

Lees-Eval-Print-lus (REPL) in Java

Voorbeeld 5: Een instantie van de klasse maken

 jshell> Student s1 = new Student( 'Shubham Rastogi', 18, 'MCA', 4); jshell> Student s2 = new Student( 'Kartik Rastogi', 23, 'MCA', 3); jshell> /vars jshell> s1.showData(); jshell> s2.showData(); 

Beschrijving:

Java-verklaring

In de bovenstaande code maken we twee instanties van de klasse en geven we de waarde door aan de constructor voor alle klassevariabelen. Vervolgens voeren we de opdracht Jshell uit om te controleren of er s1- en s2-variabelen zijn gemaakt of niet. Ten slotte roepen we de methode showData() aan om gegevens van elke instantie weer te geven.

Uitgang:

Lees-Eval-Print-lus (REPL) in Java