问题描述
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)
。