JDK9的新特性
前言
初学java语言的小白,日常记录个人所学、所思、所感、所获。
请java语言行业的前辈们多多指教, 目前从事汽车制造行业。
属于零基础自学,愿未来自己感谢今天的选择和努力。加油!
一、JShell简单使用
2021、8、19更新
笔记:
什么是jshell?
一个轻量级的小工具,适用于简单的开发。
cmd内操作
进入:jshell
退出:/exit
1.脚本:就是照本宣科一步一步走。
以下案例为例,就是脚本
1.CMD输入jshell,进入jshell程序包
实用案例1:直接在cmd输入System.out.println(“HelloWorld”),就可以打印输出HelloWorld。
实用案例2:直接在cmd输入
int a +10;
int b=20;
int result=a+b;//30
System.out.println(“结果是”+result);
打印输出:结果是30
System.out.println(“HelloWorld”),就可以打印输出HelloWorld。
二、编译器两点优化
2021、8、19更新
笔记:
1.注意字符类型在打印输出的时候的自动转换。
2.
short a = 4;
short b = 5;
//short+short–>int+int–>int
//short result = a+b;//错误写法,左侧需要int类型
//.byte、short、char这三种类型发生***数学运算时***,系统会自动提升为int类型。
int result = a+b;//正确写法
为什么要定义为int result才是正确写法?
3.【注意二者的区别】
a.对于byte/short/char三种类型来说,如果右侧的***变量赋值***的数值没有超过左侧数据类型的范围,那么java编译器将会自动隐含的为我们补上一个(byte)(short)(char)
b.byte、short、char这三种类型发生***数学运算时***,系统会自动提升为int类型。
/*
A.对于byte/short/char三种类型来说,如果右侧的***变量赋值***的数值没有超过左侧数据类型的范围
那么java编译器将会自动隐含的为我们补上一个(byte)(short)(char)
1.如果右侧数值没有超过左侧数据类型的范围,编译器补上一个强转。
2.如果右侧数值超过左侧数据类型范围值,那么直接编译器报错。
B.【编译器的常量优化】在交给变量进行赋值的时候,如果右侧的表达式全是常量,没有任何变量,
那么编译器javac将会直接将若干个常量表达式计算得到结果。
short result1 = 5+8;//等号右边全是常量,没有任何变量参与运算
编译之后,得到的.class字节码文件当中相当于【直接就是】;
short result1 = 13;
右侧的数值没有超过左侧数据类型范围
这被称之为"编译器的常量优化"。
*/
public class Demo02Notice {
public static void main(String[] args) {
//定义一个变量
//数据类型 变量名称 =数据值;
//1.如果右侧数值没有超过左侧数据类型的范围,编译器补上一个强转。
//以下代码实际为 byte num1 = (byte)30;
byte num1 = 30;//右侧数据值没有超过左侧范围
System.out.println(num1);//30
//2.如果右侧数值超过左侧数据类型范围值,那么直接编译器报错。
//byte num2 = 128;//右侧数据范围值超过左侧范围//报错
//int-->char没有超过范围
// 编译器将会自动补上一个隐含的(char)
char zifu = /*(char)*/65;
System.out.println(zifu);//A 思考为什么输入的是65,打印输出就变成了A啊?
//因为是char类型,65对照ASCII编码表,自动转换为字符类型。
short num2 = 10;//正确写法,右侧数值没有超出左侧范围。
short a = 4;
short b = 5;
//short+short-->int+int-->int
//short result = a+b;//错误写法,左侧需要int类型
int result = a+b;//正确写法
System.out.println(result);//9
System.out.println("======");
//右侧不用变量,而是采用常量,而且只有两个常量,没有别的。
// short result1 = 5+8;//等号右边全是常量,没有任何变量参与运算
// 编译之后,得到的.class字节码文件当中相当于【直接就是】;
//short result1 = 13;
//右侧的数值没有超过左侧数据类型范围
//这被称之为"编译器的常量优化"。
//但是注意:一旦表达式当中也有变量参与,那么就不能进行这种优化
short result1 = 5+8;
System.out.println(result1);//11
//short result2=5+a+8;//错误写法,右侧有变量参与
}
}
心得体会
这一章节内容作为一个了解,不需要记忆,但是要了解为什么char zifu1=65,打印输出结果为A。加油!明天会更好2021、8、19