打扰下 java 基础 题 谢谢
publicclassLamp{booleanisOpen=false;//publicvoidopen(Lampl){l.isOpen=true;//我感觉这已经都是t...
public class Lamp {
boolean isOpen=false; //
public void open(Lamp l){
l.isOpen=true;//我感觉 这已经都是true了,那第一个输出 不应该为true吗?
}
}
-----------
public class Test1 {
public static void main(String[] args) {
Lamp l=new Lamp();
System.out.println(l.isOpen);//false
Lamp l2=new Lamp();
l2.isOpen=true;
l.open(l2);
System.out.println(l.isOpen);//false
}
}
----------------
结果 都为false 自己没反应过来。 展开
boolean isOpen=false; //
public void open(Lamp l){
l.isOpen=true;//我感觉 这已经都是true了,那第一个输出 不应该为true吗?
}
}
-----------
public class Test1 {
public static void main(String[] args) {
Lamp l=new Lamp();
System.out.println(l.isOpen);//false
Lamp l2=new Lamp();
l2.isOpen=true;
l.open(l2);
System.out.println(l.isOpen);//false
}
}
----------------
结果 都为false 自己没反应过来。 展开
展开全部
首先你的代码你已经理解乱了,我把每行代码的意思给你说说,然后在体会一下看看能不能OK
public void open(Lamp l){...........这个方法是你传入一个对象l(Lamp)
l.isOpen=true..............................这行代码是把你传入的对象l的isOpen属性设置为true
}
--------------
Lamp l=new Lamp();
System.out.println(l.isOpen);//false................输出false,因为你声明的这个l没有执行open方法,就是说这个l对象没有经过open方法的步骤,你看对不对
Lamp l2=new Lamp();
l2.isOpen=true;.................这里你把再次声明的l2对象的属性设置为true,
所以l2.isOpen的值为true
l.open(l2);.........................这里你友用l对象调用open方法,但传进去的参数是l2
所以你是给l2的isOpen设置为true了,l2被设置了
System.out.println(l.isOpen);//false...............你输出的是l 对象的isOpen,
这个l对象 自 至终都没有辈open方法同化过
}
public void open(Lamp l){...........这个方法是你传入一个对象l(Lamp)
l.isOpen=true..............................这行代码是把你传入的对象l的isOpen属性设置为true
}
--------------
Lamp l=new Lamp();
System.out.println(l.isOpen);//false................输出false,因为你声明的这个l没有执行open方法,就是说这个l对象没有经过open方法的步骤,你看对不对
Lamp l2=new Lamp();
l2.isOpen=true;.................这里你把再次声明的l2对象的属性设置为true,
所以l2.isOpen的值为true
l.open(l2);.........................这里你友用l对象调用open方法,但传进去的参数是l2
所以你是给l2的isOpen设置为true了,l2被设置了
System.out.println(l.isOpen);//false...............你输出的是l 对象的isOpen,
这个l对象 自 至终都没有辈open方法同化过
}
展开全部
public class Lamp {
boolean isOpen=false; //
public void open(Lamp l){
l.isOpen=true;//我感觉 这已经都是true了,那第一个输出 不应该为true吗?
}
}
-----------
public class Test1 {
public static void main(String[] args) {
Lamp l=new Lamp();
System.out.println(l.isOpen);//false
Lamp l2=new Lamp();
l2.isOpen=true;
l.open(l2);//这里运行过后 l2.isOpen == true 了,但l.isOpen 没有改变
System.out.println(l.isOpen);//false
}
}
boolean isOpen=false; //
public void open(Lamp l){
l.isOpen=true;//我感觉 这已经都是true了,那第一个输出 不应该为true吗?
}
}
-----------
public class Test1 {
public static void main(String[] args) {
Lamp l=new Lamp();
System.out.println(l.isOpen);//false
Lamp l2=new Lamp();
l2.isOpen=true;
l.open(l2);//这里运行过后 l2.isOpen == true 了,但l.isOpen 没有改变
System.out.println(l.isOpen);//false
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个问题没反应过来是因为你没有看到java对象的传递方式(值传递和引用传递),open方法传递的是对象的引用,所以你I对象虽然调用了open方法,但你传递的参数是I2对象,改变了I2对象的isOpen的值,I对象的isOpen并没有变化。
public class Test1 {
public static void main(String[] args) {
Lamp l=new Lamp();
System.out.println(l.isOpen);//这里输出的是对象I的isOpen的值
Lamp l2=new Lamp();
l2.isOpen=true;
l.open(l2);//这里你传入的对象是I2,所以I2的isOpen被更改为true,I对象的isOpen没变化
System.out.println(l.isOpen);//I对象的isOpen没变化,所以还是false.
}
}
public class Test1 {
public static void main(String[] args) {
Lamp l=new Lamp();
System.out.println(l.isOpen);//这里输出的是对象I的isOpen的值
Lamp l2=new Lamp();
l2.isOpen=true;
l.open(l2);//这里你传入的对象是I2,所以I2的isOpen被更改为true,I对象的isOpen没变化
System.out.println(l.isOpen);//I对象的isOpen没变化,所以还是false.
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我自己得看法是当然是打印false了 你看你调用那个isopen 你初始化赋得就是false 但不打印就是这个值了撒 你在那个open方法体里面又重新赋值为true但他没有执行这个open里面得方法所以打印得就是false 如果你执行了在打印得话就是true
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
open改变的是参数的isOpen,你用 l.open(l2);只能改变l2的isOpen..
System.out.println(l.isOpen);//false
这个l的isOpen肯定还是false嘛
System.out.println(l.isOpen);//false
这个l的isOpen肯定还是false嘛
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-12-31
展开全部
下面的解答都是可以吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询