黑马程序员技术交流社区

标题: java变量强转类型 [打印本页]

作者: 张作辉    时间: 2016-6-19 22:12
标题: java变量强转类型
class  day02{
        public static void main(String[] args) {
     //强制转换:
                int c = 'c' + 'a';       // 可以把字符转换成整数和浮点数(有小数点的);
                float c1 = 'a' + 'b';   // 可以把字符转换成浮点数是有小数点的
        char c2 =   'a' + 'b'; // 字符和字符是可以相加的,但输出的结果不是字符和数字,而是 ? 号。
        byte c3 = 'a' ;       // 可以把字符转换成byte类型,因byte(整数)和char都是占两位字节.
        //        byte c4 = 'a'+ 'b' ; //输出结果是错误的,因字符跟字符相加转成数字都是int类型的。byte < int
                System.out.println(c+"  "+c1+"  "+c2+"  "+c3);
                   byte b1=5;
                int a1=3;
                c1 += a1 + b1 ; //int和byte类型是可以转成flost类型的:double > flost > long > int > short > byte 、char
                System.out.println(c1+"   " );
          //b1 = b1 + a1;//会报错的,因byte装不下int类型.需要强转(byte)(b1 + a1)
         // b1 +=al        //会报错的,因al经过int类型分配空间比byte的大,byte装不下int类型
        //  b1 +=3;       //这没报错,因+=既有强转类型意思,这里得出一个结论:b1 += 3和b1 = b1 + 3 是不同的
   //        b1 = b1 + 3; //会报错的,因3是int类型的,需要强转 b1 =(byte)(b1+3),强转两个相加的要用括号包起来如下:
          //b1 = (byte)(b1+3); 是对的
          //byte b2 = (byte)(b1+al) //会报错的,因al经过int类型开分配空间比byte的大
                System.out.println(b1+"   " );
               
               
                int a,b2=300;
                byte dd= (byte)b2; //强制转换类型的结果会失去精度
                System.out.println(dd);
            
       byte b3=3,b4=4,b;
                // b = b3 + b4; //会报错的,因两个byte类型相加后就变成int类型,需要强转(byte)(b3 + b4)
                // b = 3 + 4;     //会报错的,因数字是int类型的,两者相加是int类型的,需要强转(byte)(3 + 4)
       System.out.println(b);




        }
}

作者: 黑马序曲    时间: 2016-6-20 01:11
强转就是把大数据类型转换成小的数据类型,在明确具体值的时候可以用,不然需要转的值如果超出了数据类型的取值范围的话会损失精度




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2