Java类函数不能正常工作

时间:2014-11-14 15:13:16

标签: java android class

我的java类有一些非常疯狂的问题。代码将解释它:

这是我的班级:

public class myclass
{
    public int myint;
    public String mystring;

    public myclass()
    {
        myint = 0;
        mystring = "Test";
    }

    public void setStringInt(String s)
    {
        s = String.valueOf(myint);
    }

    public void somefunc()
    {
        setStringInt(mystring);
    }
}

这是MainActivity的一部分:

//...
public myclass thisismyclass;
public String  mysecondstring;
//...
thisismyclass = new myclass();
thisismyclass.myint = 5;
thisismyclass.somefunc();
//...

thisismyclass.mystring的输出是"测试"。为什么代码没有将它设置为" 5"? 我试了一下。这有效:

//...
    thisismyclass.myint = 5;
    thisismyclass.setStringInt(thisismyclass.mystring);
//...

但为什么其他代码不起作用?

MFG lolxdfly


编辑:对不起..我写错了..我的代码是mystring!

5 个答案:

答案 0 :(得分:2)

s = String.valueOf(myint);内的{p> setStringInt 会更改来电者的字符串值。

这是因为字符串引用与值一起传递,所有Java函数参数都是如此。

答案 1 :(得分:0)

除了构造函数之外,您没有将mystring值设置在任何位置。你的意思是写这个:

public void setStringInt(String s)
{
    mystring = String.valueOf(myint);
}

答案 2 :(得分:0)

Java按值传递参数。

当您将该String引用传递给setStringInt并尝试将其设置为等于int状态的String值时,您无法更改传入的引用。字符串是不可变的,因此您无法获得所需的内容。 / p>

你的逻辑很复杂。我不知道你想在这做什么。但这是我最好的猜测:

public class MyClass
{
    public int myint;
    public String mystring;

    public MyClass()
    {
        myint = 0;
        mystring = "Test";
    }

    public void setStringInt(String s)
    {
        this.myint = Integer.valueOf(s);
        this.mystring = s;
    }

    public void setStringInt(int i) {
        this.myint = i;
        this.mystring = Integer.parseInt(i);
    }

    public void somefunc()
    {
        setStringInt(myint);
    }
}

答案 3 :(得分:0)

你应该纠正这个:

public void somefunc()
{
    setStringInt(mystring);
}

但如上所述,这些方法使用按值调用而不是通过引用调用,因此您不会更改调用者变量。

答案 4 :(得分:0)

更新以下方法

public void setStringInt(String s)     {         s = String.valueOf(myint);     }

如下

public void setStringInt(String s)     {         mystring = String.valueOf(myint);     }