关于变量的作用域04想要改变一个对象属性的正确方法
2010-05-05 22:09
309 查看
package Quote;
class BirthDate {
private int day;
private int month;
private int year;
public BirthDate(int d, int m, int y) {
day = d;
month = m;
year = y;
}
public void setDay(int d) {
day = d;
}
public void setMonth(int m) {
month = m;
}
public void setYear(int y) {
year = y;
}
public int getDay() {
return day;
}
public int getMonth() {
return month;
}
public int getYear() {
return year;
}
public void display() {
System.out.println
(day + " - " + month + " - " + year);
}
}
public class BithdayVariable{
public static void main(String args[]){
BithdayVariable test = new BithdayVariable();
int date = 9;
BirthDate d1= new BirthDate(7,7,1970);
BirthDate d2= new BirthDate(1,1,2000);
test.change1(date);
//这个形参date也是stack 中的局部变量
//调用方法的时候,将date的值传递给 stack中的局部变量i i=9 操作的是一个副本
//之后i变成1234 ; 方法调用完成之后局部变量i消失
//方法白调用了
test.change2(d1);
//这个d1 也是stack 中的局部变量 指向heap中 new 出来的一个对象
//方法的局部变量形参b 也指向 d1指向的对象
//之后呢 b 不指向原来那对象了 而指向new出来的那个新对象
//方法调用完了, 局部变量b消失 指向的new出来的那个对象也消失
//方法白调用了
test.change3(d2);
//改变了 对象中的值
System.out.println("date=" + date);
d1.display();
d2.display();
}
public void change1(int i){
i = 1234;
}
public void change2(BirthDate b) {
b = new BirthDate(22,2,2004);
}
public void change3(BirthDate b) {
b.setDay(22);
}
}
class BirthDate {
private int day;
private int month;
private int year;
public BirthDate(int d, int m, int y) {
day = d;
month = m;
year = y;
}
public void setDay(int d) {
day = d;
}
public void setMonth(int m) {
month = m;
}
public void setYear(int y) {
year = y;
}
public int getDay() {
return day;
}
public int getMonth() {
return month;
}
public int getYear() {
return year;
}
public void display() {
System.out.println
(day + " - " + month + " - " + year);
}
}
public class BithdayVariable{
public static void main(String args[]){
BithdayVariable test = new BithdayVariable();
int date = 9;
BirthDate d1= new BirthDate(7,7,1970);
BirthDate d2= new BirthDate(1,1,2000);
test.change1(date);
//这个形参date也是stack 中的局部变量
//调用方法的时候,将date的值传递给 stack中的局部变量i i=9 操作的是一个副本
//之后i变成1234 ; 方法调用完成之后局部变量i消失
//方法白调用了
test.change2(d1);
//这个d1 也是stack 中的局部变量 指向heap中 new 出来的一个对象
//方法的局部变量形参b 也指向 d1指向的对象
//之后呢 b 不指向原来那对象了 而指向new出来的那个新对象
//方法调用完了, 局部变量b消失 指向的new出来的那个对象也消失
//方法白调用了
test.change3(d2);
//改变了 对象中的值
System.out.println("date=" + date);
d1.display();
d2.display();
}
public void change1(int i){
i = 1234;
}
public void change2(BirthDate b) {
b = new BirthDate(22,2,2004);
}
public void change3(BirthDate b) {
b.setDay(22);
}
}
相关文章推荐
- Thin的DateChooser代码学习(关于js的函数参数为一个完整的函数以及“对象不支持此属性或方法”错误的解决)(原创,转载请声明)
- 当一个对象被当做参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- 关于form使用form.submit()提交的一个问题,提示form.submit不是对象的方法属性
- Java - 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- java面试题解惑:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- java面试题:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- 写一个方法进行各种属性的更新,而不要每个界面设置改变都改变一个属性。就是点击应用或确定按钮时调用这个更新属性的方法,遍历所有(控制对象属性的)界面控件的状态(值),进行属性修改和刷新。
- Javascript打印一个对象中所有属性和方法
- 关于submit() 对象不支持此属性或方法的解决方法
- 面向对象的编程:关于对象的 属性、方法和事件 的理解
- 如何在PowerShell中得到一个对象的所有属性名和方法名呢?
- JAVA学习中,一个关于Object对象转换时对应方法的问题
- JS获得一个对象的所有属性和方法
- 程序的五大基本要素:对象,属性,变量,方法,事件
- 给一个自定义对象添加属性和方法
- 【Objective-C】04-OC对象成员变量的封装规范:get方法和set方法