Java 数据类型转换

1.概述

Java程序中要求参与计算的数据,必须保证数据类型的一致性,如果不一致将发生类型转换。

2.自动转换

一个int类型变量和一个byte类型变量进行加法运算:

int a=1;
byte b=2;

运算结果将是int类型,这就是数据类型自动转换的现象。
自动(隐式)转换特点:
①将取值范围小的类型自动提升为取值范围大的类型;
②代码不需要进行特殊处理,自动完成。

public static void main(String[] args) {
    int a=1;
    byte b=2;
    //byte c=b+a;//报错
    //int类型和byte类型运算,结果是int类型
    int d=b+a;
    System.out.println(d);
}

3. 强制转换

将1.5赋值到int类型变量会发生什么?产生编译失败,无法赋值。

int a=1.5;//报错

double类型内存8个字节,int类型内存4个字节。1.5是double类型,取值范围大于int。可以理解为double是8升的水壶,int是4升的水壶,不能把大水壶中的水直接放进小水壶中。
只有通过强制类型转换,将double类型强制换成int类型才能赋值。
强制(显式)转换特点:
①将取值范围大的数据类型转换成取值范围小的数据类型;
②代码需要特殊处理,需要手动执行。
转换格式:
数据类型 变量名 = (数据类型) 被转换数据值;
将1.5赋值到int类型,代码修改为:

//double类型数据强制转换成int类型,直接去掉小数点。
int i = (int)1.5;

同理,一个short类型和1相加,若要将值赋值给short类型的变量,需要强制转换。

short a=2;
short b = (short) a+1;

注意事项:
①强制类型转换一般不推荐使用,可能发生精度损失、数据溢出;
数据溢出:

int a = (int) 6000000000L;//long强制转换成为int类型
System.out.println(a);//输出1705032704,数据溢出

精度损失:

int b = (int) 3.5;//double==>int,强制类型转换
System.out.println(b);//输出3,不是四舍五入,所有的小数位都会被舍弃。

②byte/short/char三种数据类型都能发生数学运算

char char1=’A’;//字符变量
System.out.println(char1+1);//输出66,大写字母A被当成65处理。

③ byte/short/char三种数据类型都能发生数学运算,在运算时,都会首先被提升为int类型,然后计算,计算结果为int数据类型

byte a = 10;
byte b = 20;
byte result = a + b;//编译报错,会提升成int数据类型计算,计算结果为int数据类型。
System.out.println(result);

④boolean类型不能发生数据类型转换。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Java的类型转换可分为基本类型和引用类型的数据转换。 基本类型的转换 类型转换主要在赋值、方法调用、算术运算三种...
    LaobingFung阅读 917评论 0 0
  • 第一类:逻辑型boolean 第二类:文本型char 第三类:整数型(byte、short、int、long) c...
    Jasonme阅读 1,228评论 0 4
  • 隐式转换(自动转换) 将int类型的变量i赋给double类型的变量d 分析:变量i发生隐式转换,得到小数1.0,...
    测试老杨阅读 913评论 0 1
  • 我们都有过这样的经历,有一段时间,我们情绪很低落,对什么也不感兴趣,更别说享受生活的乐趣了。这是否是心理学上说的“...
    媚影心语阅读 296评论 4 1

友情链接更多精彩内容