您的位置:首页 > 编程语言 > Java开发

java基础——涉及基本类型的方法重载

2017-03-26 11:16 260 查看

java基础——涉及基本类型的方法重载

  在java语言中,基本数据类型可能会自动提升为一个较大的类型,当在函数方法的参数涉及到这些类型的转换时,往往造成一些混淆和错误。

  基本数据类型分为以下几种

  char,short,byte,int,long,float,double

  下面用一个程序来测试以下它们的重载。

package normaltest;


public class Test1 {

public static void main(String[] args) {
// TODO 自动生成的方法存根
/**测试涉及基本类型的重载
*/

System.out.println("char类型重载:");
char x='x';
f1(x);f2(x);f3(x);f4(x);f5(x);f6(x);f7(x);
System.out.println("");
System.out.println("byte类型重载:");
byte y=0;
f1(y);f2(y);f3(y);f4(y);f5(y);f6(y);f7(y);
System.out.println("");
System.out.println("short类型重载:");
short z=0;
f1(z);f2(z);f3(z);f4(z);f5(z);f6(z);f7(z);

System.out.println("");
System.out.println("int类型重载:");
int z1=0;
f1(z1);f2(z1);f3(z1);f4(z1);f5(z1);f6(z1);f7(z1);

System.out.println("");
System.out.println("long类型重载:");
long z11=0;
f1(z11);f2(z11);f3(z11);f4(z11);f5(z11);f6(z11);f7(z11);

System.out.println("");
System.out.println("float类型重载:");
float z111=0;
f1(z111);f2(z111);f3(z111);f4(z111);f5(z111);f6(z111);f7(z111);

System.out.println("");
System.out.println("double类型重载:");
float z1111=0;
f1(z1111);f2(z1111);f3(z1111);f4(z1111);f5(z1111);f6(z1111);f7(z1111);

}
public static void f1(char x){System.out.print("f1(char)");};
public static void f1(byte x){System.out.print("f1(byte)");};
public static void f1(short x){System.out.print("f1(short)");};
public static void f1(int x){System.out.print("f1(int)");};
public static void f1(long x){System.out.print("f1(long)");};
public static void f1(float x){System.out.print("f1(float)");};
public static void f1(double x){System.out.print("f1(double)");};

public static void f2(byte x){System.out.print("f2(byte)");};
public static void f2(short x){System.out.print("f2(short)");};
public static void f2(int x){System.out.print("f2(int)");};
public static void f2(long x){System.out.print("f2(long)");};
public static void f2(float x){System.out.print("f2(float)");};
public static void f2(double x){System.out.print("f2(double)");};

public static void f3(short x){System.out.print("f3(short)");};
public static void f3(int x){System.out.print("f3(int)");};
public static void f3(long x){System.out.print("f3(long)");};
public static void f3(float x){System.out.print("f3(float)");};
public static void f3(double x){System.out.print("f3(double)");};

public static void f4(int x){System.out.print("f4(int)");};
public static void f4(long x){System.out.print("f4(long)");};
public static void f4(float x){System.out.print("f4(float)");};
public static void f4(double x){System.out.print("f4(double)");};

public static void f5(long x){System.out.print("f4(long)");};
public static void f5(float x){System.out.print("f5(float)");};
public static void f5(double x){System.out.print("f5(double)");};

public static void f6(float x){System.out.print("f6(float)");};
public static void f6(double x){System.out.print("f6(double)");};

public static void f7(double x){System.out.print("f7(double)");};
}


函数运行结果如下:



  对于char类型来讲,如果在重载时找不到相关的类型,则自动转化为int类型,而对于其它类型来讲,重载时首先寻找自己的数据类型,如果数据类型不存在,则自动增大到最近的数据类型。同时如果对于直接输入的整数,则默认会被当作int类型,之后同int类型一样自动匹配数据类型。

  当传入的数据数据类型大于其能承受的最高类型,则必须进行窄化类型转换,否则将会报错。修改程序如下。

package normaltest;


public class Test2 {

public static void main(String[] args) {
// TODO 自动生成的方法存根
double x=0;
f1((float) x);f1((long) x);
f1((int) x);
f1((short) x);
f1((byte) x);
f1((char) x);
}
public static void f1(char x){System.out.print("f1(char)");};
public static void f1(byte x){System.out.print("f1(byte)");};
public static void f1(short x){System.out.print("f1(short)");};
public static void f1(int x){System.out.print("f1(int)");};
public static void f1(long x){System.out.print("f1(long)");};
public static void f1(float x){System.out.print("f1(float)")
}


结果:


  第二次的结果如上,如果不进行强制类型转换,编译器会报错。在进行窄化类型操作时要注意数据的转换,可能会存在数据丢失。java中很好地提供了类型转换,相比较于c++和c语言更易于使用。

  参考《Thinking in Java》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 函数 语言