当前位置:网站首页 > Java教程 > 正文

java自动变量教程



转换原因

Java是强类型语言,数据类型之间不能随意转换,但运算时数据类型不匹配,所以需要转换.

  • 自动类型提升
  • 强制类型转换

2.1、自动类型提升

  1. 概念

范围小的数据类型可以直接转换为范围大的数据类型

  1. 数据类型范围大小排序
  2. 要点
  1. 数据类型兼容 byte short char int long .... 都属于数字类型 都是兼容的
    boolean 是参与类型转换
  2. 小范围的数据类型 转换为 大范围的数据类型
  1. 案例
 

2.2、强制类型转换

  1. 概念

大范围数据类型的变量/常量 赋值 给一个小范围数据类型的变量,需要进行强制转换.

要求: 数据类型之间要兼容

  1. 格式

目标数据类型 变量名 = (目标数据类型)原数据类型变量名/原常量值;

  1. 注意事项
  1. 强制类型转换可能会损失精度,得到错误的数据.
  2. 小数类型强制转换为整数类型时,直接舍去小数部分,只保留整数部分.
  1. 案例
 

概述

  1. 在编译时,整数常量的计算会直接算出结果,并且会自动判断该结果是否在该数据类型取值范围内
  2. 在为 byte short char 类型变量赋值的时候, 字面值类型默认都为int ,按照道理应该需要强制转换 ,但实际不强制转换也能编译通过,这是因为强制转换在编译器编译的时候会自动的加上。
 

表达式: 由 变量 常量 运算符 组成的式子 叫做表达式的值
特点: 每个表达式经过计算最终会得到一个值,这个值叫做表达式的值.
在表达式运算的过程中,也会发生类型的自动提升,这个机制直接决定表达式值的类型

规则:

  1. 当表达式中存在 double ---> 表达式的值类型为 double
  2. 反之 当表达式中存在float --> 表达式值的类型 float
  3. 再反之 当表达式中 存在long ---> 表达式的值类型为 long
  4. 其他情况都为 int

案例

 
 
 

即范围小的数据类型可以直接转换为范围大的数据类型

要点:

大范围数据类型的变量/常量 赋值 给一个小范围数据类型的变量,需要进行强制转换.

要求:

数据类型之间要兼容

注意:

  1. 强制类型转换可能会损失精度,得到错误的数据.
  2. 小数类型强制转换为整数类型时,直接舍去小数部分,只保留整数部分.

在表达式运算的过程中,也会发生类型的自动提升,这个机制直接决定表达式值的类型

规则:

  1. 当表达式中存在 double ---> 表达式的值类型为 double
  2. 反之 当表达式中存在float --> 表达式值的类型 float
  3. 再反之 当表达式中 存在long ---> 表达式的值类型为 long
  4. 其他情况都为 int

一、 在编译时,整数常量赋值给变量的时候,会直接算出结果,并且会自动判断该结果是否在该数据类型取值范围内

注意:

二、 在为 byte short char 类型变量赋值的时候, 字面值类型默认都为int ,按照道理应该需要强制转换
例如:
    byte b = (byte)10;
        // 10 类型是int
     但事实上我们会发现:
         byte b = 10;
     照样能顺利编译运行,
    这是因为 整数类型常量赋值在编译器编译的时候,会自动的加上强制转换 ,从而减少了程序员的工作量( 仅限整数常量赋值,小数赋值、表达式赋值不会 )
         byte a = 123;
         byte b = a;
     能顺利编译运行;

         short a = 123;
         byte b = a;
     不能顺利编译运行;

         float a = 12.3;
     不能顺利编译运行;编译提示:
         需要: float
                         找到: double
                         1 个错误
     这是因为:
1. 小数类型的字面值常量默认类型是 double类型(且编译器不会自动强制转换)
2. float 类型变量在定义的时候,需要在字面值后加 F / f,建议F
3. double 类型的变量在定义的时候,可以在字面值后加 D / d,也可以不加.
4. 浮点型存储的数据是不精确的数据,所以在运算过程中,其结果也是不精确的.采用的科学计数法.

  • 上一篇: linux java 安装教程
  • 下一篇: JAVA教程app离线
  • 版权声明


    相关文章:

  • linux java 安装教程2024-12-07 17:10:03
  • java模式设计教程2024-12-07 17:10:03
  • java保姆级教程2024-12-07 17:10:03
  • 像素鸟java教程2024-12-07 17:10:03
  • java微信开发教程 pdf2024-12-07 17:10:03
  • JAVA教程app离线2024-12-07 17:10:03
  • 教程java 开发实战2024-12-07 17:10:03
  • java进阶视频教程2024-12-07 17:10:03
  • java ee web 教程2024-12-07 17:10:03
  • selenium java教程2024-12-07 17:10:03