Sök…


Introduktion

JShell är en interaktiv REPL för Java tillagd i JDK 9. Det gör det möjligt för utvecklare att omedelbart utvärdera uttryck, testklasser och experimentera med Java-språket. Tidig tillgång för jdk 9 kan erhållas från: http://jdk.java.net/9/

Syntax

  • $ jshell - Starta JShell REPL
  • jshell> / <command> - Kör ett givet JShell-kommando
  • jshell> / exit - Avsluta JShell
  • jshell> / help - Se en lista med JShell-kommandon
  • jshell> <java_expression> - Utvärdera det givna Java-uttrycket (semikolon valfritt)
  • jshell> / vars ELLER / metoder ELLER / typer - Se en lista över variabler, metoder eller klasser, respektive.
  • jshell> / open <fil> - läs en fil som inmatning till skalet
  • jshell> / edit <identifier> - redigera ett utdrag i setredigeraren
  • jshell> / set editor <command> - ställ in kommandot som ska användas för att redigera utdrag med / edit
  • jshell> / släpp <identifierare> - ta bort ett kodavsnitt
  • jshell> / reset - Återställ JVM och radera alla utdrag

Anmärkningar

JShell kräver Java 9 JDK, som för närvarande (mars 2017) kan laddas ner som snapshots för tidig åtkomst från jdk9.java.net . Om du försöker köra jshell kommandot får du ett fel som börjar med Unable to locate an executable , se till att JAVA_HOME är korrekt inställd.

Standardimport

Följande paket importeras automatiskt när JShell startar:

import java.io.*
import java.math.*
import java.net.*
import java.nio.file.*
import java.util.*
import java.util.concurrent.*
import java.util.function.*
import java.util.prefs.*
import java.util.regex.*
import java.util.stream.*

Gå in och lämna JShell

Starta JShell

Innan du försöker starta JShell, se till att din JAVA_HOME miljövariabel pekar på en JDK 9-installation. Starta JShell genom att köra följande kommando:

$ jshell

Om allt går bra, bör du se en jshell> prompt.

Avsluta JShell

För att lämna JShell, kör följande kommando från JShell-prompten:

jshell> /exit

uttryck

Inom JShell kan du utvärdera Java-uttryck, med eller utan semikolon. Dessa kan variera från grundläggande uttryck och uttalanden till mer komplexa:

jshell> 4+2
jshell> System.out.printf("I am %d years old.\n", 421)

Loops och balsam är också bra:

jshell> for (int i = 0; i<3; i++) {
   ...> System.out.println(i);
   ...> }

Det är viktigt att notera att uttryck inom block måste ha semikolon!

variabler

Du kan deklarera lokala variabler inom JShell:

jshell> String s = "hi"
jshell> int i = s.length

Tänk på att variabler kan omklassificeras med olika typer; detta är helt giltigt i JShell:

jshell> String var = "hi"
jshell> int var = 3

För att se en lista med variabler, ange /vars vid JShell-prompten.

Metoder och klasser

Du kan definiera metoder och klasser inom JShell:

jshell> void speak() {
   ...> System.out.println("hello");
   ...> }

jshell> class MyClass {
   ...> void doNothing() {}
   ...> }

Inga åtkomstmodifierare är nödvändiga. Som med andra block krävs semikolon inuti metodkropparna. Tänk på att det, liksom med variabler, är möjligt att omdefiniera metoder och klasser. För att se en lista med metoder eller klasser, ange /methods eller /types vid JShell-prompten.

Redigera utdrag

Den grundläggande kodenheten som används av JShell är kodstycket eller källposten . Varje gång du förklarar en lokal variabel eller definierar en lokal metod eller klass, skapar du ett kodavsnitt vars namn är variabeln / metoden / klassens identifierare. När som helst kan du redigera ett fragment som du har skapat med kommandot /edit . Låt oss till exempel säga att jag har skapat klassen Foo med en enda metod, bar :

jshell> class Foo {
   ...> void bar() {
   ...> }
   ...> }

Nu vill jag fylla i kroppen på min metod. I stället för att skriva över hela klassen kan jag redigera den:

jshell> /edit Foo

Som standard kommer en swingeditor att dyka upp med de mest grundläggande funktionerna som möjligt. Du kan dock ändra redigeraren som JShell använder:

jshell> /set editor emacs
jshell> /set editor vi
jshell> /set editor nano
jshell> /set editor -default

Observera att om den nya versionen av kodavsnittet innehåller syntaxfel kanske det inte sparas. På samma sätt skapas en kodbit bara om den ursprungliga deklarationen / definitionen är syntaktiskt korrekt; följande fungerar inte:

jshell> String st = String 3
//error omitted
jshell> /edit st
|  No such snippet: st

Snippets kan emellertid sammanställas och därmed redigeras trots vissa kompileringstidsfel, såsom felaktiga anpassade typer - följande verk:

jshell> int i = "hello"
//error omitted
jshell> /edit i

Slutligen kan utdrag tas bort med kommandot /drop :

jshell> int i = 13
jshell> /drop i
jshell> System.out.println(i)
|  Error:
|  cannot find symbol
|    symbol:   variable i
|  System.out.println(i)
|

För att ta bort alla utdrag och därmed återställa JVM: s tillstånd, använd \reset :

jshell> int i = 2

jshell> String s = "hi"

jshell> /reset
|  Resetting state.

jshell> i
|  Error:
|  cannot find symbol
|    symbol:   variable i
|  i
|  ^

jshell> s
|  Error:
|  cannot find symbol
|    symbol:   variable s
|  s
|  ^


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow