常用Java API
- java.lang
- Java.util
- java.io
- Java.sql
- …..
分包归类学习,随时查看帮助文档
枚举
用来限制用户的输入范围,比如国家的范围为 [美国,中国,日本,韩国…]
枚举指的是由一组固定的常量组成的类型。通过enum
声明枚举,使用枚举的好处就是类型安全,易于输入,代码清晰。
案例1: 使用枚举限定学生性别输入
package com.api;
public enum Genders {
男,女
}
package com.api;
public class Student {
public Genders sex;
public static void main(String[] args) {
Student stu = new Student();
// 使用枚举保证了sex属性的正确赋值
// 类型安全,易于属于和赋值
stu.sex= Genders.女;
}
}
案例2: 根据用户输入今天是星期几,对用户一周做的事情作出提示
package com.api;
public enum Week {
MON,TUE,WES,THU,FRI,SAT,SUN
}
package com.api;
public class WeekDo {
//根据输入星期几,输出做什么事
public void doWhat(int day){
if(day>7 || day<1){
System.out.println("输入参数必须在1-7");
return;
}
switch (day){
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("工作日,请努力工作");
break;
case 6:
System.out.println("今天周六");
break;
case 7:
System.out.println("今天周日");
break;
}
}
// 使用枚举
public void doWhat2(Week day){
switch (day){
case MON:
case TUE:
case WES:
case THU:
case FRI:
System.out.println("工作日,请努力工作");
break;
case SAT:
System.out.println("今天周六");
break;
case SUN:
System.out.println("今天周日");
break;
}
}
public static void main(String[] args) {
WeekDo wd = new WeekDo();
wd.doWhat(8);
wd.doWhat2(Week.SUN);
}
}
包装类
存放在java.lang
包中,包装类提供了一系列使用到的方法,而且集合无法存放基本数据类型,需转换成包装类。因为集合类默认的存储单元是object
类,基本数据类型是不行的,需要转换成类,就是对应的封装类。
| 原始类型 | 封装类 | | —- | —- |
| boolean | Boolean |
| char | Character |
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
public class Test2 {
public static void main(String[] args) {
// (1) 已基本数据类型作为参数 调用构造方法
int iNum = 10;
Integer i = new Integer(iNum);
double dNum = 1.5;
Double d = new Double(dNum);
char cNum = 'a';
Character c = new Character(cNum);
float fNum = 9.6f;
Float f = new Float(fNum);
boolean bNum = true;
Boolean b = new Boolean(bNum);
//(2) 除Character以外,以字符串作为参数
// Character 没有带字符串作为参数的构造方法
Integer i1 = new Integer("123");
Double d2 = new Double("4.5");
Float f3 = new Float("2.5f");
System.out.println(f3);
Boolean b3 = new Boolean("True");
System.out.println(b3);
Boolean b4 = new Boolean("ss");
System.out.println(b4);
}
}
包装类的常用方法:
public class Test3 {
public static void main(String[] args) {
// xxxValue() 包装类 -> 基本数据类型
Integer i = new Integer("123");
int ii = i.intValue();
Boolean b = new Boolean("True");
boolean bb = b.booleanValue();
//toString() 基本数据类型 -> 字符串
int num = 10;
String sNum = Integer.toString(num);
boolean bs = true;
String bsd = Boolean.toString(bs);
System.out.println(bsd);
//更常用的基本数据类型转换为字符串的方法
String nums = 100+"";
String dsdd = true+"";
System.out.println(dsdd);
//parseXXX() 字符串 -> 基本数据类型 除character外
String age = "17";
int ageNum = Integer.parseInt(age);
String score = "100";
int scores = Integer.parseInt(score);
System.out.println(scores); //100
// valueOf(基本数据类型) 基本数据类型 -> 包装类
// valueOf(字符串) 字符串 -> 包装类
int j = 90;
Integer j1 = Integer.valueOf(j);
String m = "123";
Integer mi = Integer.valueOf(m);
System.out.println(mi);
}
}
Math类
基本数学方法;基本运算,指数,随机数等。
超市会员管理系统 小项目练习
- 需求分析
- 思路分析
- 会员管理类
- 所有会员(汇总) 集合。 List ArrayList
- 开卡
- 输入会员信息 - 姓名 密码(长度验证) 卡号(随机) 开卡日期
- 将注册成功的会员添加进集合
- 修改密码
- 查找会员 验证是否存在 会员密码重新赋值
- 积分累计,积分兑换
- 验证会员是否存在 更新积分属性
- 查询积分
- 验证会员是否存在,查找会员,显示信息
- 退出
- 会员类
- 姓名 卡号 密码 积分 开卡日期
- 测试类
- 代码实现 ``` package com.miniMarket;
import java.text.SimpleDateFormat; import java.util.*;
public class MemberMgr {
// 所有会员
List
// 输出欢迎菜单
public void menu(){
System.out.println("**************** 欢迎使用超市管理系统 ****************");
System.out.println("1. 开卡 2. 修改密码 3. 积分累计 4. 积分兑换 5. 剩余积分查询 6.退出");
System.out.println("**************************************************");
System.out.print("请选择: ");
}
// 搭建项目整体流程
public void start(){
do{
menu();
int choose = input.nextInt();
switch (choose){
case 1:
// System.out.println(“开卡”); register(); break; case 2: if (changePwd()){ System.out.println(“新密码设置成功!”); } break; case 3: if (saveScore()){ System.out.println(“积分累计成功!”); } break; case 4: resetScore(); break; case 5: scoreQuery(); break; case 6: System.out.println(“感谢您的使用,欢迎下次使用!”); break; default: System.out.println(“操作有误!请重新选择: “); } if(choose==6){ break; } }while(true); }
// 随机生成一个卡号
public int createId(){
Random ramdom = new Random();
int id = ramdom.nextInt(99999999);
// 保证生成不同的id
for(Member m:manger){
if (m.getCardId()==id){
id = ramdom.nextInt(99999999);
}
}
return id;
}
//开卡
public void register(){
Member member = new Member();
System.out.print("请输入注册姓名:");
member.setName(input.next());
System.out.print("请输入密码: ");
// member.setPasswd(input.next());
// 验证密码不低于6位
String pwd;
boolean flag = false;
do{
pwd = input.next();
if(pwd.length()<6){
System.out.println("会员密码不低于6位,请重新输入: ");
flag = false;
}else{
flag = true;
member.setPasswd(pwd);
}
}while(!flag);
member.setCardId(createId());
member.setScore(100);
//开卡日期
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("MM月DD日");
String cardDate = format.format(date);
member.setRegistDate(cardDate);
manger.add(member);
System.out.println("开卡成功,系统赠送100积分,您的会员卡号是:"+member.getCardId());
}
// 验证会员是否存在
public Member hasMember(Member me){
Member member = null;
for (Member m:manger){
if (m.getCardId() == me.getCardId() && m.getPasswd().equals(me.getPasswd())){
member = m;
}
}
return member;
}
// 修改密码
// 卡号 和 原来的密码
public boolean changePwd(){
boolean flag = true;
Member member = new Member();
System.out.println("请输入您的会员卡号: ");
member.setCardId(input.nextInt());
System.out.println("请输入您的会员密码: ");
member.setPasswd(input.next());
member = hasMember(member); //用新的对象 作为参数
if(member!=null){
System.out.print("请输入新的会员密码: ");
String pwd;
boolean flagpwd = true;
do {
pwd = input.next();
if (pwd.length() < 6) {
System.out.println("会员密码不能小于6位,请重新输入: ");
flagpwd = false;
} else {
flagpwd = true;
member.setPasswd(pwd);
}
}while(!flagpwd);
}else{
System.out.println("您输入的会员卡号或者密码错误,无法修改密码");
flag = false;
}
return flag;
}
//积分累计
public boolean saveScore(){
boolean flag = true;
Member member = new Member();
System.out.println("请输入您的会员卡号: ");
member.setCardId(input.nextInt());
System.out.println("请输入您的会员密码: ");
member.setPasswd(input.next());
member = hasMember(member); //用新的对象 作为参数
if (member!=null){
System.out.println("请输入您此次的消费金额(消费1元累计1分):");
int score = input.nextInt();
member.setScore(member.getScore()+score);
flag = true;
}else{
System.out.println("您输入的会员卡号或者密码错误,无法积分!");
flag = false;
}
return flag;
}
//积分查询
public void scoreQuery(){
Member member = new Member();
System.out.println("请输入您的会员卡号: ");
member.setCardId(input.nextInt());
System.out.println("请输入您的会员密码: ");
member.setPasswd(input.next());
member = hasMember(member); //用新的对象 作为参数
if (member!=null){
int score = member.getScore();
System.out.println("您的积分为:"+score);
}else{
System.out.println("无法查询");
}
}
// 积分兑换
public void resetScore(){
Member member = new Member();
System.out.println("请输入您的会员卡号: ");
member.setCardId(input.nextInt());
System.out.println("请输入您的会员密码: ");
member.setPasswd(input.next());
member = hasMember(member); //用新的对象 作为参数
if (member!=null){
System.out.println("请输入您要兑换的积分额度:");
int score = input.nextInt();
if (score<100){
System.out.println("积分太低不允许兑换!");
}else if(score>member.getScore()) {
System.out.println("您的积分不够!");
}else{
member.setScore(member.getScore()-score);
System.out.println("积分兑换成功");
}
}
}
}
```
package com.miniMarket;
public class Member {
private String name;
private int cardId;
private String passwd;
private int score;
private String registDate;
public Member(){}
public Member(String name, int cardId, String passwd, int score, String registDate) {
this.name = name;
this.cardId = cardId;
this.passwd = passwd;
this.score = score;
this.registDate = registDate;
}
public String getName() {
return name;
}
public int getCardId() {
return cardId;
}
public String getPasswd() {
return passwd;
}
public int getScore() {
return score;
}
public String getRegistDate() {
return registDate;
}
public void setName(String name) {
this.name = name;
}
public void setCardId(int cardId) {
this.cardId = cardId;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
public void setScore(int score) {
this.score = score;
}
public void setRegistDate(String registDate) {
this.registDate = registDate;
}
}
package com.miniMarket;
public class Test {
public static void main(String[] args) {
MemberMgr mgr = new MemberMgr();
mgr.start();
}
}
IO 流
File类
import java.io.File;
import java.io.IOException;
public class FileDemo {
//创建文件
public void create(File file){
if(!file.exists()){
try{
file.createNewFile();
System.out.println("文件已经创建");
}catch (IOException e){
e.printStackTrace();
}
}
}
// 获取文件信息
public void showFileInfo(File file){
if(file.exists()){
if(file.isFile()){
System.out.println("文件名称: "+file.getName());
System.out.println("文件绝对路径:"+file.getAbsolutePath());
System.out.println("文件大小: "+file.length()+"个字节");
}else if(file.isDirectory()){
System.out.println(" 文件是个目录");
}else{
System.out.println("文件不存在");
}
}
}
public void delete(File file){
if(file.exists()){
file.delete();
System.out.println("文件已经删除");
}
}
public static void main(String[] args) {
FileDemo filedemo = new FileDemo();
File file = new File("/Users/ay/FileDemo.txt");
filedemo.create(file);
filedemo.showFileInfo(file);
filedemo.delete(file);
}
}
通过流来读写文件
- 流是一组有序的数据序列
- 以先进先出的方式发送信息的通道
InputStream ——> OutputStream
InputStream-> FileInputStream
InputStream字节数入流 (抽象类-基类)
Int read() : 从数入流一个字节一个字节的读,返回的事该字节的整数表示形式,如果读到数入流末尾,会返回-1.