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》
相关文章推荐
- 2.Java中涉及基本数据类型的方法重载
- 关于java基础--基本数据类型封装以及String类方法讲解
- Java基础知识强化65:基本类型包装类之Integer的构造方法
- JAVA基础 day13 String类和StringBUffer类的常用方法 基本数据类型包装类的学习
- 涉及基本数据类型的方法重载
- Java中的单例、StringBuffer方法、基本数据类型的包装类以及权限修饰符(基础详解)
- Java 小细节——方法基本类型参数的重载
- Thinking in java 基本类型方法重载
- Java基础知识强化68:基本类型包装类之Character概述和Character常见方法
- Java基本类型与方法重载
- JAVA基础知识回顾(基本数据类型,switch参数,equals与==的区别,Object有哪些公用方法)-1
- 黑马程序员-----java基础五(方法的重载与重写)
- Java基础小知识——基本数据类型和字符串以及字节数组的转换
- Java方法重载时参数类型有重合,它会选择执行哪一个?
- java基础之基本类型与包装类
- Java基础_方法重载
- 黑马程序员:java基础学习——基本数据类型
- Java基础02-基本类型相关知识
- JAVA基础-数据类型及基本数据类型的存储空间
- java基础复习1--基本数据类型、运算符号、表达式语句与程序结构