数据类型转换 ●数据类型转换就是改变数据的类型,它 可以隐式地(即由系统主动)或显式地 (即根据用户明确的要求)进行 ◆Java的数据类型转换有严格的规定:凡是 将数据从占用内存较少的短数据类型转 换为占用内存较多的长数据类型时,可 以不做显式的类型转换说明;反之则必 须做显式(强制)类型转换
数据类型转换 数据类型转换就是改变数据的类型,它 可以隐式地(即由系统主动)或显式地 (即根据用户明确的要求)进行 Java的数据类型转换有严格的规定:凡是 将数据从占用内存较少的短数据类型转 换为占用内存较多的长数据类型时,可 以不做显式的类型转换说明;反之则必 须做显式(强制)类型转换
自动类型转换( conversion) ●整型、实型、字符型数据可以混 合运算。运算过程中,不同类型 的数据会自动转换为同一类型, 然后进行运算 ●自动类型转换按低级类型数据转 换成高级类型数据的规则进行
自动类型转换(conversion) 整型、实型、字符型数据可以混 合运算。运算过程中,不同类型 的数据会自动转换为同一类型, 然后进行运算 自动类型转换按低级类型数据转 换成高级类型数据的规则进行
类型级别图 cha ng float double bvte short
类型级别图 char short int long float double byte
●基本数据类型的自动类型转换会在下面三种情形下发生 (1)赋值 (2)方法调用 (3)算术提升此时又分两种情况: (a)对一元运算符(除了++和-运算符不进行自动 类型转换之外)来说,假设操作数的类型为byte、 short或 char,都将自动转换为int型; (b)对二元运算符来说,假设有一个操作数类型为 double,其它操作数就自动转换为 double型;否则假设有 个操作数类型为foat,其它操作数就自动转换为foat 型 否则假设有一个操作数类型为long,其它操作数就自动 转换为ong型;否则两个操作数都会自动转换为it型
基本数据类型的自动类型转换会在下面三种情形下发生 (1)赋值 (2)方法调用 (3)算术提升此时又分两种情况: (a)对一元运算符(除了++和--运算符不进行自动 类型转换之外)来说,假设操作数的类型为byte、short或 char,都将自动转换为int型; (b)对二元运算符来说,假设有一个操作数类型为 double,其它操作数就自动转换为double型;否则假设有 一个操作数类型为float,其它操作数就自动转换为float型; 否则假设有一个操作数类型为long,其它操作数就自动 转换为long型;否则两个操作数都会自动转换为int型
自动类型转换的例子 public class Promotion( public static void main(String args[] byte b= 18 char c=a int i= 20: long I= 555; float f= 3. 5f. double d= 1.88 float f1=f*b; //float* byte->float int i1=c+i:/chartint->int long 11=1+i1; //ong+int->long double d1=f1/i1-d: / float/int->float float-double->double System, out printIn( f1=+f1); System. out. printIn(i1="+i1); System, out. printin( I1=+11) System. out printIn( d1="+d1);
自动类型转换的例子 public class Promotion{ public static void main(String args[ ]){ byte b = 18; char c = 'a'; int i = 20; long l = 555l; float f = 3.5f; double d = 1.88; float f1 = f * b; //float*byte->float int i1 = c + i; //char+int->int long l1 = l + i1; //long+int->long double d1 = f1 / i1 - d; //float/int->float,float-double->double System.out.println("f1="+f1); System.out.println("i1="+i1); System.out.println("l1=" + l1); System.out.println("d1=" + d1); } }