Scale up as you grow — whether you're running one virtual machine or ten thousand.

From GPU-powered inference and Kubernetes to managed databases and storage, get everything you need to build, scale, and deploy intelligent applications.

hai This is vijay here u are having a very good interview questions which are very helpfull during interview. i have been asked one qus in gtt is that : purpose of class inside interface with example. i saw lot of blogs but doesnt get clearity…so plz post the answer for this qus also. Thx in advance.
- vijay sakhare
So, if it is not by reference, so can you please explain the program as below : public class Test { public static void main(String[] args) { Employee emp1 = new Employee(“Employee 1”); System.out.println("Call for Emp1 " + emp1); nameChange(emp1); System.out.println(“Name change DONE”); System.out.println("Call for Emp1 " + emp1); } public static void nameChange(Employee e1){ e1.setName(“Employee 3”); } } class Employee { String name; Employee(String nam){ this.name = nam; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Object for "+ this.name; } } Becouse it is producing the output as Call for Emp1 Object for Employee 1 Name change DONE Call for Emp1 Object for Employee 3
- Atul
Hi, public class Test { public static void main(String[] args) { Balloon blue = new Balloon(“Blue”); foo(blue); System.out.println(blue.getColor()); } private static void foo(Balloon balloon) { balloon.setColor(“Red”); } } The output of the above program is Red. So, the above isn’t pass by reference ?
- Praveen
Correctly to say that each object variable is reference and we can only pass this reference to method or reassign variable with new reference. I think you compare with C/C++. Where on language level is supported passing reference to reference (pointer to pointer). And data of object is not related to variable. We can pass address of variable which contain address where object is located. I think you understand me. In Java such functionality is not supported on language level. and to do this it require to create a new instance of your class with field which will hold a variable with reference to your object. For example, you want to pass Integer to method and change it in the body of that method but there is no method to change value of Integer object. So you need to create wrapper class for that Integer object and pass it to method.
- Victor
Before reading this post, i have understood this core concept, but realised it after i read this post. Java is always pass by value, value will be always primitive. Value can never be Object type, infact if we are passing object it seems we are passing the memory address of that object. This memory address is again an int value. Most of the books, authors failed to explain this. So here it is GREAT. “Java is pass by value, and sometimes pass through reference”.
- Manu M
Hi Pankaj, thanks for including this nice post with good explanation. This post is very simple and easy to understand the reason for ‘why Java is pass by value but not by reference’. From your post it is clear that reference means reference to the memory location of the object. Each memory location holds a number i.e VALUE. This value is useful in identifying that memory location. So If there is a reference to an object, it means it is reference to the address location of that object. So, java refers the objects by their memory address. The name used to refer that memory location (i.e value) is termed as reference variable. As we are passing the reference of the memory location, java is pass by value (of the memory address of the object) but not pass by reference. One suggestion, if you would have added the explanation about primitive data types also, it would have helped many readers in understanding why swap method works in case of primitives but not objects. However, this is a very nice post right to the point.
- johny
These definitions are very counter intuitive. When your argument to a function is an object, java creates a copy of the “object reference” and passes that into the function scope. So, you are feeding in a reference to an object, which is a memory address, and because it is a copy of the original, Java becomes “pass by value.” Intuitively you would assume that passing in a reference somehow cannot be considered “pass by value” since it is called a reference. Definitions like this are part of the reason so many people are intimidated by coding. In my computer science courses, professors have started saying that objects as arguments in java are “pass by reference” because you are passing in their reference. Only way to change the status quo I suppose.
- Dan