Java中方法的参数主要有3种,分别为值参数、引用参数和不定长参数,本节练习不涉及不定长参数。
值参数:表明实参与形参之间按值传递,当使用值参数的方法被调用时,编译器为形参分配存储单元,然后将对应的实参的值复制到形参中,因此,方法中对值类型的形参的修改并不会影响实参。
案例1:
今日橘子的价格为每500克2.98元,购买3千克橘子,计算顾客需支付的钱款。
package demo;
//import java.util.Arrays;
//import java.util.Scanner;
public class Test {//定义橘子类,类名叫Test
public static void main(String[] args) {
Test tangerine= new Test();//创建橘子类对象
double price=2.98; //初始化每斤橘子的价格;
int jin=3000/500; //初始化购买橘子的斤两;
System.out.print("顾客购买3千克橘子,需要支付"+tangerine.multiply(price, jin)+"元。");
}
private double multiply(double price,int jin) {
price =price*jin;
return price;
}
}
引用参数:在给方法传递参数时,参数的类型是数组或者其他引用类型(类、接口),那么,在方法中对参数的修改会反映到原有的数组或者其他引用类型上,这种类型的方法参数被称之为引用参数。
案例2:图书馆举办双十一买二享五折活动,设计一个打折方法,传入顾客购买的图书数组,然后重新为图书定价。已知顾客购买的图书为《Java从入门到精通(第4版)》,作者是明日科技,售价59.8元;《JavaWeb从入门到精通(第2版)》,作者是明日科技,售价69.8元,在控制台输出打折前和打折后的图书信息。
package demo;
//import java.util.Arrays;
//import java.util.Scanner;
public class Test {//定义图书类,类名叫Test
public static void main(String[] args) {
/**/
Test book= new Test();//创建图书类对象
double total1=0; //记录打折前的总价格;
double total2=0; //记录打折后的总价格;
double[] price= {59.8,69.8}; //定义一位数组,用来存储顾客购买的所有图书的价格;
for(int i=0;i<price.length;i++) {
total1 += price[i];
}
System.out.println("打折前图书价格:"+total1+"元。");
book.discount(price); //调用discount方法进行五折处理改变一维数组中各元素的值;
//System.out.println("查看当前一维数组价格五折处理后各元素的值分别是:{"+price[0]+","+price[1]+"}");
for(int j=0;j<price.length;j++) {
total2 += price[j];
}
System.out.print("打折后图书价格:"+total2+"元。");
}
//定义一个方法,方法的参数是一维数组(形参)
public void discount(double[] i) {
for(int j=0;j<i.length;j++) {//for循环遍历数组
i[j]=i[j]*0.5; //对数组中所有的价格进行五折处理;
}
}
}