首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

引用变量的指向可以是多个吗解决思路

2014-04-28 
引用变量的指向可以是多个吗在父类对象调用成员方法中改变成员变量(引用变量的指向)后,是一个引用变量可以

引用变量的指向可以是多个吗
在父类对象调用成员方法中改变成员变量(引用变量的指向)后,是一个引用变量可以同时指向两个地址吗




public class Test {
String name="Tom";
public Test(String name){
name=name;
}
public static void main(String [] args){
Test t = new Test("Jack");
System.out.println(t.name);
}
}
A. null
B. Tom
C. Jack
D. " "
正确答案:B

[解决办法]
先教如何贴代码:


String str = "abc";

第一个问题:一个引用只能指向一个对象,一个对象可以被多个引用指向。
第二个问题:在构造方法中:name=name并没过改变Test的name值,如果是this.name=name就可以了
[解决办法]
一个变量在同一时间不能指向不同的地址,
在构造函数的参数与成员名同名时,成员名被隐藏,所以你的构造函数相当于什么都没做
除非你改变构造函数的形参名字或使用this.name来访问成员
public class Test {
String name = "Tom";

public Test(String otherName) {
name = otherName;
}

public static void main(String[] args) {
Test t = new Test("Jack");
System.out.println(t.name);
}
}


public class Test {
String name = "Tom";

public Test(String name) {
this.name = name;
}

public static void main(String[] args) {
Test t = new Test("Jack");
System.out.println(t.name);
}
}

[解决办法]
你这没有改变成员变量,Test方法无任何意义。
想改变:
this.name = name;
this指的就是Test自己
[解决办法]
类中定义成员变量说法没问题,
假如你说的是private定义的非静态变量,那么与方法里的定义变量用起来表面没有区别:
1 类变量可以在整个类中用,不用传参数,这就导致一个问题并发性问题,这种变量并发不安全.
2 如果要定义类变量,最好是不可改变的常数,这样就不会有并发问题.
3 如果不想导致并发问题,把变量定义在方法里就好了(当然会失去细微的性能,但在上百万次/分调用中不影响).
4 只要肯定不会有并发性问题,随你自己怎么定义.

[解决办法]
另外,类变量可以与方法中的变量同名,如果用不用this区分,java默认是先用方法中同名变量.

热点排行