Передача строки в качестве параметра при перегрузке метода - PullRequest
0 голосов
/ 28 июня 2018
package chapter3;
class MatchClass
{
    int x=0,y=0,z=0,res=0;
    float a=0,b=0,c=0,ress=0;
    String str=null;`enter code here`
    void add(int x,int y,int z)
    {
        res=x+y+z;
        System.out.println("Addition of integers="+res);
    }

    void add(float a, float b, float c)
    {
        ress=a+b+c;
        System.out.println("Addition of float values="+ress);
    }

    void add(String...str)
    {

        System.out.println("Concatenation of string="+str); 
    }
    public static void main(String ar[])
    {
        MatchClass ob=new MatchClass();
        ob.add(10,20,30);
        ob.add(3.5F,4.5F,6.0F);
        ob.add("Mountain","sick");

    }
}

вот код, который я написал, и вывод, который я получаю для строкового параметра, который я передал, довольно неоднозначен. Может кто-нибудь, пожалуйста, помогите мне с быстрым решением. P.S- Я хочу использовать концепцию varagrs для передачи строковых значений.

1 Ответ

0 голосов
/ 28 июня 2018

Я думаю, что проблема, о которой вы говорите, заключается в выводе, который вы получаете для строковой функции. Что-то вроде:

Concatenation of string=[Ljava.lang.String;@6d06d69c

На линии

System.out.println("Concatenation of string="+ str);

Вы печатаете переменную "str", но "str" ​​- это не строка, это массив, а массив - это объект. Итак, для того, чтобы быть напечатанным, функция .toString () вызывается неявно для "str". Проблема здесь в том, что метод Object.toString () печатает не содержимое массива, а тип объекта и ссылку в памяти.

Для печати содержимого массива будет работать следующее (требуется как минимум JDK8)

System.out.println("Concatenation of string="+ String.join(",",str)); 
...