怎么在byte、short、char、int类型参数方法中重载

    xiaoxiao2021-04-18  72

    介绍

    这个问题很orz,非常的帮

    下面来看看代码:

    public class TestMianSi02 { public static void main(String[] args) { byte b=10; //第一波测试 test(b); //第二波测试 test(10); } public static void test(byte b){ System.out.println("#############byte"); } public static void test(short s){ System.out.println("#############short"); } public static void test(char c){ System.out.println("#############char"); } public static void test(int i){ System.out.println("#############int"); } }

    我就想问问各位读者,这会输出什么??

    很明显,第一眼上去就很纠结,看着输出这个是对的,输出那个是对的,非常纠结。

    最终输出:

    #############byte #############int

    没错,就是这样。

    再来看看代码:

    public class TestMianSi02 { public static void main(String[] args) { byte b=10; //第一波测试 test(b); } public static void test(short s){ System.out.println("#############short"); } public static void test(char c){ System.out.println("#############char"); } public static void test(int i){ System.out.println("#############int"); } }

    想想这会输出什么??

    最终输出的是。。。。

    #############short

    从上面就可以看出,这里是有转换调用规则的。

    我们在这篇博客能够知道,方法参数是引用类型的时候,重载方法是根据类的继承树调用的。而这里的参数是基本类型!我们该怎么判断呢??

    通过字节大小!!

    byte : 1字节(8位) short : 2字节(16位) char : 2(16位) int : 4(32位)

    当我们b是byte类型的时候,既然方法里面有byte类型的参数,那么我们就调用byte参数类型的方法。 当byte类型参数的方法没有了,那么将会把byte类型8位提升为16位的short,然后调用short类型参数的方法。

    没错,就是这样!!!

    好!再来,看看你是否还能够猜对:

    public class TestMianSi02 { public static void main(String[] args) { byte b=10; //第一波测试 test(b); } public static void test(char c){ System.out.println("#############char"); } public static void test(int i){ System.out.println("#############int"); } }

    最终输出:

    #############int

    但是呢??char虽然是16位的,但是它的取值范围是没有负数的,是大于等于零的,导致无法转换。所以当只有char类型参数和int类型参数的方法的时候将会调用int类型参数方法。

    好了,Nice!!!

    转载请注明原文地址: https://ju.6miu.com/read-675561.html

    最新回复(0)