StringBuilder类中方法append的13个方法签名,但不短且没有字节

问题描述

StringBuilder方法append()有13个方法签名:

append(Object o) {...}
append(String str) {...}
append(StringBuffer sb) {...}
append(CharSequence s) {...}
append(CharSequence s,int start,int end)
append(char[] str) {...}
append(char[] str,int offset,int len) {...}
append(boolean b) {...}
append(char c) {...}
append(int i) {...}
append(long l) {...}
append(float f) {...}
append(double d) {...}

我注意到byte和short是此列表中唯一缺少的原始数据类型。 尽管使用这些类型的参数确实可以:

public static void main(String... unused) {
        short sh = 1;
        byte b = 2;
        StringBuilder sb = new StringBuilder("abc").append(sh).append(b);
        System.out.println(sb);
        }

输出:abc12

我的问题是为什么起作用,或者如何

这是因为编译器会自动将这些参数提升为int吗?

解决方法

public static void aMethod(int i)
{
    System.out.println("received "+i);
}
public static void main(String args[])
{
    short s=1;
    byte b=2;
    char c='c';
    aMethod(s);
    aMethod(b);
    aMethod(c);
}

他们都使用append(int)

请参见Primitive Data Types