第八节 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值