Java类功能不能正常工作
问题描述:
我有一些非常疯狂的问题与我的java类。该代码将explan它: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!
答
更新您的以下方法
公共无效setStringInt(字符串或多个) { S =将String.valueOf(敏); }
如下
公共无效setStringInt(字符串或多个) { 了mystring =将String.valueOf(敏); }
答
除了在构造函数中,您并未将值设置为mystring
。您是不是要这样写:
public void setStringInt(String s)
{
mystring = String.valueOf(myint);
}
答
s = String.valueOf(myint);
内setStringInt
不不变化呼叫者的字符串值。
这是因为与所有Java函数参数一样,字符串引用以的值传递。
答
Java按值传递参数。
当您将该String引用传递给setStringInt并尝试将其设置为等于int状态的String值时,您无法更改传入的引用。字符串是不可变的,因此您不会获得所需内容。
你的逻辑是相当复杂的。我无法说出你想在这里做什么。但这里是我最好的猜测:
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);
}
}
答
你应该纠正这种给:
public void somefunc()
{
setStringInt(mystring);
}
但正如上面提到这些方法使用的呼叫按值不是引用调用,因此你会不会改变来电变量。
S应该是myString在setter函数中 – cYrixmorten 2014-11-14 15:16:30
'This works:'我怀疑它。 'setStringInt'几乎不做任何事情。 – njzk2 2014-11-14 15:23:15