Tag: 传递引用

你能通过Java引用吗?

很抱歉,如果这听起来像一个新手问题,但前几天Java开发人员提到通过引用传递一个参数(通过引用传递一个参考对象) 从C#的角度来看,我可以通过值或引用传递引用类型,这也适用于值类型 我写了一个noddie控制台应用程序来显示我的意思..我可以用Java做到这一点吗? namespace ByRefByVal { class Program { static void Main(string[] args) { //Creating of the object Person p1 = new Person(); p1.Name = “Dave”; PrintIfObjectIsNull(p1); //should not be null //A copy of the Reference is made and sent to the method PrintUserNameByValue(p1); PrintIfObjectIsNull(p1); //the actual reference is passed to the method PrintUserNameByRef(ref p1); […]

如何在Java中使用引用?

我想在Java中使用引用,但我不知道如何! 例如在C ++中我们写道: void sum(int& x) { … } 但在Java和sign中是一个编译器错误! 请帮我理解Java中的参考资料。

我可以通过Java中的引用传递原始类型吗?

我想调用一个可能采用不同版本的方法,即类型为输入参数的相同方法: 布尔 字节 短 INT 长 我想这样做的方法是“重载”方法(我认为这是正确的术语?): public void getValue(byte theByte) {…} public void getValue(short theShort) {…} … etc … …但这意味着我必须通过引用传递原始类型…类似于C ++,其中方法具有外部效果,它可以在其范围之外修改变量。 有没有办法在不创建新类或使用原始类型的Object版本的情况下执行此操作? 如果没有,有关替代战略的任何建议吗? 让我知道是否应该进一步解释清除任何混淆。 UPDATE 我实际上要做的是从一组位构造基本类型。 因此,如果我正在处理方法的字节版本,我希望我的工作能够得到8位并返回字节(因为我无法通过引用传递)。 我问这个问题的原因是因为我用bit做的工作是非常重复的,我不想在不同的方法中使用相同的代码。 所以我想找到一种方法让我的ONE方法知道我正在谈论多少位…如果我正在使用一个字节,那么8位,如果我正在处理一个短的16位等等…

数组似乎是通过Java引用传递的,这怎么可能?

如果需要,我可以发布更多代码,但在此之前我想问一个关于下面传递数组的方法的一般问题,然后设置为另一个数组,但由于某种原因原始数组,一个被传入,也正在改变,这怎么可能/我该怎么办? 谢谢 tempBoard是一个与currentState大小相同的数组,temp [k]包含在movePiece中进行的更改,当前状态在方法中声明,而不是全局变量 private int[][] MiniMaxBaseCase(int[][] currentState, int currentColor) { tempBoard = movePiece(currentState,temp[k]); } private int[][] movePiece(int[][] currentState, int[] move) { if(move[0] == -1) return currentState; //if the piece is just moving if(move[4] == -1) { currentState[move[2]][move[3]] = currentState[move[0]][move[1]]; currentState[move[0]][move[1]] = 0; return currentState; } //if the piece is jumping another if(move[4] != -1) […]

在RMI中通过引用问题?

有人可以告诉我,为什么这个RMI聊天应用程序无法正常工作,我的目标是通过远程对象或序列化对象实现客户端,服务器和逻辑之间的分离。 import javax.swing.*; import java.awt.event.*; import java.rmi.*; import java.rmi.server.*; public class ChatClient1 implements ICallback { JFrame frame = new JFrame(“Chat Client”); private JTextArea myText; private static JTextArea TAUinDispMsg; private JScrollPane myTextScroll; private JScrollPane TAUinDispMsgScroll; private String textString = “”; private boolean firstMessage = true; private static String name = null; private static final int HOR_SIZE […]

Java方法不会更改参数对象

我有这样的function: public static int partition(List list, ListElement elemL, ListElement elemR){ ListElement elemX; … elemR = elemX.next; return x; } 并且在funktion结束时elemR被更改,但是在从main方法调用函数之后,参数elemR仍然具有与函数调用之前相同的值。 有什么问题? 如何在调用函数后更改此ListElement并“保存”此更改,而不将返回类型更改为ListElement(我也需要整数返回值)?

Java是通过值传递还是通过引用传递或两者兼而有之?

考虑以下案例。 List listOne = new ArrayList(); List listTwo = new ArrayList(); listOne.add(1);I think this happens due to listOne.add(2); listOne.add(3); Collections.reverse(listOne); listTwo = listOne; //listTwo has same reference Collections.reverse(listOne); System.out.println(listOne); //out put [1, 2, 3] System.out.println(listTwo); // same out put Java is pass by value, where values (for non primitive types) happen to be references. 我认为这为这种情况提供了java的生存。 […]

Java – 方法调用后对象状态不会改变

初学java问题,但我无法理解如下所示的示例中的call-by-Value(或Reference)是如何工作的 – 为什么在我的自定义String对象退出方法后,String值不会被修改。 ? 与Date等其他类相同 public class StringMadness { public static void main(String[] args) { String s = “Native String”; CustomStringObject cs = new CustomStringObject(); System.out.println(“Custom String Before: ” + cs.str); hello(cs); System.out.println(“Custom String After: ” + cs.str); System.out.println(“Native String Before: ” + s); hello(s); System.out.println(“Native String After: ” + s); } private static void […]

困惑,java是否在传递对象引用时使用按值调用或按引用调用?

public class program1{ public static void main(String args[]){ java.util.Vector vc=new java.util.Vector(); vc.add(“111”); vc.add(“222”); functioncall(vc); vc.add(“333”); System.out.println(vc); } public static void functioncall(java.util.Vector vc){ vc=null; } } 上述程序的输出为[111,222,333]。 但是,当我运行以下程序时,输出为[333]。 当我们传递引用时会感到困惑,无论是按值调用还是按引用调用,它是如何工作的? 为什么 public class program1{ public static void main(String args[]){ java.util.Vector vc=new java.util.Vector(); vc.add(“111”); vc.add(“222”); functioncall(vc); vc.add(“333”); System.out.println(vc); } public static void functioncall(java.util.Vector vc){ vc.removeAllElements(); } }

有人可以向我解释在Java中传递“值”而不是“引用”背后的原因是什么?

我是Java的新手(多年来一直在写其他东西),除非我遗漏了一些东西(我很高兴在这里错了)以下是一个致命的缺陷…… String foo = new String(); thisDoesntWork(foo); System.out.println(foo);//this prints nothing public static void thisDoesntWork(String foo){ foo = “howdy”; } 现在,我很清楚(相当差的措辞)概念,在java中,一切都是通过“值”传递而不是“引用”,但String是一个对象,有各种各样的花里胡哨,所以,人们会期待与int不同,用户可以对传递给方法的东西进行操作(并且不会被overloaded =设置的值所困)。 有人可以向我解释这个设计选择背后的原因是什么? 正如我所说,我不是想在这里,也许我错过了一些明显的东西?