Let me try to answer your question one by one.
Firstly function f(String... strings) { }
The (...) identifies a variable number of arguments which means multiple arguments.
you can pass the n number of arguments. Please refer the below example,
static int sum(int ... numbers)
{
int total = 0;
for(int i = 0; i < numbers.length; i++)
total += numbers[i];
return total;
}
and you can call the function like
sum(10,20,30,40,50,60);
Secondly String[] strings also similar to multiple arguments but in Java main function you can use only string array. Here you can pass the arguments through command line on run time.
class Sample{
public static void main(String args[]){
System.out.println(args.length);
}
}
java Sample test 10 20
Thirdly, When and where you should use means,
Suppose you want to pass the arguments through command line also run time you can use String[] string.
Suppose you want pass n number of arguments at any time from your program or manually then you can use (...) multiple arguments.