Консольная утилита JShell предоставляет функциональность "read-evaluate-print loop" или REPL (цикл "чтение-вычисление-вывод"). В этой программе вы вводите выражение языка Java, и JShell оценивает и выполняет это выражение, выводит результат выполнения и ждет следующего ввода. JShell предоставляет отличный способ экспериментировать — гораздо быстрее, чем писать полноценную программу.
Для начала работы с JShell введем команды "jshell" в консоли/командной строке:
eugene@Eugene:~$ jshell | Welcome to JShell -- Version 22.0.1 | For an introduction type: /help intro jshell>
Далее введем простейшее выражение на языке Java - 2 + 6 (то есть попробуем найти сумму двух чисел):
jshell> 2 + 6 $1 ==> 8 jshell>
JShell возвращает результат — в данном случае число 8 - сумму чисел 2 и 6
$1 ==> 8
Значение $1 в выводе означает, что результат (число 8) доступен для дальнейших вычислений через плейсхолдер $1. Например, далее введем выражение 5 * $1:
jshell> 5 * $1 $2 ==> 40 jshell>
Фактически выражение 5 * $1 означает выполнение выражения 5 * 8, поэтому в итоге мы получим число 40б и это число сможем использовать через плейсхолдер $2
Если какое-то значение используется множество раз, то ей можно дать более запоминающееся имя. Например:
jshell> var sum = 2 + 5 sum ==> 7 jshell>
Здесь с помощью ключевого слова var определяем переменную "sum", которая будет хранить сумму чисел 2 и 5. И далее мы можем использовать эту переменную:
jshell> 4 * sum $4 ==> 28 jshell>
Еще одна полезная функция — автодополнение с помощью клавиши Tab. Например, введем строку "System." (с точкой в конце) и нажмем клавишу Tab. Из-за большого количества автодополнений нам будет предложено нажать клавишу Tab ещё раз. И мы получим список всех методов, которые можно вызвать с помощью класса System:
jshell> System. Logger LoggerFinder arraycopy( class clearProperty( console() currentTimeMillis() err exit( gc() getLogger( getProperties() getProperty( getSecurityManager() getenv( identityHashCode( in inheritedChannel() lineSeparator() load( loadLibrary( mapLibraryName( nanoTime() out runFinalization() setErr( setIn( setOut( setProperties( setProperty( setSecurityManager( jshell> System.
Далее введем "System.out." и опять же нажмем на Tab:
jshell> System.out. append( charset() checkError() close() equals( flush() format( getClass() hashCode() notify() notifyAll() print( printf( println( toString() wait( write( writeBytes( jshell> System.out.
Мы видим, какие методы есть у объекта System.out. Допустим, нам нужно вывести строку на консоль. Для этого нам нужен один из методов - printf, print или println. Поэтому
введем "System.out.p - с буквой "p" на конце и также нажмем на Tab
jshell> System.out.p print( printf( println( jshell> System.out.print
Программа сразу подставляет общую начальную часть - "print", и нам далее прощее допечатать необходимый код:
jshell> System.out.println("Hello METANIT.COM")
Hello METANIT.COM
jshell>
Для выхода из программы необходимо ввести команду "/exit":
jshell> /exit | Goodbye eugene@Eugene:~$