Core Java - Interview Questions and Answers for 'Var args' - 14 question(s) found - Order By Newest Q1. Which of the following are valid declarations
1. void method(int... x){};
2. void method(int.. x){};
3. void method(int.. .x){};
4. void method(int ...x){};
5. void method(int... x){};
6. void method(int ... x){};
7. void method(int x, int... y){};
8. void method(int... x, int y){};
9. void method(int... x,int... y){};
Core Java
Ans. 1st is a valid and standard declaration.
2nd results in compilation error as only 2 dots are there.
3rd results in compilation error as three dots are not consecutive and broken.
4 through 6 may not be standard and ideal way of declarations but they are valid and will compile and work fine.
7 is valid declaration.
8 and 9 will result in compilation error as var args can only be provided to last argument. Help us improve. Please let us know the company, where you were asked this question : Like Discuss Correct / Improve  var args  methods  functions   method declaration  scjp  ocjp Q2. What is the difference between these two method declarations ?
private static void method(String[] arg)
and
private static void method(String... arg) Core Java
Ans. First expects the argument as a string array whereas second expects variable number of string arguments or a string array.
So we can call both by providing string array as an argument but second can be called with 0 to n string arguments which cannot be done for first.
for example - We can call second method with any of following
method();
method("Hello");
method("Hello","World");
method(new String[4]);
Help us improve. Please let us know the company, where you were asked this question : Like Discuss Correct / Improve  var args  methods  method declarations  functions Q3. Can we overload method as following ?
void method(int... x){};
void method(int[] x){}; Core Java
Ans. No. Because java internally treats var args as arrays and hence both method declarations will generate the same byte code and hence would result in ambiguity while determining call binding. Help us improve. Please let us know the company, where you were asked this question : Like Discuss Correct / Improve  var args  methods  functions   method declaration  scjp  ocjp Q4. Which of the following is not valid var args declaration ? a. int sum (int... numbers) b. int sum (.int .. numbers) c. int sum (int ... numbers) d. int sum (int x, int ... numbers)
Ans. int sum (.int .. numbers) Help us improve. Please let us know the company, where you were asked this question : Like Discuss Correct / Improve  java   var args Try 2 Question(s) TestAns. Though var args are used rarely but they are pretty useful if a method is expected to receive variable number of arguments. For example - it's pretty useful for the main method as the caller has the flexibility to provide arguments in infinite ways.It provides a convenience and flexibility to the caller. Help us improve. Please let us know the company, where you were asked this question : Like Discuss Correct / Improve  var args  methods  method declarations  functions Q6. Which of the following is false about var args ? a. Var Args argument should have data type followed by three dots b. Three dots should be consecutive and not separated by even space c. We cannot have space before and after the dots d. If there is a var args in the method, it should be only one and the last one.
Ans. We cannot have space before and after the dots Help us improve. Please let us know the company, where you were asked this question : Like Discuss Correct / Improve  java   var args Try 2 Question(s) Test Q7. What are var args ?
or
What is the use of var args ? Core Java
Ans. Var args is the feature of Java that allows a method to have variable number of arguments. Var args are used when we are not sure about the number of arguments a method may need. Internally java treats them as array.
Declarations of methods with var args
void method(int... x){};
void method(int x, int... y){}; Help us improve. Please let us know the company, where you were asked this question : Like Discuss Correct / Improve  var args  methods  functions   method declaration Asked in 2 Companies Q8. Why following method declarations are not valid ?
void method(int... x, int y){};
void method(int... x,int... y){}; Core Java
Ans. Because var args are not only allowed with the last argument in the method declaration. Help us improve. Please let us know the company, where you were asked this question : Like Discuss Correct / Improve  var args  methods  functions   method declaration  ocjp  scjp Q9. Which method will get called if we call it as method(1)
void method(int x ){};
void method(int... x){}; Core Java
Ans. Though the call an be bind to either of these but in this case, 1st method will get priority and hence will be called. Help us improve. Please let us know the company, where you were asked this question : Like Discuss Correct / Improve  var args  method  function  overloading  scjp  ocjp Q10. Do you see any problem with this code
public class BuggyBread {
public static void main(String[] args) {
method("Hello","World");
}
private static void method(String... args){
for(String arg:args){
System.out.println(arg);
}
}
} Core Java
Ans. No, It will compile and execute perfectly fine. As we are using method with var args , we can call it with 0 to n arguments. Help us improve. Please let us know the company, where you were asked this question : Like Discuss Correct / Improve  var args  methods  method declarations  functions Q11. Do you see any problem with this code
public class BuggyBread {
public static void main(String[] args) {
method();
}
private static void method(String... args){
for(String arg:args){
System.out.println(arg);
}
}
} Core Java
Ans. This will compile fine as we can provide 0 arguments for a var arg but will print nothing upon execution. Help us improve. Please let us know the company, where you were asked this question : Like Discuss Correct / Improve  var args  methods  method declarations  functions Q12. Do you see any problem with this code
public class BuggyBread {
public static void main(String[] args) {
method("Hello");
}
private static void method(String... args){
for(String arg:args){
System.out.println(arg);
}
}
private static void method(String arg){
System.out.println(arg);
}
} Core Java
Ans. It will compile fine and the method call will bind to method with specific argument and not with var arg
i.e private static void method(String arg)
It will print "Hello" upon execution Help us improve. Please let us know the company, where you were asked this question : Like Discuss Correct / Improve  var args  methods  method declarations  functions Q13. Do you see any problem with this code
public class BuggyBread {
public static void main(String[] args) {
method("Hello");
}
private static void method(String... args){
for(String arg:args){
System.out.println(arg);
}
}
private static void method(String[] arg){
System.out.println(arg);
}
} Core Java
Ans. Yes, it will give compilation error and java will complain about duplicate method. Java treat var args internally as arrays and hence would result in same byte code for both method's syntax. Help us improve. Please let us know the company, where you were asked this question : Like Discuss Correct / Improve  var args  methods  method declarations  functions Q14. Will this code work
public class BuggyBread {
public static void main(String[] args) {
method("Hello","World");
}
private static void method(String[] arg){
System.out.println(arg);
}
}
What all possible changes we can make to method signature to make it work ? Core Java
Ans. It won't work as java won't find the method definition for method with 2 arguments.
We can either declare the method as
private static void method(String arg,String arg2)
or
private static void method(String... arg) Help us improve. Please let us know the company, where you were asked this question : Like Discuss Correct / Improve  var args  methods  method declarations  functions