indexOf方法传入char是被转换成int后执行的。
而valueOf传入不同类型的参数,执行的是不同的方法。难道你不知道java里有一种叫做方法重载的说法吗?只不过是同名的方法罢了。你传入int什么的,都是当成int处理,你传入double也是当成double处理。但如果你传入的Object,包括任何其它类的对象时,会当成对象处理,但大概是调用的这个对象的toString方法。toString方法是任何一个类都会有的方法。
indexOf()自动转换了
打个比方把
switch(char a)
{
case ‘a’:do sm
break;
case 'b':do sm;
。。。。。。
}
char类型可以与int相互转换的
int与integer一样
doblue 与Double一样,也可以说是对象,也可以说是变量
就像String str="ssss" 与String str=new String("sss")一样,只是存放不一样而已
就像你说的char和int是等价的 2个可以直接拿来互相替换使用
第二个问题 关于valueOf方法 这里的方法都是重载过的 你好好去看看api每个方法的说明 这里设计到了基本类型的对象类型的问题 比如int对应的Integer char对应了Character 虽然int和char是等价的但是Integer和Character不是~~~
至于最后那个 int 和char 是基本类型 而Object是对象类型 只有对象才涉及到多态 基本类型是没有多态这么一说的
首先,纠正你一个观点:
Java 语言有8中基本类型,byte short char int long boolean float double
这8种基本类型和类是没有任何关系的。
只有类才会去继承Object类,才会有你说的多态机制。
基本类型没有多态。
所以说Java提供多种的valueOf()方法是有必要的。
indexOf() 是返回指定子字符串在此字符串中第一次出现处的索引。
而valueOf();括号内是放基本类型数据的,读取出来也是基本类型数据转为String类型了.
很多时候它们都可以通用。之所以定义这么多方法是为了给变成者方便使用
还有例如 valueOf(boolean b);读取一个boolean 类型的变量 它可能是true,或者false。它们的长度不同。如果你不知道b 是true或者false。怎么能用indexOf() 读取呢!
Object是引用类型。int,double、char等是原生类型(非类)
Java中还有自动转型。