zoukankan      html  css  js  c++  java
  • JAVA数据类型能串门不?

    JAVA这几种数据类型,能否串门?入了人家门,就得按人家规矩来,入乡随俗哦,难免发生有自觉的 还有不情愿被动的。

    自动类型转换

    自动类型转换:容量小的数据类型可以自动转换为容量大的数据类型。在图中,黑色的实线表示无数据丢失的自动类型转换,而红色的虚线表示在转换时可能会精度的损失。

    特例: 可以将整型常量直接赋值给byte, short, char等类型变量,而不需要进行强制类型转换,只要不超出其表数范围

            Short  b = 12;         //合法
            short  b = 1234567;    //非法

    强制类型转换(Cast)

        强制类型转换,又被称为造型,用于显式的转换一个数值的类型. 在有可能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或溢出。

        强制类型转换的语法格式:“(type)var”,运算符“()”中的type表示将值var想要转换成的目标数据类型。

              double x  = 3.14int nx = (int)x;   //值为3
              char c = 'a';
              int d = c+1;
              System.out.println(d);
              System.out.println((char)d);

        当将一种类型强制转换成另一种类型,而又超出了目标类型的表示范围,就会被截断成为一个完全不同的值。

                int x = 300;
                byte bx = (byte)x;    //值为44

        不能在布尔类型和任何数值类型之间做强制类型转换。

        如果需要把布尔类型转换成一个数字该怎么办呢?

    基本类型转化时常见错误和问题

    1.操作比较大的数时,要留意是否溢出,尤其是整数操作时。

        int money = 1000000000;  //10亿
        int years = 20;
        int total = money*years;   //返回的是负数
        long total1 = money*years;  //返回的仍然是负数。默认是int,因此结果会转成int值,再转成long。但是已经发生了数据丢失
        long total2 = money*((long)years);   //先将一个因子变成long,整个表达式发生提升。全部用long来计算。

    2. 眼神不好使用L和l 注意哦,别和1混淆了(不要命名名字为l的变量,long类型使用大写L不要用小写)

            int l = 2;
            long a = 23451l;
            System.out.println(l+1);

    代码

    //测试自动转型和强制转型 
    public class TestCast {
        public static void main(String[] args){
        byte b = 123;
        byte b2 = 300;
        char c = -3;
        char c2 = 'a';
        int i = c2;
        long d01 = 123213;
        float f = d01;
        //测试强制转型
        int i2 = -100;
        char c3 = (char)i2;   //-100超过char的表数范围,所以转换成完全不同的值,无意义的值!
        System.out.println(c3);
    //表达式中的类型提升问题
        int a = 3;
        long b = 4;
        double d = 5.3;
        int c = (int)(a+b);   //做所有的二元运算符(+-/*%),都会有类型提升的问题!
        float f = (float)(a + d);
        int money = 1000000000;  //10亿
        int years = 20;
        long total = (long)money*years;   //返回的是负数
        System.out.println(total);
    //一个人70年心跳多少次
        long times = 70L*60*24*365*70;
        System.out.println(times);
        } 
    }

    当然以上都是皮毛,其实万事皆可盘,那么类型转换呢,什么对象都可以去尝试转换,这以后说哦

  • 相关阅读:
    Duilib 入门教程: 怎么创建一个自定义的窗口
    从屏幕右下角升起的弹窗
    最小化窗口至右下角
    MFC 使程序不在任务栏显示
    创建数据库
    sqlite入门基础(一):sqlite3_open,sqlite3_exec,slite3_close
    VC++、MFC中最好的开源项目
    在MFC中,利用GDI绘制橡皮筋效果-直线,圆,椭圆,矩形
    WCHAR char CString等常用类型互转
    CGAL 计算机几何算法库
  • 原文地址:https://www.cnblogs.com/outmanxiaozhou/p/10470121.html
Copyright © 2011-2022 走看看