注册 登录
Java基础教程

第一章: 开启Java学习之旅

第二章: 掌握计算机基础知识

第三章: 掌握命令行基础知识

第四章: 我的第一个Java程序

第五章: Java编程必备基础

第六章: Java编程的核心:控制结构

第七章: Java面向对象基础

第八章: Java面向对象进阶

第九章: Java字符串类型

第十章: Java数组与数据结构

第十一章: Java高级数据结构

第十二章: Java并发编程基础

首页 > Java基础教程 > 第五章: Java编程必备基础 > 5.6节: 数据类型的转换

5.6节: 数据类型的转换

薯条老师 2021-11-12 13:27:44 201010 0

编辑 收藏

广州番禺Python, Java小班周末班培训

第四期线下Java, Python小班周末班已经开课了,培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析, Java中高级工程师培训。授课详情请点击:http://chipscoco.com/?cate=6

5.6.1 理解数据类型转换

数据类型转换,顾名思义,是从一种数据类型转换为另一种数据类型。常说的“取整”,就暗含类型转换的意思,即,将浮点小数转换为整数。我们在日常生活中,也常于各类角色之间进行转换,在企业中是老板或职员,在家中是丈夫或妻子,对陌生人彬彬有礼,对相熟的人则暴露各种坏脾气,这也是一种类型转换。

1636695133(1).jpg 

承上,类型转换无时不存,无处不在。

5.6.2 显式类型转换

从字面意思来进行理解,显式类型转换,是显式地从一种数据类型转换为另一种数据类型。在Java中通过(DataType) 的语法来实现显式类型转换, DataType表示数据类型。Java中的显式类型转换只能用于相互兼容的数据类型。

代码实例-将小数取整:

// 据说单身狗荷包里永远会有11块1毛1分钱, 还经常舍不得花
double money = 11.11;
int balance = (int) money;

代码讲解:

(1) 在代码实例中定义了一个浮点类型的变量money,然后通过(int)money的形式将浮点类型显式地转换为整型。

读者需注意,将范围大的数据类型向下转换为范围小的数据类型时,可能发生数据截断。请读者看以下代码实例:

public class HelloJava {
    public  static void main(String[] args) {
        long balance = 1314156;
        /*
        (1) byte类型只有一个字节大小,能保存的最大值为127
        (2) balance的值远大于127,将其赋值给变量money时,发生了数据截断
         */
        byte money = (byte)balance;
        // 程序输出的值为108,108实质是1314156与256求余后的余数
        System.out.println(money);
    }
}

我们在开发程序的过程中,应审慎地处理数据类型的向下转换,不然程序会出现意想不到的bug。

代码实例-将整数变浮点数:

// 只要你能攒齐1314颗龙珠,就能觅得真爱,太难了
int true_love = 1314;
// 真爱容不得一丝瑕疵?
double  flawed_love = (double) true_love;

代码讲解:

 (1) 在代码实例中定义了一个整型变量true_love,然后通过(double)true_love的形式将整型值显式地转换为浮点值。

布尔类型不与整型,浮点型,字符类型兼容,在使用布尔值来转换为其它类型,或将其它类型转换为布尔类型时会报错:

public class HelloJava {
    public  static void main(String[] args) {
        int money = 0;
        boolean is_happy = (boolean) money;
    }
}

在IDEA中执行以上程序时,会报出类型不兼容的错误提示。

5.6.3 隐式类型转换

在使用Java中的基本数据类型进行运算时,范围小的数据类型会自动提升为范围大的数据类型。整型的范围按从小到大排序为:

char(1个字节)

byte(1个字节)

short(2个字节)

int(4个字节)

long(8个字节)

char类型实质是一个字节的整型,用来保存字符编码,在程序中输出整型char值时,实质输出的时该字符编码所对应的字符。

代码实例-为char类型赋整型值并输出:

public class HelloJava {
    public  static void main(String[] args) {
        // 可直接将字符的编码赋值给char类型,字符a的十进制编码是97
        char ch = 97;
        // 输出变量ch的值时,输出的为字符a
        System.out.println(ch);
    }
}

代码讲解:

(1) 将整型值赋值给字符型变量,Java会将整型值解释为字符的编码

(2) 读者可在网上查找ASCII编码,在该码表中可查询字符a以及其它ascii字符的编码

浮点型按从小到大排序为:

float(4个字节)

double(8个字节)

现在来看一个简单的隐式类型转换例子:

public class HelloJava {
    public  static void main(String[] args) {
        byte money = 10;
        // java会自动将money保存的整型值10提升为长整型,然后赋值给变量balance
        long balance = money;
        System.out.println("balance:"+balance);
    }
}

5.6.4 课后习题

(1) 以生活中的例子来谈谈你对数据类型转换的理解

(2) 编写一个简单的程序,将长整型显式转换为字符类型。在实际开发中,这种大范围向小范围的类型转换会出现什么样的问题?

(3) 以下代码会发生隐式类型转换吗?简述你的理由。

int money = 0;
float balance = money;

5.6.5 高薪就业班


欢迎 发表评论:

请登录

忘记密码我要注册

注册账号

已有账号?请登录