Java中的方法与参数以及对象的组合

上一篇文章:Java程序的构成

本篇内容

方法

在前面的文章中,已经提到过方法的定义,但是不够详细,所以这里再详细介绍一下

定义方法的完整格式为如下:
Java中的方法与参数以及对象的组合
Java中的方法与参数以及对象的组合
方法头:是指方法的修饰符(modifier)返回值类型(return value type)方法名(method name) 和方法的参数(parameter)

带返回值的方法:value-returning method

无返回值的方法:void method。无返回值的方法仅仅是一个过程(procedure),实现一个具体的功能

形式参数&形参(formal parameter):定义在方法头中的变量,简称形参(parameter)

实际参数&实参(actual parameter & argument):调用方法时给形参传递的一个值

参数列表(parameter list):指明方法中参数的类型、个数和顺序

参数

参数传值

一般参数传值: 一般情况下普通的参数传值,直接将实参的数值复制到形参

引用类型参数传值: “引用”相当于C语言当中的指针,将引用传给形参,在方法中改变引用当中的实体。Java中的数组就是引用类型,包括创建的对象也是引用类型的

class Circle {    //Circle类
	double radius;    //定义一个半径
	Circle(double r){     //构造方法,创建对象时给radius赋初值
		radius = r;
	}
}
class Area {     //Area类
	double circleArea(Circle cir){    //定义了一个返回值为double型的方法,其中的参数为Circle类,即引用型参数传值
		cir.radius = 3.0;    //修改圆的半径的值,由原来的5.0变为3.0
		return 3.1415926*cir.radius*cir.radius;
	}
}
public class Example {
	public static void main(String args[]){
		Circle cir = new Circle(5.0);    //创建一个Circle类的对象,并给radius赋值为5.0
		Area area = new Area();   //创建一个Area类
		System.out.println("圆的半径修改前:"+cir.radius);
		double area_cir = area.circleArea(cir);  //cir为Circle类,引用型参数传值,调用方法
		System.out.println("圆的面积为:"+area_cir);
		System.out.println("圆的半径修改后:"+cir.radius);
	}
}

Java中的方法与参数以及对象的组合

可变参数

可变参数(the variable arguments): 可变参数是指同一数据类型的形参的个数不确定,用三个点...来代替。

public void method_1(int ... a),在这个method_1方法头中,从第一个参数直到最后一个参数的个数不确定,统一用变量a来代替,这个变量a就像是这些参数的“代表”。

再如public void method_2(double a, int ... b),在这个method_2方法头中,第一个参数是一个double型的,从第二个形参开始直到最后一个参数都是int类型的

“参数代表”必须是参数列表的最后一个,public void method_3(int ... x, int y)是错误的,因为参数代表后面还有一个int型的变量y

class ComputeSum {
	int c_sum(int ... x){
		int a = x.length;    //x.length统计传进的参数的个数
		int sum = 0;
		for(int i = 0; i < a; i++){    //可采用下标的方式使用参数代表
			sum += x[i];
		}
		return sum;
	}
}
public class Example {
	public static void main(String args[]){
		ComputeSum a = new ComputeSum();
		System.out.println(a.c_sum(1, 2, 3));
		System.out.println(a.c_sum(5, 3, 9, 2, 32, 6));
	}
}

Java中的方法与参数以及对象的组合

对象的组合

在一个类体中创建了另外一个类的对象,这就是对象的组合。

在同一个文件夹中保存三个Java源文件,分别如下:

//文件名:Circle.java
public class Circle {      //类名Circle,源文件的名字应当和类名保持一致
	double radius, area;     //成员变量radius和area
	void setRadius(double r){    //void型的方法,参数double型的r
		radius = r;
	}
	double getRadius(){     //double型的方法,返回值为double型
		return radius;
	}
	double getArea(){
		area = 3.14*radius*radius;    //计算圆面积并返回值
		return area;
	}
}
//文件名:Circular.java
public class Circular {
	Circle bottom;    //创建一个Circle类的对象
	double height;
	void setBottom(Circle c){
		bottom = c;
	}
	void setHeight(double h){
		height = h;
	}
	double getVolume(){
		if(bottom == null)
			return -1;
		else
			return bottom.getArea()*height/3.0;
	}
	double getBottomRadius(){
		return bottom.getRadius();
	}
	public void setBottomRadius(double r){
		bottom.setRadius(r);
	}
}
//文件名:Example.java
public class Example {
	public static void main(String args[]){
		Circle circle = new Circle();     //创建一个Circle对象circle
		circle.setRadius(10.0);
		Circular circular = new Circular();    //创建一个Circular类的对象,形成对象的组合
		System.out.println("circle的引用:"+circle);      //直接输出对象的引用
		System.out.println("圆锥的bottom的引用:"+circular.bottom);     //此时的bottom还是一个空对象null
		circular.setHeight(5);
		circular.setBottom(circle);    //此时bottom不再是null空对象,而是circle
		System.out.println("circle的引用:"+circle);   //再次输出circle的引用
		System.out.println("圆锥的bottom的引用:"+circular.bottom);    //现在bottom的引用和circle的引用是一致的
		System.out.println("圆锥的体积:"+circular.getVolume());
		System.out.println("修改circle的半径,bottom的半径同样变化");
		circle.setRadius(50);
		System.out.println("bottom的半径:"+circular.getBottomRadius());
		System.out.println("重新创建circle,circle的引用将发生变化");
		circle = new Circle();
		System.out.println("circle的引用:"+circle);
		System.out.println("但是不影响circular的bottom的引用");
		System.out.println("圆锥的bottom的引用:"+circular.bottom);
	}
}

运行结果:
Java中的方法与参数以及对象的组合

上一篇:添加知识点对应的题目的算法


下一篇:python---turtle库(详解)