一、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类型可能会发生损失。 } }