清淨
  • Java

    • Java 基础
  • 框架

    • Flyway
    • MapStruct
    • Spring Cloud
  • 中间件

    • Elasticsearch
    • Redis
    • RabbitMQ
    • Kafka
  • 三剑客

    • HTML
    • CSS
    • JavaScript
  • 进阶

    • jQuery
    • ECMAScript6
    • TypeScript
  • Vue

    • Vue2
    • Vue3
    • VuePress
  • Linux
  • Jenkins
  • Maven
  • MySQL
  • 插件工具
  • 代码集成
  • 其它

    • 数据结构与算法
    • 计算机网络
    • 操作系统
    • 设计模式
迁移日志
订阅号
微信订阅号
微信订阅号
GitHub
  • Java

    • Java 基础
  • 框架

    • Flyway
    • MapStruct
    • Spring Cloud
  • 中间件

    • Elasticsearch
    • Redis
    • RabbitMQ
    • Kafka
  • 三剑客

    • HTML
    • CSS
    • JavaScript
  • 进阶

    • jQuery
    • ECMAScript6
    • TypeScript
  • Vue

    • Vue2
    • Vue3
    • VuePress
  • Linux
  • Jenkins
  • Maven
  • MySQL
  • 插件工具
  • 代码集成
  • 其它

    • 数据结构与算法
    • 计算机网络
    • 操作系统
    • 设计模式
迁移日志
订阅号
微信订阅号
微信订阅号
GitHub
  • Java 基础

    • 简介
    • 第一个 Java 代码
    • 数据类型
    • 变量
    • 进制
    • 导包
    • 输入
    • 数据类型转换
    • 运算符
    • 随机数
    • 流程控制
    • 访问修饰符
    • 面向对象
    • 重载与重写
    • 程序执行流程
    • 方法参数的值传递
    • 多线程
    • Java 常用类
    • 枚举
    • 注解 Annotation
    • 集合
    • 泛型
    • IO
    • 网络编程
    • 反射
    • lambda
    • 类加载
    • 正则表达式
    • 字符集

数据类型转换

请结合数据类型查看本节。下面提到的范围指的是数据实际能够表示的范围,并不是值它们占用字节的大小。

自动转换

范围较小的可以自动转为范围较大的类型。

// int 比 float 小,自动转换
float a = 10;  
// 自动转换
double b = 3.16f;

范围较小的类型遇到范围较大的可以自动转为范围较大的类型。

// 报错。3.1 是小数,小数默认是 double 类型,而 10 默认是 int 类型,则 int + double 最后是 double 类型。
int a = 10 + 3.1;
// 任何类型遇到 String,则自动转为 String
System.out.println("" + 10 + 1); // 101
System.out.println(10 + "" + 1); // 101
System.out.println(10 + 1 + ""); // 11

提示

为了方便后续理解,这里,我们暂时理解为 String 是所有类型中范围最大的。

double a = 6 / 5; // 1.0
// 6 和 5 都是整数,所以 6 和 5 之间不存在强制转换,所得的结果还是整数
int b = 6 / 5; // 1

// 5.0 默认是 double,所以 6 会转换为 double,那么结果就是 double
double c = 6 / 5.0; // 1.2
// char 小于 int,所以会将 A 转换成 ASCII 码。
System.out.println('A' + 0);  // 65,即 A 的 ASCII 码
System.out.println('代' + 0); // 输出 '代' 的 ASCII 码

提示

  • byte、short、char 之间进行运算时,结果为 int 类型。
  • byte、short、char 可以接收两个字面量整数计算后的结果。例如 byte b = 1 + 2;、short s = 1 + 2;、char c = 1 + 2;(但是可能造成溢出)。

强制转换

要将范围大的转换为范围较小的,需要我们强制转换。基本语法为:范围小 = (数据类型)范围大;

double a = 1.3;
int b = (int)a;
System.out.println(b); // 1
System.out.println((byte)128); // -128
想要编辑此页?
上次更新: 2023/5/29 18:50
贡献者: djf, Junfeng Dai
←输入运算符→
[ 纸上得来终觉浅绝知此事要躬行 ]
Copyright © 2021-present Junfeng Dai
蜀ICP备2021009537号