Java类与对象的基本概念(二)
2021/12/17 1:12:23
本文主要是介绍Java类与对象的基本概念(二),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 枚举类型
- 应用举例
- 声明toString()方法
- 格式化字符串输出
- 声明类方法生成特殊的实例
枚举类型
当需要一个有限集合,而有限集合中的数据为特定的值时,可以使用枚举类型。枚举类型的定义使用关键字enum,其语法格式如下:
[public] enum 枚举类型名称 [implements接口名称列表] { 枚举值; 变量成员声明及初始化; 方法声明及方法体; }
enum Score{ EXCELLENT, QUAILFIED, FAILED; }; public class ScoreTester { public static void main(String [] args){ giveScore(Score.EXCELLENT); } public static void giveScore(Score s){ switch (s){ case EXCELLENT: System.out.println("EXCELLENT"); break; case QUAILFIED: System.out.println("QUAILFIED"); break; case FAILED: System.out.println("FAILED"); break; } } }
枚举类型具有如下特点:
1)枚举类型是类,而不是简单的整数类型,枚举值是类的对象;
2)枚举类型继承过java.lang.Enum类;
3)枚举类型没有public的构造函数;
4)枚举值是public、static、final的。
枚举类型有很多默认方法。
枚举类型相当于定义一个类,因此可以给该类定义数据和方法。
此外,枚举类型可以定义构造函数,不过为了防止程序员自行定义枚举类型的对象,枚举类型的构造函数只能是private的,并且默认是private的。
应用举例
首先声明银行账号类,包括状态、构造方法、get方法及set方法。
enum Grade{//定义枚举类型,表示账户的等级。 VIP, General; } public class BankAccount { private String ownerName; private int accountNumber; private float balance; Grade grade; public BankAccount(){ this("",0,0,Grade.General); } public BankAccount(String initName,int initAccNum,float initBal,Grade g){ ownerName=initName; accountNumber=initAccNum; balance=initBal; grade=g; } public String getOwnerName(){ return ownerName; } public int getAccountNumber(){ return accountNumber; } public float getBalance(){ return balance; } public Grade getGrade(){ return grade; } public void setOwnerName(String newName){ ownerName=newName; } public void setAccountNumber(int newNum) { accountNumber = newNum; } public void setBalance(float newBalance){ balance=newBalance; } public void setGrade(Grade g){ grade=g; } }
声明测试类:
public class AccountTester { public static void main(String args[]){ BankAccount anAccount; anAccount=new BankAccount("zhangsan",10000,0,Grade.General); anAccount.setBalance(anAccount.getBalance()+100); System.out.println("here is the account:"+anAccount); System.out.println("account name:"+anAccount.getOwnerName()); System.out.println("account number"+anAccount.getAccountNumber()); System.out.println("Balance: $"+anAccount.getBalance()); System.out.println("Grade:"+anAccount.grade); } }
输出结果: here is the account:BankAccount@75b84c92 account name:zhangsan account number10000 Balance: $100.0 Grade:General
声明toString()方法
当需要将一个独享输出到显示器时,通常需要调用它的toString()方法,将对象的内容转为字符串。Java的所有类都有一个默认的toString()方法,如果需要特殊的转换功能,则需要自己重写toString()方法。
系统默认的toString()的方法体如下;
getClass().getName()+'@'+Integer.toHexString(hashCode())
在实际应用中,往往需要此方法能够返回更有意义的信息。这就需要我们重写自己的toString()方法,其主要功能是用一个字符串来描述一个对象的主要信息。
在BankAccount中加入toString()方法。
public String toString(){ return (grade+"account #"+accountNumber+"with balance $"+balance); }
System.out.println("here is the account:"+anAccount.toString());
然后重新编译运行测试类;
输出: here is the account:Generalaccount #10000with balance $100.0 account name:zhangsan account number10000 Balance: $100.0 Grade:General
在声明toString()方法时,需要注意以下几点:
1)toString()方法必须被声明为public;
2)返回类型为String;
3)方法的名称必须为toString,且没有参数;
4)在方法体中不要使用输出方法System.out.println()。
格式化字符串输出
在toString()方法中使用DecimalFormat类的实例方法format对数据进行格式化。DecimalFormat类在java.text方法中。
public String toString(){ return (grade+"account #"+accountNumber+"with balance"+new java.text.DecimalFormat("$0.00f").format(balance)); }
另外一种格式化输出字符串的方法,是使用printf。
输出两位小数并加上$符号。
System.out.printf("$%.2f",anAccount.getBalance());
声明类方法生成特殊的实例
public static BankAccount example(){ BankAccount ba=new BankAccount(); ba.setOwnerName("zhangwei"); ba.setAccountNumber(5000); return ba; } public static BankAccount example1(){ BankAccount ba=new BankAccount(); ba.setOwnerName("wanger"); ba.setAccountNumber(2000); ba.deposit(1000); return ba; } public static BankAccount example2(){ BankAccount ba=new BankAccount(); ba.setOwnerName("mazi"); ba.setAccountNumber(3000); ba.deposit(2000); return ba; }
声明存钱取钱的方法;
public float deposit(float anAmount){ balance+=anAmount; return (balance); } public float withdraw(float anAmount){ balance-=anAmount; return (anAmount); }
这篇关于Java类与对象的基本概念(二)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南