在使用封装类中将字符串转换为基本数据类型时的静态方法时运行遇到错误!

在使用封装类中将字符串转换为基本数据类型时的静态方法时运行遇到异常!!!

public class Sample11_2
{

public static void main(String[] args)
{
String number = "60";
byte b = Byte.parseByte(number);
System.out.println("十进制byte: " + b);

b = Byte.parseByte(number, 8);
System.out.println("八朝向byte: " + b);

b = Byte.parseByte(number, 16);
System.out.println("十六进制byte: " + b);
}

}

我想问的第一个问题是:为什么在用这些方法时转换后的“60”并不是真正意义上的数值?
比如,在这个代码中,”60“转换后的8进制是48而不是74,16进制的是96而不是3c。

我想问的第二个问题是:明明字符串中只有数值,但为什么运行时还会报错?
比如,在转换为8进制和16进制时,如果number的值为”0“、”1“、……、”7“时运行不会报错。但为”8“或”9“时就会报错?而且当number为”10“时,转换后的8进制和16进制分别为8和16,而不是12和A?
------解决思路----------------------
我知道出什么问题了,
是这样子的:
基本类型的类.parseXXX(String, int)
这句的意思是,认为String是int指定的进制数,因此String中不能出现不能超过int的数字。

假如想要输出二进制、八进制、十六进制等,需要:
Integer.toBinaryString(int)
Integer.toOctalString(int)
Integer.toHexString(int)

Byte类并未提供toXXX(int)的方法,因此咳咳……
------解决思路----------------------
是这样的,看一下API
Parses the string argument as a signed byte in the radix specified by the second argument. 
也就是说把第一个参数按照第二个参数所指定的进制处理。
所以60=6*8^1+0*8^0 = 48;
60 = 6*16^1+0*16^0 = 96