Pass by Reference for Primitives in Java
Java employs pass by value, unlike C , which utilizes pass by reference. This can create scenarios where modifying a primitive data type (e.g., int, float) in a method doesn't affect its value outside the method.
Consider this Java code:
public class XYZ { public static void main() { int toyNumber = 5; XYZ temp = new XYZ(); temp.play(toyNumber); System.out.println("Toy number in main " + toyNumber); } void play(int toyNumber) { System.out.println("Toy number in play " + toyNumber); toyNumber++; System.out.println("Toy number in play after increment " + toyNumber); } }
This code prints:
Toy number in play 5 Toy number in play after increment 6 Toy number in main 5
The toyNumber variable is not modified outside the play() method because it is passed by value.
Alternatives to Pass by Reference in Java:
To mimic C pass by reference in Java for primitives, several options are available:
1. Public Member Variable:
Create a class with a public member variable for toyNumber, and pass a reference to the class.
class MyToy { public int toyNumber; }
void play(MyToy toy) { System.out.println("Toy number in play " + toy.toyNumber); toy.toyNumber++; System.out.println("Toy number in play after increment " + toy.toyNumber); }
2. Return Value:
Instead of pass by reference, return the modified value from the method.
int play(int toyNumber) { System.out.println("Toy number in play " + toyNumber); toyNumber++; System.out.println("Toy number in play after increment " + toyNumber); return toyNumber; }
In the main method, update toyNumber using the returned value.
3. Class/Static Variable:
If the play() and main() methods are part of the same class, convert toyNumber to a class member variable.
4. Array of One Element:
This is a hack but entails passing a single-element array and modifying its value.
void play(int[] toyNumber) { System.out.println("Toy number in play " + toyNumber[0]); toyNumber[0]++; System.out.println("Toy number in play after increment " + toyNumber[0]); }
The above is the detailed content of Does Java Pass Primitives by Reference?. For more information, please follow other related articles on the PHP Chinese website!