public class PassTest{ float ptValue;
public void changeInt(int value) //基本类型
{
value=55;
} public void changeStr(String value)//引用类型
{
value= new String("differernt");
} public void changeObjValue(PassTest ref) //引用类型
{
ref.ptValue=99.0f;
} public static void main(String argsp[])
{
String str;
int val;
PassTest pt=new PassTest();
val=11;
pt.changeInt(val);
System.out.println("Int value is:"+val);//这个结果我知道
//2
str=new String("hello"); //引用型
pt.changeStr(str);
System.out.println("Str value is:"+str);
//3
pt.ptValue=101.0f; //引用型
pt.changeObjValue(pt);
System.out.println("Pt value is:"+pt.ptValue);
}
}
第2个 str--> hello str-->hello str-->hello
value-->hello value-->different 按照引用性 第3个 pt-->101.0 ptValue pt--->101.1 ptValue pt--->101.1 ptValue
ref-->101.0 ptValue ref-->99.0 ptValue 但是事实上 pt-->101.0 ptValue pt--->99.0 ptValue pt--->99.0 ptValue
ref-->101.0 ptValue ref-->99.0 ptValue
有点不懂 请大家帮忙解答一下
public void changeInt(int value) //基本类型
{
value=55;
} public void changeStr(String value)//引用类型
{
value= new String("differernt");
} public void changeObjValue(PassTest ref) //引用类型
{
ref.ptValue=99.0f;
} public static void main(String argsp[])
{
String str;
int val;
PassTest pt=new PassTest();
val=11;
pt.changeInt(val);
System.out.println("Int value is:"+val);//这个结果我知道
//2
str=new String("hello"); //引用型
pt.changeStr(str);
System.out.println("Str value is:"+str);
//3
pt.ptValue=101.0f; //引用型
pt.changeObjValue(pt);
System.out.println("Pt value is:"+pt.ptValue);
}
}
第2个 str--> hello str-->hello str-->hello
value-->hello value-->different 按照引用性 第3个 pt-->101.0 ptValue pt--->101.1 ptValue pt--->101.1 ptValue
ref-->101.0 ptValue ref-->99.0 ptValue 但是事实上 pt-->101.0 ptValue pt--->99.0 ptValue pt--->99.0 ptValue
ref-->101.0 ptValue ref-->99.0 ptValue
有点不懂 请大家帮忙解答一下
解决方案 »
- 为何这个正则无法匹配?
- 如何去除数组中的空值?
- 关于JAVA_HOME和PATH的设置
- 一个JAVA填色的程序~运行不了~谁能帮我看下问题出在哪啊
- 请各位同行的哥哥姐姐帮帮忙啊!!!!!!!!!!!!!!!!!
- 在java中用jdbc连接数据库,怎么调用存储过程???
- 各位,谁能解释一下什么是JUNIT和HTTPUNIT,高分重谢!!!!急……
- java中如何设置字体的颜色?
- 有没有检查字符串中的内容为数字的方法?例如: “98723291281233”为合法的。
- myeclipse能用软件自带的JDK吗 自带的JDK有BUG吗
- 求教,在linux下调试程序的方法。
- 谁有(java 2入门到精通)的电子书啊!
pt.changeStr(str); --->把str作为参数返回给changStr方法,这时候str是形式参数,你无论怎么改,这个方法执行完了str还是不变,也就是说它的作用域只在方法内部。pt.ptValue=101.0f; --->ptValue是这个类的类变量(或者你理解成全局变量吧)
pt.changeObjValue(pt); --->通过该对象的引用调用类方法修改类的内部变量 所以为了好的软件工程思想 要把ptValue设置成private的 这样你就无法直接给ptValue赋值了 要通过类自己的方法来设置值 也就是不让你pt.ptValue=101.0f; 而让你pt.changeObjValue(pt);
来修改类变量
O(∩_∩)O
http://blog.csdn.net/niuniu20008/archive/2008/09/19/2953785.aspx
2、对于对象类型,也就是Object的子类,假如你在方法中修改了它的成员的值,那个修改是生效的,方法调用结束后,它的成员是新的值,但是假如你把它指向一个其它的对象,方法调用结束后,原来对它的引用并没用指向新的对象。
代码如下:
public class Tester {
public static void main(String[] args) {
int primitive = 2;
changePrimitive(primitive);
//primitive的值依然是2
MyClass myClass = new MyClass();
changeObject(myClass);
//myClass仍然指向的是执行changeObject之前的那个对象
//但是myClass.i等于3了
} public static void changePrimitive(int primitive) {
primitive = 3;
} public static void changeObject(MyClass myClass) {
myClass.i = 3;
myClass = new MyClass();
}
}class MyClass {
int i;
} 对于远程调用,无论是什么类型,调用结束后,传入的参数和以前没用任何变化(当然前途是直接调用远程方法,假如中间经过其它的Proxy类或者Facade类,不能保证那些类对对象没用修改)。至于是通过Local接口进行调用的,也应该属于本地调用,和上面说的情况应该是一致的。