黑马程序员技术交流社区
标题:
对象和方法的调用
[打印本页]
作者:
杨千里
时间:
2012-9-15 01:51
标题:
对象和方法的调用
本帖最后由 杨千里 于 2012-9-15 13:20 编辑
public class Example{
String str=new String("good");
char[] ch = {'a','b','c'};
public void change(String str,char ch[])
{
str="test ok";
ch[0]='g';
}
public static void main(String args[])
{
Example ex=new Example();
ex.change(ex.str,ex.ch); //
调用change()方法
System.out.print(ex.str+" and ");
Sytem.out.print(ex.ch);
}
}
结果不应该是 test ok and gbc 吗? 但为什么结果是good and gbc ? 搞了半天弄 不明白,请解释 谢谢
作者:
王得新
时间:
2012-9-15 10:51
public class Example{
String str=new String("good");
char[] ch = {'a','b','c'};
public void change(String str,char ch[])
{
this.str="test ok";
//这样就行了,this.str调用的是外面的str,这里是把外面的引用str,指向了“test ok”
//str=“test ok”;这里的str 是change(String str,char ch[]))函数中的str,是形参,只是在函数里有用,出了函数就拜拜了
ch[0]='g';
}
public static void main(String args[])
{
Example ex=new Example();
ex.change(ex.str,ex.ch); //调用change()方法
System.out.print(ex.str+" and ");
System.out.print(ex.ch);
}
}
作者:
田旭阳
时间:
2012-9-15 11:23
你没理解成员变量和局部变量。
作用范围。
成员变量作用于整个类中。
局部变量变量作用于函数中,或者语句中。
在内存中的位置:
成员变量:在堆内存中,因为对象的存在,才在内存中存在。
局部变量:存在this:看上去,是用于区分局部变量和成员变量同名情况。
this:是用于区分局部变量和成员变量同名情况。
this代表它所在函数所属对象的引用。
简单说:哪个对象在调用this所在的函数,this就代表哪个对象。
this的应用:当定义类中功能时,该函数内部要用到调用该函数的对象时,这时用this来表示这个对象。
但凡本类功能内部使用了了本类对象,都用this表示。存在于栈内存中。
public class Example{
String str=new String("good");
// 成员变量,
作用于整个类Example
char[] ch = {'a','b','c'};
public void change(String str,char ch[])
{
str="test ok";
//局部变量与成员变量相同时改为 this.str="test ok";因为
this代表它所在函数所属对象的引用
ch[0]='g';
}
public static void main(String args[])
{
Example ex=new Example();
ex.change(ex.str,ex.ch); //
调用change()方法
System.out.print(ex.str+" and ");
Sytem.out.print(ex.ch);
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2