可以这样嘛,说的好让人费解呀
是这个意思吗?
pulic string getName(string name){
name = "def";
return name;
}
string name = getName("abc");
是这个意思吗?
pulic string getName(string name){
name = "def";
return name;
}
string name = getName("abc");
你这样做应该可以解决:
String strName = new String("abc");
String strValue = getName(strName);
如:
String strName = new String("abc");
getName(strName); // 函数中将strName赋值为"def"
System.out.println(strName);
结果是
打印出"def"
该如何做呢
public String strName;
}
class TestStr{ void getName(StrWrapper s){
s.strName=new String("def");
}
public static void main(String []ars){
TestStr ts=new TestStr();
StrWrapper wrap=new StrWrapper();
ts.getName(wrap);
System.out.println(wrap.strName);
}
}
如果你的运用不那么复杂的话,在你写得此函数的文件中定义成员变量,
将你的java函数如editName(String name)(我认为你的函数命名不合适吧!)
一个简单的例子,是不是和你的想法一致?class A
{
private String aName = new String("");
public A(String name)
{
this.aName = name;
}
public void setName(String newname)
{
this.aName = newname;
}
public String getName()
{
return this.aName;
}
public void editName(String name)
{
name = + "haha";
}
}main()
{
String name = "name";
A a = new A(name) ;
a.edit(name);
System.out.printLn("\n"+name); //namehaha
}
//--------------------------------
void change(int *pp)
{
*pp=20;//now a==20
int b=5;
pp=&b;//now a==20
}
int a=10;
int *p=&a;
//---invoke function---
chage(p);在这里我们注意了,
1#我们通过指针可以改变指针的指向。我们使得函数中的pp指向b
2#同时也可以改变指针指向的内容。我们改变了pp指向的内容a==20,而a 原来是
a==10但是我们不能改变指针本身,就是说我们传递p给函数的,但是我们并没有改变p的指向,也就是函数后,p还是指向a的。要想改变我们只有通过指针的指针或者是指针的引用来实现的。//--------------------
在JAVA中
//--------------------
函数不管是传递值还是传递址,实际上我们都不能直接做到上面2#这个也就是说明了java中对于传递址只是简单的传递引用而已,他的作用已经被打了折扣的。在函数调用中,我们只能使用object.method的样式来对对象进行改动的。如果我们采用object=new classtype()的话,只是改变引用指向新的对象而不是使得引用原来指向的对象被替换的。这个在java 中很重要的。
lancelot_yao(电子骑士) 用传址的方式
如:
String strName = new String("abc");
getName(strName); // 函数中将strName赋值为"def"
System.out.println(strName);
结果是
打印出"def"
该如何做呢
--------------------------------------------------------------遗憾的告诉你,这个 strName 是不会变的。
无论你在函数中 getName() 如何对待 strName,
在函数外的部分中,strName 是不变的。
lancelot_yao(电子骑士)
用传址的方式
如:
String strName = new String("abc");
getName(strName); // 函数中将strName赋值为"def"
System.out.println(strName);
结果是
打印出"def"
该如何做呢
===============================================================遗憾的告诉你,这是不可能的,无论你在getName 中对strName 如何操作,
strName在主程序中始终是不变的。
不要说不行,我已经验证过了。
public static void getName(byte[] pByte)
{
int iNormalLen = pByte.length;
pByte[0] = 'o';
pByte[1] = 'o';
pByte[2] = 'o';}
public static void main(String[] args)
{
Frame2 frame2 = new Frame2();
String s = "abe";
byte[] b = s.getBytes();
frame2.getName(b);
String s2 = new String(b);
System.out.println(s2);
}
如:
class Test {
public static void main(String args[]) {
String[] old = {"Old String"};
new Test().fun(old);
System.out.println(old[0]);
} void fun(String[] name){
name[0]="New String";
}
}
1:String 类是不可改变的,你不能改变其中的内容。
任何对其进行的操作其结果都将是生成一个新的String对象。
2:Java中都是值传递。
所以,来看你的这个问题就很简单了。只要定义一个String ,
然后在方法中将这个新定义的String 类的索引指向新的字符串即可!