类
类是对象的属性和行为的载体。
对象的属性——类的成员变量
对象的行为——类的成员方法
class 类的名称{ //类的成员变量 可不设初始值,默认为:0,0.0,'',null,false。
//类的成员方法
[权限修饰符][返回值类型]方法名 ([参数类型 参数名])[throws 异常类型]{
//方法体
……
return 返回值;
}
}
方法
权限修饰符
private
public
protected
为空:只在本类及同一个包中的类进行访问
返回值类型
如果无返回,则使用关键字void。
成员方法的参数
形参:在方法内部接收实参的变量;实参:传给方法的值
值参数:表示形参和实参之间按值传递。形参的改变,不影响实参的值。
引用参数:被调用后,原值被修改的参数 ,如下面的usd即为引用参数
不定长参数:声明方法时使用,格式:参数类型… 参数名称
引用参数
public class ExchangeRate { // 创建汇率类 public static void main(String[] args) { ExchangeRate exr = new ExchangeRate(); double[] usd = {1, 100, 1000}; System.out.println("美元记录:"); exr.printList(usd, "美元");//调用打印方法 exr.exChange(usd);//调用兑换方法 System.out.println("兑换完毕:"); exr.printList(usd, "元");//调用打印方法 } public void exChange(double[] usd) { //引用参数后值被更改 // 兑换 for (int i = 0; i < usd.length; i++) { usd[i] = usd[i] * 6.903; } return usd; } public void printList(double[] usd, String unit) { // 打印list for (int i = 0; i < usd.length; i++) { if (i == usd.length - 1) { System.out.println(usd[i] + unit);//最后一个换行打印 } else { System.out.print(usd[i] + unit + " "); //非最后一个不换行打印 } } } }
import javax.jws.soap.SOAPBinding; import java.util.Scanner; public class BuyBooks { public static void main(String[] args) { BuyBooks bb = new BuyBooks(); System.out.println("1 《A》 59.8\n2 《B》 69.8\n3 《C》 20.0\n4 《D》 40.0\n请输入预购买的序号:使用,隔开"); Scanner sc = new Scanner(System.in); do { String nums = sc.next(); if (nums.equals("0") ) { System.out.println("over"); break; } else { String[] numlist = nums.split(",");//字符串转为数组 int[] num = bb.getNum(numlist);//将输入的字符串转为int数字 double sum = bb.disCount(num);//计算付费金额 System.out.println("您要购买的有:【" + nums + "】,共计:" + sum + "元"); } } while (true); } public int[] getNum(String[] numlist) { //将数组中的字符串转int数字 int[] num = new int[numlist.length]; for (int i = 0; i < numlist.length; i++) { num[i] = Integer.parseInt(numlist[i]); } return num; } public double getPrice(int num) { // 通过序号获取价格 double price = 0; switch (num) { case 1: { price = 59.8; break; } case 2: { price = 69.8; break; } case 3: { price = 20.0; break; } case 4: { price = 40.0; break; } default: { price = 0; } } return price; } public double disCount(int[] num) { //满2件5折,第单数件原价 double sum = 0.0; for (int i = 0; i < num.length; i++) { if (num.length % 2 == 0) { //总件数为双数,均打折 sum += BuyBooks.this.getPrice(num[i]) / 2; //方法调用其他方法 } else { if (i == num.length - 1) { //总件数为单数,最后一个不打折 sum += BuyBooks.this.getPrice(num[i]); } else { sum += BuyBooks.this.getPrice(num[i]) / 2; } } } return sum; } }
不定长参数
public class Test { public static void main(String[] args) { Test test = new Test(); int sum = test.add(10,20,33,44,55); System.out.println("sum"); } public int add(int... x) { int sum = 0; for (int i = 0; i < x.length; i++) { sum += x[i]; } return sum; }