Java Programming - Operators and Assignments - Discussion
Discussion Forum : Operators and Assignments - Finding the output (Q.No. 1)
1.
What will be the output of the program?
class PassA
{
public static void main(String [] args)
{
PassA p = new PassA();
p.start();
}
void start()
{
long [] a1 = {3,4,5};
long [] a2 = fix(a1);
System.out.print(a1[0] + a1[1] + a1[2] + " ");
System.out.println(a2[0] + a2[1] + a2[2]);
}
long [] fix(long [] a3)
{
a3[1] = 7;
return a3;
}
}
Answer: Option
Explanation:
Output: 15 15
The reference variables a1 and a3 refer to the same long array object. When the [1] element is updated in the fix() method, it is updating the array referred to by a1. The reference variable a2 refers to the same array object.
So Output: 3+7+5+" "3+7+5
Output: 15 15 Because Numeric values will be added
Discussion:
43 comments Page 3 of 5.
Anandi said:
1 decade ago
The answer is 375 375. Then how it is 15 15 please explain me?
MK Dino said:
1 decade ago
The reason why is because arrays are not primitive types.
Primitive types: pass copy of variable to parameter.
Objects(user defined types): pass by reference variable/objects as parameter.
There are exceptions to arrays(int[],long[], etc).
Formally speaking, an array is a reference type, though you cannot find such a class in the Java APIs.
Primitive types: pass copy of variable to parameter.
Objects(user defined types): pass by reference variable/objects as parameter.
There are exceptions to arrays(int[],long[], etc).
Formally speaking, an array is a reference type, though you cannot find such a class in the Java APIs.
Beeram Siva Damodar Reddy said:
1 decade ago
//**Here when we call fix (a1) method then control will goes to fix method 7 execute it what the result is a1 is passed as a parameter to the fix (long[] a3).
So a3 is replaced by a1 & a3[1] = a1[1] = 7 value will be returned to its calling method. So, finally we will get a1[1] = 7.
I hope my explanation is easy to understand**//.
So a3 is replaced by a1 & a3[1] = a1[1] = 7 value will be returned to its calling method. So, finally we will get a1[1] = 7.
I hope my explanation is easy to understand**//.
Meera said:
9 years ago
Thank you all for the given explanations.
Lavanya said:
9 years ago
Out put: 3 4 5 3 7 5.
Because + are concatenate operator.
Because + are concatenate operator.
Riya said:
9 years ago
Please help me out that when a (+) operator is used for concatenating and for addition purpose.
Anjali said:
9 years ago
When both operands are of the numerical type then the operation is an addition.
If both operands are of string type then it is a concatenation.
If both operands are of string type then it is a concatenation.
Gaurav gupta said:
9 years ago
Long [] a1 = {3, 4, 5};
Long [] a2 = fix (a1) ;
As we know an array itself is a pointer. Here the address of a1 is stored at a2. Therefore when the a1 is changed it will be reflected globally and therefore both have same data.
Long [] a2 = fix (a1) ;
As we know an array itself is a pointer. Here the address of a1 is stored at a2. Therefore when the a1 is changed it will be reflected globally and therefore both have same data.
Krishna Murthy said:
9 years ago
In C, we have pointers to get the address of a variable. But in java pointers concept is not there but java has indirectly using pointers such as objects. Objects are nothing but references. So the array is a class of object in java. That's why a1 affected by the method fix().
Sarah Glory Olivia said:
9 years ago
Here, fix(a1) is for a2, so why a1[1] in a[1] change to 7 while a1 doesn't use fix method?
Post your comments here:
Quick links
Quantitative Aptitude
Verbal (English)
Reasoning
Programming
Interview
Placement Papers