
常用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);// 保证生成不同的idfor(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.
