java参数值传递

题目: (1)定义一个Circle类,包含一个double型的radius属性代表圆的半径
 * 一个findAre()方法返回圆的面积。
 * 
 * (2)定义一个类PassObject,在类中定义一个方法printAreas(),该方法的定义如下:
 * 
 * public void printAreas(Circle c, int time)
 * 在printAreas 方法中打印输入1到time之间的每个整个半径值,以及对应的面积。
 * 
 * 例如,times 为5,则输出半径   1,2,3,4,5, 以及对应的圆面积。
 * 
 * 
 * (3)在main方法中调用printAreas()方法,调用完毕后输出当前半径值。

参考代码:

package prectice;

/**
 * 
 * (1)定义一个Circle类,包含一个double型的radius属性代表圆的半径
 * 一个findAre()方法返回圆的面积。
 * 
 * (2)定义一个类PassObject,在类中定义一个方法printAreas(),该方法的定义如下:
 * 
 * public void printAreas(Circle c, int time)
 * 在printAreas 方法中打印输入1到time之间的每个整个半径值,以及对应的面积。
 * 
 * 例如,times 为5,则输出半径   1,2,3,4,5, 以及对应的圆面积。
 * 
 * 
 * (3)在main方法中调用printAreas()方法,调用完毕后输出当前半径值。
 * 
 * @author ZZ1299
 *
 */

public class Circle {

	double radius;//半径
	
	//求圆的面积
	public double findArea(){
		return Math.PI*radius*radius;
	}
	
}
package prectice;

/**
 * 考察参数的值传递
 * 
 * 参数传递的编码练习
 * 
 * 参数传递一般有两种,一种是“传值”,另一种是“传地址值”。传值是指在调用方法时,把参数的值传递给方法,
 * 而传地址值则是给方法提供参数的地址值。Java中的参数传递方法都为传值调用。
 * @author ZZ1299
 *
 */


public class PassObject {
	
	public  static void main(String[] args){
		PassObject test = new PassObject();
		
		
		/**
		 * 第三题想这么考察
		 * 输出   Circle c = new Circle();中 System.out.println 的c.radius的半径,此时半径是0.0
		 * 当		test.printAreas(c, 5);   引用放进来之后
		 * Circle c = new Circle()的地址就被传进
		 * 由于public void printAreas(Circle c, int time)  中的 Circle c   传递的是地址
		 * 所以操作for循环的半径相当于在操作Circle c = new Circle()的   c
		 * 
		 * 包括下文c.radius = time+1;半径被改成6,
		 * 实际上也是修改唯一的对象Circle c = new Circle()中的值
		 * 输出也因此改成6
		 * 
		 */
		
		
		Circle c = new Circle();
	
		test.printAreas(c, 5);
		/**
		 * 如果用匿名方法
		 * 可以这么写	test.printAreas(new Circle(), 5);
		 */
		
		System.out.println("now radius is "+ c.radius);
		/**
		 * 这里输出的是 now radius is 5.0
		 * for(int i = 1; i <=time; i++){  //①因为这里的time是5, 赋值结束之后i++变成6的时候没进去
			
			//设置圆的半径
			c.radius = i;	②所以这一行没有操作到
		}
		 
		//③因此可以在这里重新赋值, 让半径加1
		
		c.radius = time+1;
		* 
		 */
	}
	

	public void printAreas(Circle c, int time){
		
		System.out.println("Radius\t\tArea");
		
		for(int i = 1; i <=time; i++){
			
			//设置圆的半径
			c.radius = i;
			System.out.println(c.radius +"\t\t" +c.findArea());
			
			
			/**
			 * System.out.println(c.radius +"\t\t" +c.findArea());当中,对于编译器来讲,		
			 * c.findArea()返回的是一个double型的变量,因此这里可以看成是一个变量。
			 * 
			 * 如果不适应这个写法,可以像下边这么写:
			 * 	double area = c.findArea();
			 *	System.out.println(c.radius +"\t\t" +area);
			 *	这里其实和变量是一回事,只是没有给他显式添加变量而已
			 */
		}
		//③因此可以在这里重新赋值, 让半径加1
		c.radius = time+1;
		
		
		/**
		 * 对于第三题,有人把它改成这样
		 * int i = 1;
		 * for(int i = 1; i <=time; i++){
			
			//设置圆的半径
			c.radius = i;
			System.out.println(c.radius +"\t\t" +c.findArea());
			}
			
			//输出当前的i的值就可以了   因为i 已经不是在for中定义的了
			c.radius = i;
			
		 * 
		 */
		
		
	}
}

运行结果:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值