Java 中基元的按引用传递
Java 采用按值传递,与 C 不同,后者使用按引用传递。这可以创建这样的场景:在方法中修改基本数据类型(例如 int、float)不会影响其在方法外部的值。
考虑以下 Java 代码:
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); } }
此代码打印:
Toy number in play 5 Toy number in play after increment 6 Toy number in main 5
toyNumber 变量在 play() 方法之外不会被修改,因为它是按值传递的。
Java 中按引用传递的替代方法:
要模仿 C 在 Java 中通过引用传递原语,可以使用以下几个选项:
1。公共成员变量:
使用 toyNumber 的公共成员变量创建一个类,并传递对该类的引用。
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.返回值:
不是通过引用传递,而是从方法中返回修改后的值。
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; }
在 main 方法中,使用返回值更新 toyNumber。
3。类/静态变量:
如果 play() 和 main() 方法属于同一类,则将 toyNumber 转换为类成员变量。
4.一个元素的数组:
这是一种 hack,但需要传递一个单元素数组并修改其值。
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]); }
以上是Java 是否通过引用传递原语?的详细内容。更多信息请关注PHP中文网其他相关文章!