NO.A.0007——day02——JDK9的shell、編譯器

一、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類型可能會發生損失。
    }
}
相關文章
相關標籤/搜索