JAVA程序设计_ 类与对象_
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
} }
值增至3倍
运行结果: Before:percent=10 End of method:x=30 After :percent=10
引用传递 示例
public class TestR { static void called(Person x) { x.raiseSalary(200); } public static void main(String[] args) { Person harry = new Person(); harry.salary = 5000; System.out.println(harry.salary); called(harry); System.out.println(harry.salary); }
返回值类型 方法名 (参数表) {
…//方法体 }
//方法声明
其中,方法的返回值 类型、方 法名和参 数表共同 称之为方法 的特征。
实例变量和局部变量
Java中的变量分为:
类内定义的实例变量和类变量(或称为静态变 量)
方法中定义的局部变量(包括形式参数)。
同一个作用域内,不允许定义两个同名的 局部变量。
6
class Loc { int x=1;
// 实例变量
void printA( ){
int x=25;
// 局部变量
System.out.println("printA1: x is "+x);
++x; System.out.println("printA2: x is "+x);
}
void printB( ){
是变量的引用,称为“引用传递”。Java的引用 型数据包括对象、数组和接口。
值传递 示例
public class TestV { public static void main(String[] args) { int percent = 10; System.out.println("Before:percent
同一个作用域内,两者同名时,局部变量 掩盖实例变量。
5
实例变量和局部变量
实例变量与局部变量的主要区别:
变量定义位置 生存期:实例变量属于对象,它描述了对象的属性,
随着对象的存在而存在;局部变量是随着方法的调用 而存在,一旦方法调用结束,局部变量也就消亡了。 作用域:成员变量在整个类内都有效,其有效性与它 在类体中书写的先后位置无关。局部变量只在定义它 的方法内有效。 默认值:成员变量在定义时有默认值。局部变量在定 义时没有默认值,必须显式赋值。
类与对象2
模块导航
实例成员
实例方法 实例变量与局部变量
方法的参数传递
值传递 引用传递
方法
方法是一个功能模块,类似C中的函数; 方法和实例变量都必须定义在类内,方法
是类的功能接口 ; 定义方法的原则:方法应当只执行单一的
任务,并且方法名能有效地表达该任务.
方法
方法的实现包括两部分内容:方法声明和方法体。
方法的形式参数在整个方法内有效。 若局部变量的声明是在一个复合语句中,其有
效范围是该复合语句。 若局部变量的声明是在一个循环语句中,其有
效范围是该循环语句。
局部变量的作用百度文库 示例
public class A { void f() { int m = 10,sum = 0; if(m>9) { int z = 10; //z仅仅在该复合语句中有效 z = 2*m+z; } for(int i=0;i<m;i++) { sum = sum+i; // i 仅仅在该循环语句中有效 } m = sum; //合法,因为m和sum有效 z = i+sum; //非法,因为i和z已无效
System.out.println("printB1: x is "+x);
x*=10;
System.out.println("printB2:x is "+x);
}
}
public class TestVar { public static void main(String[] args) { Loc obj=new Loc( ); int x=5; // 局部变量 System.out.println("main1: x is "+x);
}
}
class Tom {
如果想在该方法中使用被 隐藏的成员变量,必须使
int x = 10,y; void f() {
int x = 5;
用关键字this(见后面
y = x+this.x;
this关键字介绍)
}
}
//y得到的值是15
局部变量的作用域
局部变量只在方法内有效,从声明它的位置 之后开始有效。
x = y+m; //编译错误,因为在使用m之前未指定m的值
}
}
方法的参数传递
当对象调用方法时,形参被分配内存空间,并要 求调用者向形参传递值。 形参变量的值,是调用者指定的实参值的拷贝。
根据参数传递的值的类型,有2种参数传递方式: 1)对于基本数据类型的形参,向该参数“传
值”,传递的是实参值的拷贝,称为“值传递”。 2)对于形参是引用类型时,“传值”传递的
=" + percent); called(percent); System.out.println("After
:percent=" + percent); }
percent x
值被拷贝
10 130
static void called(int x) { x = 3 * x; System.out.println("End of method:x=" + x);
} }
局部变量的默认值
成员变量有默认值,但局部变量没有默认值,因 此在使用局部变量之前,必须保证局部变量有具 体的值。
例如:下列InitError类无法通过编译。
class InitError {
int x = 10,y; //y的默认值是0
void f() { int m;
//m没有默认值,但编译无错误
局部变量与实例变量同名
如果局部变量的名字与成员变量的名字相同,则成员变量 被隐藏,即该成员变量在这个方法内暂时失效。例如:
class Tom {
int x = 10,y; // 实例变量
void f() {
int x = 5; // 局部变量
y = x+x; //y得到的值是10,不是20。
//如果方法f 中没有“int x=5;”,y的值将是20
obj.printA( ); obj.printB( ); System.out.println("main2: x is "+x);
} }
运行结果为: main1: x is 5 printA1: x is 25 printA2: x is 26 printB1: x is 1 printB2:x is 10 main2: x is 5
值增至3倍
运行结果: Before:percent=10 End of method:x=30 After :percent=10
引用传递 示例
public class TestR { static void called(Person x) { x.raiseSalary(200); } public static void main(String[] args) { Person harry = new Person(); harry.salary = 5000; System.out.println(harry.salary); called(harry); System.out.println(harry.salary); }
返回值类型 方法名 (参数表) {
…//方法体 }
//方法声明
其中,方法的返回值 类型、方 法名和参 数表共同 称之为方法 的特征。
实例变量和局部变量
Java中的变量分为:
类内定义的实例变量和类变量(或称为静态变 量)
方法中定义的局部变量(包括形式参数)。
同一个作用域内,不允许定义两个同名的 局部变量。
6
class Loc { int x=1;
// 实例变量
void printA( ){
int x=25;
// 局部变量
System.out.println("printA1: x is "+x);
++x; System.out.println("printA2: x is "+x);
}
void printB( ){
是变量的引用,称为“引用传递”。Java的引用 型数据包括对象、数组和接口。
值传递 示例
public class TestV { public static void main(String[] args) { int percent = 10; System.out.println("Before:percent
同一个作用域内,两者同名时,局部变量 掩盖实例变量。
5
实例变量和局部变量
实例变量与局部变量的主要区别:
变量定义位置 生存期:实例变量属于对象,它描述了对象的属性,
随着对象的存在而存在;局部变量是随着方法的调用 而存在,一旦方法调用结束,局部变量也就消亡了。 作用域:成员变量在整个类内都有效,其有效性与它 在类体中书写的先后位置无关。局部变量只在定义它 的方法内有效。 默认值:成员变量在定义时有默认值。局部变量在定 义时没有默认值,必须显式赋值。
类与对象2
模块导航
实例成员
实例方法 实例变量与局部变量
方法的参数传递
值传递 引用传递
方法
方法是一个功能模块,类似C中的函数; 方法和实例变量都必须定义在类内,方法
是类的功能接口 ; 定义方法的原则:方法应当只执行单一的
任务,并且方法名能有效地表达该任务.
方法
方法的实现包括两部分内容:方法声明和方法体。
方法的形式参数在整个方法内有效。 若局部变量的声明是在一个复合语句中,其有
效范围是该复合语句。 若局部变量的声明是在一个循环语句中,其有
效范围是该循环语句。
局部变量的作用百度文库 示例
public class A { void f() { int m = 10,sum = 0; if(m>9) { int z = 10; //z仅仅在该复合语句中有效 z = 2*m+z; } for(int i=0;i<m;i++) { sum = sum+i; // i 仅仅在该循环语句中有效 } m = sum; //合法,因为m和sum有效 z = i+sum; //非法,因为i和z已无效
System.out.println("printB1: x is "+x);
x*=10;
System.out.println("printB2:x is "+x);
}
}
public class TestVar { public static void main(String[] args) { Loc obj=new Loc( ); int x=5; // 局部变量 System.out.println("main1: x is "+x);
}
}
class Tom {
如果想在该方法中使用被 隐藏的成员变量,必须使
int x = 10,y; void f() {
int x = 5;
用关键字this(见后面
y = x+this.x;
this关键字介绍)
}
}
//y得到的值是15
局部变量的作用域
局部变量只在方法内有效,从声明它的位置 之后开始有效。
x = y+m; //编译错误,因为在使用m之前未指定m的值
}
}
方法的参数传递
当对象调用方法时,形参被分配内存空间,并要 求调用者向形参传递值。 形参变量的值,是调用者指定的实参值的拷贝。
根据参数传递的值的类型,有2种参数传递方式: 1)对于基本数据类型的形参,向该参数“传
值”,传递的是实参值的拷贝,称为“值传递”。 2)对于形参是引用类型时,“传值”传递的
=" + percent); called(percent); System.out.println("After
:percent=" + percent); }
percent x
值被拷贝
10 130
static void called(int x) { x = 3 * x; System.out.println("End of method:x=" + x);
} }
局部变量的默认值
成员变量有默认值,但局部变量没有默认值,因 此在使用局部变量之前,必须保证局部变量有具 体的值。
例如:下列InitError类无法通过编译。
class InitError {
int x = 10,y; //y的默认值是0
void f() { int m;
//m没有默认值,但编译无错误
局部变量与实例变量同名
如果局部变量的名字与成员变量的名字相同,则成员变量 被隐藏,即该成员变量在这个方法内暂时失效。例如:
class Tom {
int x = 10,y; // 实例变量
void f() {
int x = 5; // 局部变量
y = x+x; //y得到的值是10,不是20。
//如果方法f 中没有“int x=5;”,y的值将是20
obj.printA( ); obj.printB( ); System.out.println("main2: x is "+x);
} }
运行结果为: main1: x is 5 printA1: x is 25 printA2: x is 26 printB1: x is 1 printB2:x is 10 main2: x is 5