java - Java中如何使用引用?

标签 java reference pass-by-reference

我想在Java中使用引用,但我不知道如何! 例如,在 C++ 中我们这样写:

void sum(int& x)
{
    ...
}

但是在Java中&符号是编译器错误! 请帮助我理解 Java 中的引用文献。

最佳答案

默认情况下,对象通过引用传递 对象通过引用访问,但无法创建对原始值(byte、short、int、长的)。您要么必须创建一个对象来包装整数,要么使用单个元素数组。

public void sum(int[] i){
   i[0] = ...;
}

public void sum(MyInt i){
   i.value = ...;
}
public class MyInt{
   public int value; 
}

对于您的示例,类似以下内容可能有效

public int sum(int v){
   return ...;
}

public int sum(){
   return ...;
}

更新:

对象引用的附加/更好描述:

Java 对象始终通过引用来访问。与原始类型一样,此引用按值传递(例如复制)。由于程序员在 java 中可以访问的所有内容都是通过复制来传递的(引用、基元),并且无法创建对基元类型的引用,因此对方法参数(引用、基元)的任何修改只会影响方法内的本地副本。方法。 可以在方法内修改对象,因为引用的两个副本(本地和其他)仍然指向同一个对象实例。

示例:

修改方法内的原语,这只影响 i 的内部副本,而不影响传递的值。

void primitive(int i){
  i = 0;
}

修改方法内的引用,这只影响 ref 的内部副本,而不影响传递的值。

 void reference(Object ref){
    ref = new Object();//points to new Object() only within this method
 }

修改对象,全局可见

void object(List l){
   l.add(new Object());//modifies the object instead of the reference
}

上面的数组和MyInt都是基于对象的修改。

关于java - Java中如何使用引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4712798/

相关文章:

java - 如何 append 到整数

c++ - 编译错误 : Function Parameters using Object References are Confused by Constructed Objects

c++ - 对指针和常量兼容性的引用

Java for 循环 : compare rows and sum match

java - Prince 类型中的方法 Encrypt(long, long, long, long, int) 不适用于参数 (String, long, long, long, int)

c# - 将对象的引用传递给新线程

C++ 没有已知参数 1 从 ‘Node*’ 到 ‘Node*&’ 的转换

c++ - 使用 const 引用延长临时对象的生命周期

java - Spring Mvc java.io.FileNotFoundException - ApplicationContext.xml

java - 在另一个项目 Eclipse 中引用项目的输出 JAR