• 重温一下基本数据类型以及自动提升数据类型的问题


    上面的图表示出了数据类型的分类, 加上布尔型(bealoon)分为四类八种数据类型, 构成了java的基本数据类型, 这几种数据的之间的联系也是想图中的箭头一样, 数据之间有一个自动提升数据类型的机制, 在java编程中需要随时注意.

    下面看一组简单的代码实例:

            byte a = 127;
            short b = 45;
            char e = 'a';
            float f = 21.23f;
            double g = 0.456;
            String str = "xuesheng";
            
            String x = str+e+a;
            String z = e+a+str;
            /*对于第一个表达式xuesheng+'a'+127,先进行"xuesheng" + 'a'的运算,将把'a'转换成字符串, 将拼接成字符串xueshenga,接着进行"xueshenga" + 127的运算,这也是     一个字符串连接运算, 得到结果是xueshenga127。对于第二个表达式,先进行'a' + 127加法运算, 其中'a'自动提升到int型,变成a对应的ASCII值:97,从97 + 127将得到224     , 然后进行224 + "xuesheng",224会自动转换成字符串,将变成两个字符串的连接运算, 从而得到224xuesheng。*/
            
            System.out.println("xuesheng+'a'+127的结果为: "+x+"
    ");
            System.out.println("'a'+127+xuesheng的结果为: "+z+"
    ");
            
            //当byte型和short型还有char型运算的时候, 数据类型会自动提升为int型
            //char型数据的转换根据字符在ASCII码表的位置转换成数字
            int in = a + e;     //byte型跟字符型的运算自动提升为int型
            System.out.println("in的值为: "+in+"
    ");
            
            int in1 = a + b;   //byte型跟short型运算自动提升为int型  
            System.out.println("in1的值为: "+in1+"
    ");
            
            byte by = a += 1;    
            //当使用+=运算符进行运算时不会自动提升数据类型
            //原因是由于 += 是java语言规定的运算符, java编译器会对它进行特殊处理, 因此可以正确编译
            System.out.println("by的值为: "+by+"
    ");
            
            double m = f+g;
            //float型和double型之间的运算结果为double型
            System.out.println("m的值为: "+m);

    下表列出的内容是大部分的数据类型, 其实数据类型并不只局限于那四类八种, 还有很多, 我们所了解的function函数, 包括还有很多方法都可以看成是一种数据, 然后可以对其进行操作, 学的还是太少了

    Byte(字节型) 0 - 255
    Boolean(布尔型/逻辑型) True 或 False
    Integer(整数型) -32,768 ~ 32767
    Long(长整形)
    -2,147,483,648 ~ 2,147,483,647
    Single
    负数范围:
    -3.402823E38 ~ -1.401298E-45
    正数范围:
    1.401298E-45 ~ 3.402823E38
    Double
    负数范围:
    -1.797,693,134,862,32E308 ~
    -4.940,656,458,412,47E-324
    正数范围:
    4.940,656,458,412,47E-324 ~
    1.797,693,134,862,32E308
    Currency
    (变比整形 / 货币类型)
    -922,337,203,685,477.5808~
    922,337,203,685,477.5807
    Decimal(十进制型)
    没有小数点时:
    +/-79,228,162,514,264,337,593,543,950,335
    有小数点时:
    +/-7.922,816,251,426,433,759,354,395,033,5
    最小的非零值:
    +/-0.000,000,000,000,000,000,000,000,000,1
    Date(时间日期型) 100年1月1日~9999年12月31日
    Object(对象型) 任何 Object 引用
    String (变长) 长度从 0 到 大约 20 亿
    String (定长) 长度从 1 到大约 65,400
    Variant (数字) 任何数字值,最大可达 Double 的范围
    Variant (字符) 与字符串长度,变长 String 有相同的范围
  • 相关阅读:
    GET请求和POST请求的本质区别
    go切片的Add与Del
    滚动到指定位置的问题
    promise---批量调用接口,等待所有的请求发完
    this argument
    html2canvas截图 下载图片
    数组合并去重
    vue项目踩坑
    关于java中的栈和堆
    用python实现一个最简单版本的mysql数据库连接池
  • 原文地址:https://www.cnblogs.com/wgbs25673578/p/5043251.html
Copyright © 2020-2023  润新知