前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java基础知识-基本数据类型相互转型

Java基础知识-基本数据类型相互转型

作者头像
林老师带你学编程
发布2018-01-04 10:26:37
6060
发布2018-01-04 10:26:37
举报
文章被收录于专栏:强仔仔强仔仔

这是我第一次系统性的总结java这门语言的基础知识用法,因本人经验有限,所以在总结的过程中如果有错误或者有歧义等等之类的问题,都可以联系我QQ:208017534 不甚感激.

今天给大家介绍的是java中基本数据类型是如何进行相互转换的。在介绍基本数据类型转换之前,先给大家介绍一下什么叫做基本数据类型:

java中数据类型分为两种:1.基本数据类型、2.引用数据类型

基本数据类型大致可以分为4种八类 4种:整型、浮点型、字符型和布尔型 八类:整型(byte、short、int、long)默认类型为int类型、浮点型(float、double) 默认类型为double类型、字符型(char)、布尔型(boolean)

基本数据类型各个类型的取值范围(其中大小指在存储过程中需要占的二进制位)

引用数据类型:引用数据类型包括数组、类和接口

这一章节先不讨论什么是数组,类,接口,封装等等之类的,我会在后面几个章节中着重介绍的。

1.首先先来介绍一下byte的转型方法,下面看代码:

代码语言:javascript
复制
        //byte注意事项 byte字段在进行运算的时候发生转型,
        // 这个时候不能再将byte运算结果直接赋值给byte字段了,需要强制类型转换才可以。
        byte b1=1;
        byte b2=2;
//        byte b3=b1+b2;//编译不通过
        byte b4=(byte)(b1+b2);
        int i1=10;
//        byte b5=i1;//编译不通过
        byte b6=20;
        int i2=b6;
        System.out.println("i2:"+i2);

2.short类型的转换方法和byte类似,如果直接在short类型上进行相互运算就会发生编译不通过的情形了。下面看具体例子:

代码语言:javascript
复制
       //short注意事项 short字段在进行运算的时候发生转型,
        // 这个时候不能再将short运算结果直接赋值给short字段了,需要强制类型转换才可以。
        short s1=1;
        short s2=2;
//        short s3=s1+s2;//编译不通过
        short s4=(short)(s1+s2);

3.long类型的转换就完全可以互相运算了,下面看具体例子:

代码语言:javascript
复制
        long l1=1;
        long l2=2;
        long l3=l1+l2;
        long l4=1+2;

4.并不是所有的类型都可以互相转换的,有些类型差别太大转换会编译不通过或者运行出错的。下面看看具体案例:

代码语言:javascript
复制
        //范围大的转为范围小的可以不需要强制类型转换就可以完成,
        //反之范围小的转换为范围大,因为会发生精度损失,所以必须要强制类型转换才可以,否则编译不通过。
        //但是类型之间转换也是要看字段属性是否相同,例如:int和double就可以进行互相转换,可是int和String就不可以了。
        String str="str";
//        int i=(int)str;//编译不通过

        //这里有个特例就是Object的强制类型转换,因为Object是一个高度抽象的类型,所以可以强制转换为各种类型,
        //编译都可以通过的,可是如果类型不符合,在运行的时候会发生错误。
        Object o="str";
        int i=(int)o;

5.数字字符串又该如何转型为相应的数据类型呢,下面看具体案例的介绍:

代码语言:javascript
复制
        //如果字符串是数字类型的数据,又该怎么进行转换呢?
        int i=Integer.valueOf("1");
        float f=Float.valueOf("1.1");
        double d=Double.valueOf("1.23");
        //如果数字类型想转为字符串,又改如何进行转换呢?
        String strI=String.valueOf(1);
        String strf=String.valueOf(1.0f);
        String strd=String.valueOf(1.22d);
        //还有一种更加坚简单的方法是
        String strIi=1+"";
        String strff=1.0f+"";
        String strDd=1.23d+"";

6.类型转换过程中精度损失具体是损失哪些?下面看具体案例介绍:

代码语言:javascript
复制
        //强制类型转换的过程中,精度是如何进行损失的?小的数据量类型往大的转型又是如何扩大精度的呀?
        int i = 1;
        float f1 = 1.3f;
        float f2 = 1.7f;

        double d1 = 1.4d;
        double d2 = 1.8d;
        double d3 = 2.0;

        int i1 = (int) f1;
        int i2 = (int) f2;

        int i3 = (int) d1;
        int i4 = (int) d2;
        int i5 = (int) d3;

        float ff1 = i;
        float ff2 = (float) d1;
        double dd1 = i;
        double dd2 = f1;

        System.out.println("i1:" + i1);
        System.out.println("i2:" + i2);
        System.out.println("i3:" + i3);
        System.out.println("i4:" + i4);
        System.out.println("i4:" + i4);
        System.out.println("ff1:" + ff1);
        System.out.println("ff2:" + ff2);
        System.out.println("dd1:" + dd1);
        System.out.println("dd2:" + dd2);

        //从结果可以看出在转型的过程中如果是int类型的话,在转化为float或者double都是变成(数值.0)的存在。
        //如果是float或者double转换为int的时候都是浮点型前面的整数部分给int,浮点型小树后面的精度损失掉了。
        //如果是float和double进行互相转换的话就会发生很奇怪的事情,就是例如1.3f变成1.2999999523162842d了
        //所有最好不要再float和double类型上面直接进行互相转换,如果想要原值转换最好是利用字符串来进行转换。
        //例如下面将给出的这个例子:

        float f=1.23f;
        double dd11,dd22;
        String strF=f+"";
        dd11=Double.valueOf(strF);
        dd22=f;
        System.out.println("f:"+f);
        System.out.println("dd11:"+dd11);
        System.out.println("dd22:"+dd22);

7.字符和其他数据类型转换过程是如何进行的呢?下面看看具体案例介绍:

代码语言:javascript
复制
        //类型转换时有字符型参与运算
//        当有字符参与运算时,系统首先回去找对应的ASCII码值,然后在参与运算   如  ‘a’ + 6 = 103
//        注意:int类型是可以赋值给char类型的   如 char  a  = (char) 97;
        char c=(char)97;
        int i='a';
        System.out.println("c:"+c);
        System.out.println("i"+i);
ASCII码表:

今天关于基本类型的转换问题就介绍到这里,因为本人经验有限,没办法介绍的很完全,所以只能挑我日常经常使用的部分给大家做介绍。如果看完这章还是疑问很大的或者不清楚的,都可以过来联系我QQ:208017534 

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年11月11日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 这是我第一次系统性的总结java这门语言的基础知识用法,因本人经验有限,所以在总结的过程中如果有错误或者有歧义等等之类的问题,都可以联系我QQ:208017534 不甚感激.
    • ASCII码表:
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档