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 3 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.

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

Nadeem said:   1 decade ago
How is 15 printed even if we are not performing addition of a1 and a2 elements anywhere?

Ram said:   1 decade ago
The method fix()is fixed the is a3[1]=7, so that value is assing by the position of a[1]=7.

Vasu said:   1 decade ago
While program is executing
ofter second step
the method of fix(_)
then it comes again back to 3 step.
so it changes the array elements in the position of 1
i.e (a1[1])

Vagmita said:   1 decade ago
I cant understand fix... method...

Sainath said:   1 decade ago
Can anyone explain me in clear way?

Gopi said:   1 decade ago
@Naga. It's because of reflection in referenced object.

Vijay said:   1 decade ago
3 elements should be printed know why only 2 elements are being printed
When I give like this

System.out.print("a1[0]"+a1[0] +"a1[1]"+ a1[1] +"a1[2]"+ a1[2] + " ");

Then it will give the result as
a1[0] = 3
a1[1] = 7
a1[2] = 5 this is why.

Prudhvi Kumar said:   1 decade ago
Please any one explain me output for this program and fix method in-detail.


Post your comments here:

Your comments will be displayed after verification.