类似于以下内容:
参考示例:
void changeString(ref String str) {
str = "def";
}
void main() {
String abc = "abc";
changeString(ref abc);
System.out.println(abc); //prints "def"
}
Run Code Online (Sandbox Code Playgroud)
例子:
void changeString(out String str) {
str = "def";
}
void main() {
String abc;
changeString(out abc);
System.out.println(abc); //prints "def"
}
Run Code Online (Sandbox Code Playgroud) 这是我无法分辨的事情我很惊讶它不会起作用,但无论如何我找到这个案例的解释很有意思.想象一下,我们有一个对象:
SomeClass someClass = null;
Run Code Online (Sandbox Code Playgroud)
并且该方法将此对象作为参数来初始化它:
public void initialize(SomeClass someClass) {
someClass = new SomeClass();
}
Run Code Online (Sandbox Code Playgroud)
然后我们打电话:
initialize(someClass);
System.out.println("" + someClass);
Run Code Online (Sandbox Code Playgroud)
它将打印:
null
Run Code Online (Sandbox Code Playgroud)
谢谢你的回答!
我是java/android的新手.我是ac/c ++开发人员.我可以知道如何在android中传递引用作为参数.示例c示例代码如下所示
void main()
{
int no1 = 3, no2 = 2, sum = 0;
findsum( no1, no2, sum );
printf("sum=%d", sum );
}
void findsum( int no1, int no2, int& sum )
{
sum = no1 + no2;
}
Run Code Online (Sandbox Code Playgroud)
请给我一个解决方案
谢谢
我想问一个非常简单的问题.我只是将一个String对象传递给一个函数,但结果很奇怪.我认为因为我传递一个对象(通过引用),结果应该是"Here"而不是"Hello".为什么会这样?
public class MainStr
{
/**
* @param args
*/
public static void main(String[] args)
{
String str = "Hello!";
System.out.println(str);
changeString(str);
System.out.println(str);
}
static void changeString(String str)
{
str=" HERE";
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
编辑:
public class MainStr
{
String str;
/**
* @param args
*/
public static void main(String[] args)
{
MainStr ms = new MainStr();
ms.str = "Hello!";
System.out.println(ms.str);
changeString(ms);
System.out.println(ms.str);
}
static void changeString(MainStr ms)
{
ms.str=" HERE";
}
}
Run Code Online (Sandbox Code Playgroud)
如果是这种情况,那么为什么我在包装器对象中传递它是有效的?包装器对象不是通过引用?
PS:为什么这样做?String是一个对象.为什么我需要另一个包装器Object来更改OBJECT!如果我想通过引用传递内容怎么办?那可能吗?
我有一个关于将数组从一个方法返回到main的问题.这是严重开始惹恼我,我不能围绕这个包裹我的大脑.好像即使我在我的方法中更改了数组,当我在main中显示它时它会显示旧数组.我正在尝试删除我的数组中的重复数字,我知道它有效,因为我已经在调试器中逐步完成它但在我返回它并返回main之后,它再次显示整个数组!我知道我在这里失踪一定很容易.有人可以指点我正确的方向吗?这是我的代码......
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int[] numbers = new int[10];
System.out.print("Enter 10 numbers: ");
for (int x = 0; x < numbers.length; ++x)
numbers[x] = input.nextInt();
eliminateDuplicates(numbers);
for (int y = 0; y < numbers.length; ++y)
System.out.print(numbers[y] + " ");
}
public static int[] eliminateDuplicates(int[] numbers) {
int[] temp = new int[numbers.length];
int size = 0;
boolean found = false;
for (int x = 0; x < numbers.length; ++x) {
for (int y …Run Code Online (Sandbox Code Playgroud)