2.1 Java复习之包装类

包装类

基本数据类型转化为包装类

这里写图片描述
i1.Tostring():显示表明可以调用方法


这里写图片描述

  • 形参为字符串(如“false” “12.3”)都可以,但字符串实体本身仍然为对应的基本数据类型(布尔类型例外),若不是这样,则报异常(NumberFormatException)
  • 对于特殊的布尔类型,字符串实体非true均为false(见truea)
  • Boolean类型变量可取值null,而对于基本数据类型boolean则不行
  • 注意所有包装类(引用数据类型)的默认值都为null(不是基本数据类型初始化值)

包装类转化为基本数据类型

这里写图片描述

总结:以上所讲都多余,因为自动装箱和拆箱


自动装箱和拆箱

这里写图片描述
变量类型转化方便太多


基本数据类型,包装类与String类的转换

这里写图片描述

  • 常用方法为 i1 + “”
  • 布尔类型转换为字符串,实质加了个“”
  • 字符串不能强行转化为int类型,类比男人类不能强制转化为女人类
  • 关注两类方法
  • 从前往后转,从后一个调用方法

总结:包装类和对应基本数据类型的值范围不变,但默认初始化值改变


包装类练习

题目
这里写图片描述
vector添加的是对象

这里写图片描述
代码亮点:

  • 添加对象

  • vector相当于可变长度的数组
    这里写图片描述
    代码亮点:

  • 向下转型


Bank项目练习

思想:从储蓄卡中取不足的差额

CheckingAccount

package banking5_2;

public class CheckAccount extends Account {
  private SavingAccount protectedBy;//!!
  
  public CheckAccount(double balance){
	  super(balance);
	  
  }
  public CheckAccount(double balance,SavingAccount protectedBy){
	  super(balance);
	  this.protectedBy= protectedBy;//!!
  }
  
  
  
public SavingAccount getProtectedBy() {
	return protectedBy;
}
public void setProtectedBy(SavingAccount protectedBy) {
	this.protectedBy = protectedBy;
}

public boolean withdraw(double amt){//!!!
		if(balance >= amt){
			balance -= amt;
			//return true;
		}else if(protectedBy != null && protectedBy.getBalance()>= amt - balance){
			protectedBy.withdraw(amt - balance);
			balance = 0;
			//return true;
		}else{
			return false;
		}
		return true;
	}
}

判断protectedBy是否为空的原因在于:
当调用一个参数构造器创建CheckingAccount时,则CheckingAccount为null,
,调用此对象方法时,会报空指针异常

SavingAcount

package banking5_2;

public class SavingAccount extends Account {
	private double interestRate;
	
	public SavingAccount(double balance,double interest_rate) {
		super(balance);
		this.interestRate = interest_rate;
		
	}

	public double getInterestRate() {
		return interestRate;
	}

	public void setInterestRate(double interestRate) {
		this.interestRate = interestRate;
	}
	
	
	
	

}

Customer

package banking5_2;

public class Customer {
	private String firstName;
	private String lastName;
	private SavingAccount savingAccount;//!!
	private CheckAccount checkAccount;//!!
	
	
	public Customer(String f,String l){
		firstName = f;
		lastName = l;
		
	}
	

	public SavingAccount getSaving() {
		return savingAccount;
	}


	public void setSaving(SavingAccount savingAccount) {
		this.savingAccount = savingAccount;
	}


	public CheckAccount getChecking() {
		return checkAccount;
	}


	public void setChecking(CheckAccount checkAccount) {
		this.checkAccount = checkAccount;
	}


	public String getFirstName() {
		return firstName;
	}

	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}

	public String getLastName() {
		return lastName;
	}

	public void setLastName(String lastName) {
		this.lastName = lastName;
	}

	

}

TestBanking5_2

package TestBanking;
/*
 * This class creates the program to test the banking classes.
 * It creates a new Bank, sets the Customer (with an initial balance),
 * and performs a series of transactions with the Account object.
 */

import banking5_2.*;

public class TestBanking5_2 {

  public static void main(String[] args) {
    Bank bank = new Bank();
    Customer customer;
    Account account;

    // Create two customers and their accounts
    bank.addCustomer("Jane", "Simms");
    customer = bank.getCustomer(0);
	//account = customer.getChecking();//!! 此时无checking账户
    customer.setSaving(new SavingAccount(500.00, 0.05));
    customer.setChecking(new CheckAccount(200.00, customer.getSaving()));
    
	bank.addCustomer("Owen", "Bryant");
    customer = bank.getCustomer(1);
    customer.setChecking(new CheckAccount(200.00));

    // Test the checking account of Jane Simms (with overdraft protection)
    customer = bank.getCustomer(0);
    account = customer.getChecking();//!!
    System.out.println("Customer [" + customer.getLastName()
		       + ", " + customer.getFirstName() + "]"
		       + " has a checking balance of "
		       + customer.getChecking().getBalance()
		       + " and a savings balance of "
		       + customer.getSaving().getBalance());
    System.out.println("Checking Acct [Jane Simms] : withdraw 150.00 succeeds? "
		       + account.withdraw(150.00));
    System.out.println("Checking Acct [Jane Simms] : deposit 22.50 succeeds? "
		       + account.deposit(22.50));
    System.out.println("Checking Acct [Jane Simms] : withdraw 147.62 succeeds? "
		       + account.withdraw(147.62));
    System.out.println("Customer [" + customer.getLastName()
		       + ", " + customer.getFirstName() + "]"
		       + " has a checking balance of "
		       + account.getBalance()
		       + " and a savings balance of "
		       + customer.getSaving().getBalance());
    System.out.println();

    // Test the checking account of Owen Bryant (without overdraft protection)
    customer = bank.getCustomer(1);
    account = customer.getChecking();
    System.out.println("Customer [" + customer.getLastName()
		       + ", " + customer.getFirstName() + "]"
		       + " has a checking balance of "
		       + account.getBalance());
    System.out.println("Checking Acct [Owen Bryant] : withdraw 100.00 succeeds? "
		       + account.withdraw(100.00));
    System.out.println("Checking Acct [Owen Bryant] : deposit 25.00 succeeds? "
		       + account.deposit(25.00));
    System.out.println("Checking Acct [Owen Bryant] : withdraw 175.00 succeeds? "
		       + account.withdraw(175.00));
    System.out.println("Customer [" + customer.getLastName()
		       + ", " + customer.getFirstName() + "]"
		       + " has a checking balance of "
		       + account.getBalance());
    System.out.println();
  }
}

总体思想:信用卡关联储蓄卡,当信用卡余额不足时,从储蓄卡中补差额

体现:

  • 继承(子父类)
  • 方法的重写(子类重写父类方法,如withdraw,实际调用子类方法)
  • 多态(Account account,通过父类对象引用account进行虚拟方法调用)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值