第10节:类型转换
1、自动类型转换(隐式)
1.1 语法
自动类型转换就是将小范围类型的数据赋值给大范围类型的变量。赋值过程中编译器会自动完成转换,而不需要我们做任何处理。
1.2 转换规则链
1.2.1 byte → short、int、long、float、double
packagecom.qxt.src.chapt9.code1_2_1;publicclassExample{publicstaticvoidmain(String[]args){bytebyteNumber=100;System.out.println("byteNumber: "+byteNumber);shortshortNumber=byteNumber;System.out.println("shortNumber: "+shortNumber);intintNumber=byteNumber;System.out.println("intNumber: "+intNumber);longlongNumber=byteNumber;System.out.println("longNumber: "+longNumber);floatfloatNumber=byteNumber;System.out.println("floatNumber: "+floatNumber);doubledoubleNumber=byteNumber;System.out.println("doubleNumber: "+doubleNumber);}}1.2.2 short → int、long、float、double
packagecom.qxt.src.chapt9.code1_2_2;publicclassExample{publicstaticvoidmain(String[]args){shortshortNumber=100;System.out.println("shortNumber: "+shortNumber);intintNumber=shortNumber;System.out.println("intNumber: "+intNumber);longlongNumber=shortNumber;System.out.println("longNumber: "+longNumber);floatfloatNumber=shortNumber;System.out.println("floatNumber: "+floatNumber);doubledoubleNumber=shortNumber;System.out.println("doubleNumber: "+doubleNumber);}}1.2.3 char → int、long、float、double
packagecom.qxt.src.chapt9.code1_2_3;publicclassExample{publicstaticvoidmain(String[]args){charcharNumber='A';System.out.println("charNumber: "+charNumber);intintNumber=charNumber;System.out.println("intNumber: "+intNumber);longlongNumber=charNumber;System.out.println("longNumber: "+longNumber);floatfloatNumber=charNumber;System.out.println("floatNumber: "+floatNumber);doubledoubleNumber=charNumber;System.out.println("doubleNumber: "+doubleNumber);}}1.2.4 int → long、float、double
packagecom.qxt.src.chapt9.code1_2_4;publicclassExample{publicstaticvoidmain(String[]args){intintNumber=100;System.out.println("intNumber: "+intNumber);longlongNumber=intNumber;System.out.println("longNumber: "+longNumber);floatfloatNumber=intNumber;System.out.println("floatNumber: "+floatNumber);doubledoubleNumber=intNumber;System.out.println("doubleNumber: "+doubleNumber);}}1.2.5 long → float、double
packagecom.qxt.src.chapt9.code1_2_5;publicclassExample{publicstaticvoidmain(String[]args){longlongNumber=1000000000000L;System.out.println("longNumber: "+longNumber);floatfloatNumber=longNumber;System.out.println("floatNumber: "+floatNumber);doubledoubleNumber=longNumber;System.out.println("doubleNumber: "+doubleNumber);}}1.2.6 float → double
packagecom.qxt.src.chapt9.code1_2_6;publicclassExample{publicstaticvoidmain(String[]args){floatfloatNumber=3.14f;System.out.println("floatNumber: "+floatNumber);doubledoubleNumber=floatNumber;System.out.println("doubleNumber: "+doubleNumber);}}2、强制类型转换(显式)
2.1 语法
强制类型转换就是大范围类型数据转换为小范围类型变量。需要手动加 (目标类型) ,可能丢失精度、溢出、变负数。
[目标类型][变量]=(目标类型)原值;(引用类型同样适用,后续章节介绍)2.2 转换规则链
2.2.1 double → float、long、int、short、byte、char
packagecom.qxt.src.chapt9.code2_2_1;publicclassExample{publicstaticvoidmain(String[]args){doubledoubleNumber=100.0;System.out.println("doubleNumber: "+doubleNumber);floatfloatNumber=(float)doubleNumber;System.out.println("floatNumber: "+floatNumber);longlongNumber=(long)doubleNumber;System.out.println("longNumber: "+longNumber);intintNumber=(int)doubleNumber;System.out.println("intNumber: "+intNumber);shortshortNumber=(short)doubleNumber;System.out.println("shortNumber: "+shortNumber);bytebyteNumber=(byte)doubleNumber;System.out.println("byteNumber: "+byteNumber);charcharNumber=(char)doubleNumber;System.out.println("charNumber: "+charNumber);}}2.2.2 float → long、int、short、byte、char
packagecom.qxt.src.chapt9.code2_2_2;publicclassExample{publicstaticvoidmain(String[]args){floatfloatNumber=100.0f;System.out.println("floatNumber: "+floatNumber);longlongNumber=(long)floatNumber;System.out.println("longNumber: "+longNumber);intintNumber=(int)floatNumber;System.out.println("intNumber: "+intNumber);shortshortNumber=(short)floatNumber;System.out.println("shortNumber: "+shortNumber);bytebyteNumber=(byte)floatNumber;System.out.println("byteNumber: "+byteNumber);charcharNumber=(char)floatNumber;System.out.println("charNumber: "+charNumber);}}2.2.3 long → int、short、byte、char
packagecom.qxt.src.chapt9.code2_2_3;publicclassExample{publicstaticvoidmain(String[]args){longlongNumber=1000000000L;System.out.println("longNumber: "+longNumber);intintNumber=(int)longNumber;System.out.println("intNumber: "+intNumber);shortshortNumber=(short)longNumber;System.out.println("shortNumber: "+shortNumber);bytebyteNumber=(byte)longNumber;System.out.println("byteNumber: "+byteNumber);charcharNumber=(char)longNumber;System.out.println("charNumber: "+charNumber);}}2.2.4 int → short、byte、char
packagecom.qxt.src.chapt9.code2_2_4;publicclassExample{publicstaticvoidmain(String[]args){intintNumber=100;System.out.println("intNumber: "+intNumber);shortshortNumber=(short)intNumber;System.out.println("shortNumber: "+shortNumber);bytebyteNumber=(byte)intNumber;System.out.println("byteNumber: "+byteNumber);charcharNumber=(char)intNumber;System.out.println("charNumber: "+charNumber);}}2.2.5 short → byte、char
packagecom.qxt.src.chapt9.code2_2_5;publicclassExample{publicstaticvoidmain(String[]args){shortshortNumber=100;System.out.println("shortNumber: "+shortNumber);bytebyteNumber=(byte)shortNumber;System.out.println("byteNumber: "+byteNumber);charcharNumber=(char)shortNumber;System.out.println("charNumber: "+charNumber);}}2.2.6 byte → short、char
packagecom.qxt.src.chapt9.code2_2_6;publicclassExample{publicstaticvoidmain(String[]args){bytebyteNumber=100;System.out.println("byteNumber: "+byteNumber);charcharNumber=(char)byteNumber;System.out.println("charNumber: "+charNumber);}}2.2.7 char → short、byte
无符号(char)和有符号(short、byte)是两种完全不同的类型,必须进行强转。
packagecom.qxt.src.chapt9.code2_2_7;publicclassExample{publicstaticvoidmain(String[]args){charcharNumber='A';System.out.println("charNumber: "+charNumber);bytebyteNumber=(byte)charNumber;System.out.println("byteNumber: "+byteNumber);shortshortNumber=(short)charNumber;System.out.println("shortNumber: "+shortNumber);}}