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;
    }
}
12 15
15 15
3 4 5 3 7 5
3 7 5 3 7 5
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 5 of 5.

Salik Khan said:   5 years ago
It's because in java array is passed by reference, so any changes in the method reflect in the actual array.

Sowmya said:   5 years ago
long[] a1={3,4,5};
long[] a2=a1;

This is equal to,
a1[0]=a2[0] and a1[1]=a2[1] and a1[2]=a2[2].

And in fix method, a3 is method local variable it is not an array.
So changes made to a1 is also reflected in a2 so the answer is 15 15.
(3)

Aryan Sahebrao Salunkhe said:   2 years ago
Good, thanks all for explaining.


Post your comments here:

Your comments will be displayed after verification.