Java
2010年06月22日
运行结果
c:\>java PassTest
Original Int Value is : 11
Int Value after Change is: 11
Original ptValue is: 101.0
ptValue after Change is : 99.0
[b]◇ 方法体[/b]
方法体是对方法的实现,它包括局部变量的声明以及所有合法的Java指令。方法体中声明的局部变量的作用域在该方法内部。若局部变量与类的成员变量同名,则类的成员变量被隐藏。
例3-2 说明了局部变量z和类成员变量z的作用域是不同的。
【例3-2】
import java.io.*;
class Variable{
int x=0,y=0,z=0; //类的成员变量
void init(int x,int y) {
this.x=x; this.y=y;
int z=5; //局部变量
System.out.println("** in init**");
System.out.println("x="+x+" y="+y+"**before init**");
System.out.println("x="+v.x+" y="+ v.y+"**after init**");
System.out.println("x="+v.x+ " y="+ v.y+"COLOR: red">运行结果
c:\>java VariableTest
**before init**
x=0 y=0 z=0
** in init **
x=20 y=30 z=5
**after init**
x=20 y=30 z=0
上例中我们用到了this,这是因为init()方法的参数名与类的成员变量x,y的名字相同,而参数名会隐藏成员变量,所以在方法中,为了区别参数和类的成员变量,我们必须使用this。this-----用在一个方法中引用当前对象,它的值是调用该方法的对象。返回值须与返回类型一致,或者完全相同,或是其子类。当返回类型是接口时,返回值必须实现该接口。
5.方法重载
方法重载是指多个方法享有相同的名字,但是这些方法的参数必须不同,或者是参数的个数不同,或者是参数类型不同。返回类型不能用来区分重载的方法。
参数类型的区分度一定要足够,例如不能是同一简单类型的参数,如int与long。
【例3-3】
import java.io.*;
class MethodOverloading{
void receive(int i) {
System.out.println("Receive one int data");
System.out.println("i="+i);
}
void receive(int x, int y) {
System.out.println("Receive two int datas");
System.out.println("x="+x+"COLOR: red">运行结果(编译器会根据参数的个数和类型来决定当前所使用的方法)
c:\>java MethodOverloadingTest
Receive one int data
i=1
Receive two int datas
x=2 y=3
6. 构造方法
[b]◇[/b] 构造方法是一个特殊的方法。Java 中的每个类都有构造方法,用来初始化该类的一个对象。
[b]◇[/b] 构造方法具有和类名相同的名称,而且不返回任何数据类型。
[b]◇[/b] 重载经常用于构造方法。
[b]◇[/b] 构造方法只能由new运算符调用
【例3-4】
class Point{
int x,y;
Point(){
x=0; y=0;
}
Point(int x, int y){
this.x=x;
this.y=y;
}
}
[b]3[/b][b].2.2 对象[/b]
类实例化可生成对象,对象通过消息传递来进行交互。消息传递即激活指定的某个对象的方法以改变其状态或让它产生一定的行为。一个对象的生命周期包括三个阶段:生成、使用和消除。
1. 对象的生成
对象的生成包括声明、实例化和初始化。
格式为:
type objectName=new type([paramlist]);
[b]◇ 声明[/b]:type objectName
声明并不为对象分配内存空间,而只是分配一个引用空间;对象的引用类似于指针,是32位的地址空间,它的值指向一个中间的数据结构,它存储有关数据类型的信息以及当前对象所在的堆的地址,而对于对象所在的实际的内存地址是不可操作的,这就保证了安全性。
[b]◇ 实例化[/b]:运算符new为对象分配内存空间,它调用对象的构造方法,返回引用;一个类的不同对象分别占据不同的内存空间。
[b]◇ 生成[/b]:执行构造方法,进行初始化;根据参数不同调用相应的构造方法。
2. 对象的使用
通过运算符"."可以实现对变量的访问和方法的调用。变量和方法可以通过设定访问权限来限制其它对象对它的访问。
[b] ◇调用对象的变量[/b]
格式:objectReference.variable[b][b]
[/b][/b]
2010年06月22日
运行结果
c:\>java PassTest
Original Int Value is : 11
Int Value after Change is: 11
Original ptValue is: 101.0
ptValue after Change is : 99.0
[b]◇ 方法体[/b]
方法体是对方法的实现,它包括局部变量的声明以及所有合法的Java指令。方法体中声明的局部变量的作用域在该方法内部。若局部变量与类的成员变量同名,则类的成员变量被隐藏。
例3-2 说明了局部变量z和类成员变量z的作用域是不同的。
【例3-2】
import java.io.*;
class Variable{
int x=0,y=0,z=0; //类的成员变量
void init(int x,int y) {
this.x=x; this.y=y;
int z=5; //局部变量
System.out.println("** in init**");
System.out.println("x="+x+" y="+y+"**before init**");
System.out.println("x="+v.x+" y="+ v.y+"**after init**");
System.out.println("x="+v.x+ " y="+ v.y+"COLOR: red">运行结果
c:\>java VariableTest
**before init**
x=0 y=0 z=0
** in init **
x=20 y=30 z=5
**after init**
x=20 y=30 z=0
上例中我们用到了this,这是因为init()方法的参数名与类的成员变量x,y的名字相同,而参数名会隐藏成员变量,所以在方法中,为了区别参数和类的成员变量,我们必须使用this。this-----用在一个方法中引用当前对象,它的值是调用该方法的对象。返回值须与返回类型一致,或者完全相同,或是其子类。当返回类型是接口时,返回值必须实现该接口。
5.方法重载
方法重载是指多个方法享有相同的名字,但是这些方法的参数必须不同,或者是参数的个数不同,或者是参数类型不同。返回类型不能用来区分重载的方法。
参数类型的区分度一定要足够,例如不能是同一简单类型的参数,如int与long。
【例3-3】
import java.io.*;
class MethodOverloading{
void receive(int i) {
System.out.println("Receive one int data");
System.out.println("i="+i);
}
void receive(int x, int y) {
System.out.println("Receive two int datas");
System.out.println("x="+x+"COLOR: red">运行结果(编译器会根据参数的个数和类型来决定当前所使用的方法)
c:\>java MethodOverloadingTest
Receive one int data
i=1
Receive two int datas
x=2 y=3
6. 构造方法
[b]◇[/b] 构造方法是一个特殊的方法。Java 中的每个类都有构造方法,用来初始化该类的一个对象。
[b]◇[/b] 构造方法具有和类名相同的名称,而且不返回任何数据类型。
[b]◇[/b] 重载经常用于构造方法。
[b]◇[/b] 构造方法只能由new运算符调用
【例3-4】
class Point{
int x,y;
Point(){
x=0; y=0;
}
Point(int x, int y){
this.x=x;
this.y=y;
}
}
[b]3[/b][b].2.2 对象[/b]
类实例化可生成对象,对象通过消息传递来进行交互。消息传递即激活指定的某个对象的方法以改变其状态或让它产生一定的行为。一个对象的生命周期包括三个阶段:生成、使用和消除。
1. 对象的生成
对象的生成包括声明、实例化和初始化。
格式为:
type objectName=new type([paramlist]);
[b]◇ 声明[/b]:type objectName
声明并不为对象分配内存空间,而只是分配一个引用空间;对象的引用类似于指针,是32位的地址空间,它的值指向一个中间的数据结构,它存储有关数据类型的信息以及当前对象所在的堆的地址,而对于对象所在的实际的内存地址是不可操作的,这就保证了安全性。
[b]◇ 实例化[/b]:运算符new为对象分配内存空间,它调用对象的构造方法,返回引用;一个类的不同对象分别占据不同的内存空间。
[b]◇ 生成[/b]:执行构造方法,进行初始化;根据参数不同调用相应的构造方法。
2. 对象的使用
通过运算符"."可以实现对变量的访问和方法的调用。变量和方法可以通过设定访问权限来限制其它对象对它的访问。
[b] ◇调用对象的变量[/b]
格式:objectReference.variable[b][b]
[/b][/b]