一、JShell腳本工具是JDK9的新特徵:
何時會用到JShell工具呢;當咱們編寫代碼很是少的時候,而又不肯意編寫類,main方法時;也不肯意去編譯和運行,這個時候就用到JShell工具。java
public class HelloWorld{ public static void main(String[] args){ System.out.print("Hello, World!"); } }
二、如何啓動JShellshell
// 直接啓動JShell C:\Users\Administrator>jshell jshell> System.out.println("Hello, World!"); Hello, World! jshell> int a = 10; a ==> 10 jshell> int b = 20 b ==> 20 jshell> int result = a * b; result ==> 200 jshell System.out.println("結果是:" + result); 結果是:200 jshell> /exit 再見
二、編譯器:
代碼庫:Demo12Notice.javaide
/* 對於byte/short/char三種類型來講,若是右側賦值的數值沒有超過範圍, 那麼javac編譯器將會自動隱含地爲咱們補上一個(byte)(short)(char)。 1. 若是沒有超過左側的範圍,編譯器補上強轉。 2. 若是右側超過了左側範圍,那麼直接編譯器報錯。 */ public class Demo12Notice { public static void main(String[] args) { // 右側確實是一個int數字,可是沒有超過左側的範圍,就是正確的。 // int --> byte,不是自動類型轉換 byte num1 = /*(byte)*/ 30; // 右側沒有超過左側的範圍 System.out.println(num1); // 30 // byte num2 = 128; // 右側超過了左側的範圍 // int --> char,沒有超過範圍 // 編譯器將會自動補上一個隱含的(char) char zifu = /*(char)*/ 65; System.out.println(zifu); // A } }
代碼庫:Demo13Notice.java工具
/* 在給變量進行賦值的時候,若是右側的表達式當中全都是常量,沒有任何變量, 那麼編譯器javac將會直接將若干個常量表達式計算獲得結果。 short result = 5 + 8; // 等號右邊全都是常量,沒有任何變量參與運算 編譯以後,獲得的.class字節碼文件當中至關於【直接就是】: short result = 13; 右側的常量結果數值,沒有超過左側範圍,因此正確。 這稱爲「編譯器的常量優化」。 可是注意:一旦表達式當中有變量參與,那麼就不能進行這種優化了。 */ public class Demo13Notice { public static void main(String[] args) { short num1 = 10; // 正確寫法,右側沒有超過左側的範圍, short a = 5; short b = 8; // short + short --> int + int --> int // short result = a + b; // 錯誤寫法!左側須要是int類型 // 右側不用變量,而是採用常量,並且只有兩個常量,沒有別人 short result = 5 + 8; System.out.println(result); short result2 = 5 + a + 8; // 18 從int裝換爲short類型可能會發生損失。 } }