A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

基本类型数据可以从一个较小的类型自动提升为一个较大的类型,但这种特性与重载一起出现时,会是什么样呢?
  1. public class Main{
  2.         static void f1(char x){System.out.print(" f1(char) ");}
  3.         static void f1(byte x){System.out.print(" f1(byte) ");}
  4.         static void f1(short x){System.out.print(" f1(short) ");}
  5.         static void f1(int x){System.out.print(" f1(int) ");}
  6.         static void f1(long x){System.out.print(" f1(long) ");}
  7.         static void f1(float x){System.out.print(" f1(float) ");}
  8.         static void f1(double x){System.out.print(" f1(double) ");}
  9.        
  10.         static void f2(byte x){System.out.print(" f2(byte) ");}
  11.         static void f2(short x){System.out.print(" f2(short) ");}
  12.         static void f2(int x){System.out.print(" f2(int) ");}
  13.         static void f2(long x){System.out.print(" f2(long) ");}
  14.         static void f2(float x){System.out.print(" f2(float) ");}
  15.         static void f2(double x){System.out.print(" f2(double) ");}
  16.        
  17.         static void f3(short x){System.out.print(" f3(short) ");}
  18.         static void f3(int x){System.out.print(" f3(int) ");}
  19.         static void f3(long x){System.out.print(" f3(long) ");}
  20.         static void f3(float x){System.out.print(" f3(float) ");}
  21.         static void f3(double x){System.out.print(" f3(double) ");}
  22.        
  23.         static void f4(int x){System.out.print(" f4(int) ");}
  24.         static void f4(long x){System.out.print(" f4(long) ");}
  25.         static void f4(float x){System.out.print(" f4(float) ");}
  26.         static void f4(double x){System.out.print(" f4(double) ");}
  27.        
  28.         static void f5(long x){System.out.print(" f5(long) ");}
  29.         static void f5(float x){System.out.print(" f5(float) ");}
  30.         static void f5(double x){System.out.print(" f5(double) ");}
  31.        
  32.         static void f6(float x){System.out.print(" f6(float) ");}
  33.         static void f6(double x){System.out.print(" f6(double) ");}
  34.        
  35.         static void f7(double x){System.out.print(" f7(double) ");}
  36.        
  37.         public static void main(String[] args) {
  38.                 System.out.print("常量: ");//常量被当作int型
  39.                 f1(1);f2(1);f3(1);f4(1);f5(1);f6(1);f7(1);
  40.                
  41.                 System.out.print("\nchar: ");//char型,如果找不到接受char型的方法,那么会直接提升为int型
  42.                 char c=1;
  43.                 f1(c);f2(c);f3(c);f4(c);f5(c);f6(c);f7(c);
  44.                
  45.                 System.out.print("\nbyte: ");
  46.                 byte b=1;
  47.                 f1(b);f2(b);f3(b);f4(b);f5(b);f6(b);f7(b);
  48.                
  49.                 System.out.print("\nshort: ");
  50.                 short s=1;
  51.                 f1(s);f2(s);f3(s);f4(s);f5(s);f6(s);f7(s);
  52.                
  53.                 System.out.print("\nint: ");
  54.                 int i=1;
  55.                 f1(i);f2(i);f3(i);f4(i);f5(i);f6(i);f7(i);
  56.                
  57.                 System.out.print("\nlong: ");
  58.                 long l=1;
  59.                 f1(l);f2(l);f3(l);f4(l);f5(l);f6(l);f7(l);
  60.                
  61.                 System.out.print("\nfloat: ");
  62.                 float f=1f;
  63.                 f1(f);f2(f);f3(f);f4(f);f5(f);f6(f);f7(f);
  64.                
  65.                 System.out.print("\ndouble: ");
  66.                 double d=1;
  67.                 f1(d);f2(d);f3(d);f4(d);f5(d);f6(d);f7(d);
  68.         }
  69. }
复制代码
输出:
常量:  f1(int)  f2(int)  f3(int)  f4(int)  f5(long)  f6(float)  f7(double)
char:  f1(char)  f2(int)  f3(int)  f4(int)  f5(long)  f6(float)  f7(double)
byte:  f1(byte)  f2(byte)  f3(short)  f4(int)  f5(long)  f6(float)  f7(double)
short:  f1(short)  f2(short)  f3(short)  f4(int)  f5(long)  f6(float)  f7(double)
int:  f1(int)  f2(int)  f3(int)  f4(int)  f5(long)  f6(float)  f7(double)
long:  f1(long)  f2(long)  f3(long)  f4(long)  f5(long)  f6(float)  f7(double)
float:  f1(float)  f2(float)  f3(float)  f4(float)  f5(float)  f6(float)  f7(double)
double:  f1(double)  f2(double)  f3(double)  f4(double)  f5(double)  f6(double)  f7(double)
可见,若有正符合的类型就是用该类型,若没有,就往上提升,提升的优先顺序:byte->short->int->long->float->double
char除外。

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
学习了,但是char好像也会这样吧?
回复 使用道具 举报
宋浩 发表于 2012-6-12 23:14
学习了,但是char好像也会这样吧?

你可以运行一下我的程序看看,传进char型实参,没有char型形参,它没有按照自动提升的顺序找byte或short,它直接找int了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马