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.";
}
blog.csdn.net/joyous/article/details/9372279
Q群讨论:236201801