Java没有指针,在需要由参数直接带回结果的情况下,较C语言相比有一些区别,C语言中任何类型可通过指针传递,在Java中,需要自定义一个类(标准类型不能带回参数),而这个自定义类可以通过函数的参数返回结果,达到类似C指针的效果。
public class testParameter { public testParameter() { } public static void main(String[] args) { // 函数传入标准类型参数,测试引用 // ------------------------------------------- Integer a = 0; Integer b = 0; // 引用不能 getValue(a, b); // 未得到期望结果 System.out.println(a); System.out.println(b); // 函数传入自定义类参数,测试引用 // ------------------------------------------- MyValue value = new MyValue(); value.a = 0; value.b = 0; // 引用有效 getValue(value); // 得到期望结果 System.out.println(value.a); System.out.println(value.b); } // 参数为自定义类 private static void getValue(MyValue v) { v.a = 24; v.b = 57; } // 参数为标准类型 private static void getValue(Integer a, Integer b) { a = 17; b = 37; } } // 自定义类 class MyValue { // 变量初始化 public int a = 0; public int b = 0; }
getValue(MyValue) 的参数在函数内赋值后依然通过类将结果带出,类中的变量发生了变化。
getValue(Integer, Integer) 的参数在函数内虽然发生了改变,但函数返回后,传入的参数未发生变化,其次 String 类型也不能将结果通过参数带回,只有通过 new 创建的对象才行。
字符串的话,可以使用 String[] 作为参数传入,也可以带回函数内的运行结果
public static void main(String[] args) { try { String[] str = new String[1]; str[0] = ""; Test2(str); // 将显示 Test2 的赋值出结果 System.out.print(str[0]); } catch (Exception e) { e.printStackTrace(); } } private static void Test2(String[] str) throws Exception { str[0] = "hello world."; }