1. public class A {
2. public String doit(int x, int y) {
3. return “a”;
4. }
5.
6. public String doit(int... vals) {
7. return “b”;
8. }
9. }
Given:
25. A a=new A();
26. System.out.println(a.doit(4, 5));
What is the result?谁帮我讲讲第六行参数什么意思???
     
1. public class A {
2. public void doit() {
3. }
4. public String doit() {
5. return “a”;
6. }
7. public double doit(int x) {
8. return 1.0;
9. }
10.}第二段代码第四行为什么会报错呢??
   谢谢各位了

解决方案 »

  1.   

    第一个代码第六行是这样的
    6. public String doit(int... vals) {
      

  2.   

    晕。。不会操作。。本来想设置斜体的。。不会弄了。。
       第六行为   6. public String doit(int... vals) {
      

  3.   

    定义了一个string类型的方法,形参是int... vals
      

  4.   


      我是从PDF文件上复制过来的题目,应该不是中文引号的问,可能是复制粘贴的时候出问题了~~    第一段代码中显示出来的也都是中文引号,但编译是成功的,输出结果为a
      

  5.   

    int... vals
    int []vals
    数组二者等价
      

  6.   

    int... vals
    表示vals是个int数组
      

  7.   


    package mypack;public class A {
    public String doit(int x, int y) {
    return "a";
    }
    //public String doit(int... vals)相当于public String doit(int[] vals)
    public String doit(int... vals) {
    return "b";
    } public static void main(String[] args) {
    A a = new A();
    System.out.println(a.doit(4, 5)); }
    }
    第二问:
    package mypack;public class A {
    public void doit() {    
    } public String doit() {
    return "a";
    } public double doit(int x) {
    return 1.0;
    }
    }
    //public String doit()跟public void doit()只有返回类型不同是不能构成重载的,所以会报错
      

  8.   


    还有虽然a.doit(4, 5)对doit(int x, int y)和doit(int ... vals)都符合,但会优先选择doit(int x, int y)
      

  9.   


    1. public class A {
    2. public void doit() {
    3. }
    4. public String doit() {
    5. return “a”;
    6. }
    7. public double doit(int x) {
    8. return 1.0;
    9. }
    10.}//函数的重载只能是参数类型不同,参数个数不同,
    返回值不同和访问修饰符不同不能构成重载函数