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.

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.

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**//.

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.

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.

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.

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:

Your comments will be displayed after verification.