黑马程序员技术交流社区

标题: 关于方法的参数类型问题 [打印本页]

作者: 刘士林    时间: 2012-11-1 10:35
标题: 关于方法的参数类型问题
calss Demo
{
     public static void main(String[] args)
    {
  
         String s = "abc我";
         int x = s.indexOf(99);
         int y = s.indexOf("c");
         int z = s.indexOf('c');
          System.out.println(x);
          System.out.println(y);
          System.out.println(z);
         
        int a = add("a","b");//编译通不过
   }
    public int add(int ch,int ch1)
    {
     
     return(ch+ch1);
    }
}
打印结果为2,2,2
查看api可知,indexOf 的参数为(int ch),但是传进去“c”或者‘c’或者99都可以编译通过,并打印出字符c的角标位2
自定义的add方法参数类型也是int,传进去字符串就不能通过,同样是int型的参数,为什么indexOf的就能通过,
而自定义的就不能通过?



作者: 林晓泉    时间: 2012-11-1 10:48
indexOf()这个方法有重载的
作者: 杨政    时间: 2012-11-1 11:13
在Java当中char类型是可以匹配int类型的。
s.indexOf(int ch)是可以传入字符作为参数的。是用字符‘c’的ASCII编码来匹配int类型参数。


作者: 廖智    时间: 2012-11-1 12:18
calss Demo
{
     public static void main(String[] args)
    {
  
         String s = "abc我";
         int x = s.indexOf(99);
         int y = s.indexOf("c"); //这里通过是因为String对象中有一个indexOf,参数为String的方法。
         int z = s.indexOf('c'); //这里通过是因为字符占2个字节,int占4个字节,所以传入的字符会自动通过ASCII编码来匹配int类型参数。
          System.out.println(x);
          System.out.println(y);
          System.out.println(z);
         
        int a = add("a","b");//编译通不过
   }
    public int add(int ch,int ch1)
    {
     
     return(ch+ch1);
    }
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2