现在的位置: 首页 > 综合 > 正文

Java 函数的参数引用,通过传入参数带回函数运行结果

2013年09月30日 ⁄ 综合 ⁄ 共 1156字 ⁄ 字号 评论关闭

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.";
  }

 

 

抱歉!评论已关闭.