【小白看的Java教程】第七章,连词成句:表达式

表达式(掌握)

表达式(expression),是由数字、运算符、括号、常量、变量等以能求得结果的组合。

image.png

表达式举例(下列a、b、x、y、z都表示变量)。

a + b

n 3.14 + a

n (x + y) * z + 100

基本数据类型转换(掌握)

在8大基本数据类型中,boolean不属于数值类型,所以不参与转换,其他类型的转换规则如下图。一般的,byte、short、char三种类型相互之间不参与转换操作。

image.png

按照转换方式,有两种(注意:boolean类型不参与类型转换):

+ 自动类型转换:范围小的数据类型直接转换成范围大的数据类型,小->大。

+ 强制类型转换:范围大的数据类型强制转换成范围小的数据类型,大->小。

image.png

问题:三个大小不同容器,能相互把盛装的水倒给对方吗?

float4个字节为什么比long8个字节大?(科普了解)

--->因为底层的实现方式不同

浮点数的32位并不是简单直接表示大小,而是按照一定标准分配的。

第1位,符号位,即S

接下来8位,指数域,即E。

剩下23位,小数域,即M,取值范围为[1 ,2 ) 或[0 , 1)

然后按照公式:V = (-1) ^ s * M * 2 ^ E  

也就是说浮点数在内存中的32位不是简单地转换为十进制,而是通过公式来计算而来,通过这个公式虽然,只有4个字节,但浮点数最大值要比长整型的范围要大。

自动类型转换(掌握)

自动类型转换,也称为“隐式类型转换,就是把范围小的数据类型直接转换成范围大的数据类型。

转换规则:byte、short、char—>int—>long—>float—>double

注意事项:byte、short、char相互之间不转换,他们参与运算首先转换为int类型

语法格式:范围大的数据类型 变量 = 范围小的数据类型值;

语法举例:

public class TypeConvertDemo1{

  public static void main(String[] args) {

    //把int类型变量转为long类型

    long longNumber = 17;//整数默认为int类型

    //把long类型转换为float类型

    float f1 = longNumber;

    //把float类型转换为double类型

    double d = f1;

    //定义两个int类型的变量

    int a1 = 2;

    int b1 = 3;

    int c1 = a1 + b1;

    //定义一个byte类型,一个int类型

    byte b2 = 2;

    int c2 = 3;

    System.out.println(b2 + c2);

    //byte、short、char类型参与运算时把自己提升为int类型

    //byte d1 = b2 + c2;//编译报错

    //int d2 = b2 + c2;//编译报错

    int d3 = b2 + c2;//编译通过

  }

}
自动类型提升(掌握)

当一个算术表达式中,包含多个基本数据类型的常量或变量(boolean除外)时,整个算术表达式的结果类型将在出现自动提升,其规则是:

+ 所有的byte、short、char类型被自动提升到int类型,再参与运算

+ 整个表达式的最终结果类型,被提升到表达式中类型最高的类型

System.out.println('a' + 1);//98

byte b = 22;

b = b + 11;//编译出错,此时结果类型应该是int

double d1 = 123 + 1.1F + 3.14 + 99L ;

image.png

结论:算数表达式的结果就是其中范围最大的数据类型。

强制类型转换(掌握)

强制类型转换,也称为“显式类型转换”,就是把范围大的数据类型强制转换成范围小的数据类型。

语法格式:范围小的数据类型  变量 = 范围小的数据类型范围大的数据类型值;

注意:不建议,有可能损失精度

public class TypeConvertDemo2{

  public static void main(String[] args) {

    int a = 2;

    byte b = 3;

    //自动类型转换

    int c = a + b;

    //强制类型转换

    byte d = (byte) (a + b);

    //把double转换为int类型

    int i = (int)3.14;

    System.out.println(i);//3

  }

}

若要获得最好的学习效果,需要配合对应教学视频一起学习。需要完整教学视频,请参看https://ke.qq.com/course/272077

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值