WEB开发网      婵犻潧鍊婚弲顐︽偟椤栨稓闄勯柦妯侯槸閻庤霉濠婂骸浜剧紒杈ㄥ笚閹峰懘鎮╅崹顐ゆ殸婵炴垶鎸撮崑鎾趁归悩鐑橆棄闁搞劌瀛╃粋宥夘敃閿濆柊锕傛煙鐎涙ê鐏f繝濠冨灴閹啴宕熼鍡╀紘婵炲濮惧Λ鍕叏閳哄懎绀夋繛鎴濈-楠炪垽鎮归崶褍妲婚柛銊ュ缁傚秹鏁撻敓锟� ---闂佹寧娲╅幏锟�
开发学院WEB开发Jsp java 类型提升的约定 阅读

java 类型提升的约定

 2008-01-05 08:26:58 来源:WEB开发网 闂侀潧妫撮幏锟�闂佸憡鍨电换鎰版儍椤掑倵鍋撳☉娆嶄沪缂傚稄鎷�婵犫拃鍛粶闁靛洤娲ㄩ埀顒佺⊕閵囩偟绱為敓锟�闂侀潧妫撮幏锟�  闂佺ǹ绻楀▍鏇㈠极閻愬搫绾ч柕濠忕細閼割亜顪冪€n剙浠ф繛鍫熷灥椤曘儵顢欓悡搴ば�
核心提示:类型提升的约定 除了将byt型和short型提升到int型以外,java定义了若干适用于表达式的类型提升规则(type PRomotion rules). 首先,如刚才描述的,所有的byte型和short型的值被提升到int型.其次,假如一个操作数是long型,整个表达式将被提升到long型;假如一个操作数是floa
类型提升的约定
   除了将byt型和short型提升到int型以外,java定义了若干适用于表达式的类型提升规则(type PRomotion rules). 首先,如刚才描述的,所有的byte型和short型的值被提升到int型.其次,假如一个操作数是long型,整个表达式将被提升到long型;假如一个操作数是float型,整个表达式将被提升到float型;假如有一个操作数是double型,计算结果就是double型.
下面的程序表明:在表达式中的每个值是如何被提升以匹配各自二进制运算符的第二个参数:
 class Promote {
 public static void main(String[] args) {
  byte b = 42;
  char c = 'a';
  short s = 1024;
  int i = 50000;
  float f = 5.67f;
  double d = .1234;
  double result = (f * b) + (i / c) - (d * s);
  System.out.println((f * b) + "+" + (i / c) + " - " + (d * s));
  System.out.println("result =" + result);
 }
}

进一步看看发生在下列程序行的类型提升:
 double result = (f * b) + (i / c) - (d * s);
在第一个表达式f*b中,变量b被提升为float类型,该子表达式的结果当然是float类型.
接下来,在子表达式i/c中,边量c被提升为int类型,该子表达式的结果当然是int类型.
然后,子表达式d*s中的变量s被提升为double类型,该子表达式的结果当然是double类型.
最后,考虑三个中间值,float类型,int类型,和double类型.float类型加int类型的结果是
float类型,然后float类型减去提升为double类型的double类型,该表达式的最后结果是
double类型.

Tags:java 类型 提升

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接