ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-05-17 22:01:33  阅读:388  来源: 互联网

标签:Java 组合 bottom double 参数 println Circle circle


上一篇文章: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);
	}
}

在这里插入图片描述

可变参数

可变参数(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源文件,分别如下:

//文件名: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,组合,bottom,double,参数,println,Circle,circle
来源: https://blog.csdn.net/m0_46190471/article/details/116867978

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有