javas

常用Java API

  • java.lang
  • Java.util
  • java.io
  • Java.sql
  • …..

分包归类学习,随时查看帮助文档

枚举

用来限制用户的输入范围,比如国家的范围为 [美国,中国,日本,韩国…]
枚举指的是由一组固定的常量组成的类型。通过enum声明枚举,使用枚举的好处就是类型安全,易于输入,代码清晰。
案例1: 使用枚举限定学生性别输入

  1. package com.api;
  2. public enum Genders {
  3. 男,女
  4. }
  1. package com.api;
  2. public class Student {
  3. public Genders sex;
  4. public static void main(String[] args) {
  5. Student stu = new Student();
  6. // 使用枚举保证了sex属性的正确赋值
  7. // 类型安全,易于属于和赋值
  8. stu.sex= Genders.女;
  9. }
  10. }

案例2: 根据用户输入今天是星期几,对用户一周做的事情作出提示

  1. package com.api;
  2. public enum Week {
  3. MON,TUE,WES,THU,FRI,SAT,SUN
  4. }
  1. package com.api;
  2. public class WeekDo {
  3. //根据输入星期几,输出做什么事
  4. public void doWhat(int day){
  5. if(day>7 || day<1){
  6. System.out.println("输入参数必须在1-7");
  7. return;
  8. }
  9. switch (day){
  10. case 1:
  11. case 2:
  12. case 3:
  13. case 4:
  14. case 5:
  15. System.out.println("工作日,请努力工作");
  16. break;
  17. case 6:
  18. System.out.println("今天周六");
  19. break;
  20. case 7:
  21. System.out.println("今天周日");
  22. break;
  23. }
  24. }
  25. // 使用枚举
  26. public void doWhat2(Week day){
  27. switch (day){
  28. case MON:
  29. case TUE:
  30. case WES:
  31. case THU:
  32. case FRI:
  33. System.out.println("工作日,请努力工作");
  34. break;
  35. case SAT:
  36. System.out.println("今天周六");
  37. break;
  38. case SUN:
  39. System.out.println("今天周日");
  40. break;
  41. }
  42. }
  43. public static void main(String[] args) {
  44. WeekDo wd = new WeekDo();
  45. wd.doWhat(8);
  46. wd.doWhat2(Week.SUN);
  47. }
  48. }

包装类

存放在java.lang 包中,包装类提供了一系列使用到的方法,而且集合无法存放基本数据类型,需转换成包装类。因为集合类默认的存储单元是object类,基本数据类型是不行的,需要转换成类,就是对应的封装类。

| 原始类型 | 封装类 | | —- | —- |

| boolean | Boolean |

| char | Character |

| byte | Byte |

| short | Short |

| int | Integer |

| long | Long |

| float | Float |

| double | Double |

  1. public class Test2 {
  2. public static void main(String[] args) {
  3. // (1) 已基本数据类型作为参数 调用构造方法
  4. int iNum = 10;
  5. Integer i = new Integer(iNum);
  6. double dNum = 1.5;
  7. Double d = new Double(dNum);
  8. char cNum = 'a';
  9. Character c = new Character(cNum);
  10. float fNum = 9.6f;
  11. Float f = new Float(fNum);
  12. boolean bNum = true;
  13. Boolean b = new Boolean(bNum);
  14. //(2) 除Character以外,以字符串作为参数
  15. // Character 没有带字符串作为参数的构造方法
  16. Integer i1 = new Integer("123");
  17. Double d2 = new Double("4.5");
  18. Float f3 = new Float("2.5f");
  19. System.out.println(f3);
  20. Boolean b3 = new Boolean("True");
  21. System.out.println(b3);
  22. Boolean b4 = new Boolean("ss");
  23. System.out.println(b4);
  24. }
  25. }

包装类的常用方法:

  1. public class Test3 {
  2. public static void main(String[] args) {
  3. // xxxValue() 包装类 -> 基本数据类型
  4. Integer i = new Integer("123");
  5. int ii = i.intValue();
  6. Boolean b = new Boolean("True");
  7. boolean bb = b.booleanValue();
  8. //toString() 基本数据类型 -> 字符串
  9. int num = 10;
  10. String sNum = Integer.toString(num);
  11. boolean bs = true;
  12. String bsd = Boolean.toString(bs);
  13. System.out.println(bsd);
  14. //更常用的基本数据类型转换为字符串的方法
  15. String nums = 100+"";
  16. String dsdd = true+"";
  17. System.out.println(dsdd);
  18. //parseXXX() 字符串 -> 基本数据类型 除character外
  19. String age = "17";
  20. int ageNum = Integer.parseInt(age);
  21. String score = "100";
  22. int scores = Integer.parseInt(score);
  23. System.out.println(scores); //100
  24. // valueOf(基本数据类型) 基本数据类型 -> 包装类
  25. // valueOf(字符串) 字符串 -> 包装类
  26. int j = 90;
  27. Integer j1 = Integer.valueOf(j);
  28. String m = "123";
  29. Integer mi = Integer.valueOf(m);
  30. System.out.println(mi);
  31. }
  32. }

Math类

基本数学方法;基本运算,指数,随机数等。

超市会员管理系统 小项目练习

  1. 需求分析

YEf6GX
wtuYvq

  1. 思路分析
  • 会员管理类
  • 所有会员(汇总) 集合。 List ArrayList
  • 开卡
  • 输入会员信息 - 姓名 密码(长度验证) 卡号(随机) 开卡日期
  • 将注册成功的会员添加进集合
  • 修改密码
  • 查找会员 验证是否存在 会员密码重新赋值
  • 积分累计,积分兑换
  • 验证会员是否存在 更新积分属性
  • 查询积分
  • 验证会员是否存在,查找会员,显示信息
  • 退出
  • 会员类
  • 姓名 卡号 密码 积分 开卡日期
  • 测试类
  1. 代码实现 ``` package com.miniMarket;

import java.text.SimpleDateFormat; import java.util.*;

public class MemberMgr { // 所有会员 List manger = new ArrayList(); Scanner input = new Scanner(System.in);

  1. // 输出欢迎菜单
  2. public void menu(){
  3. System.out.println("**************** 欢迎使用超市管理系统 ****************");
  4. System.out.println("1. 开卡 2. 修改密码 3. 积分累计 4. 积分兑换 5. 剩余积分查询 6.退出");
  5. System.out.println("**************************************************");
  6. System.out.print("请选择: ");
  7. }
  8. // 搭建项目整体流程
  9. public void start(){
  10. do{
  11. menu();
  12. int choose = input.nextInt();
  13. switch (choose){
  14. 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); }

  1. // 随机生成一个卡号
  2. public int createId(){
  3. Random ramdom = new Random();
  4. int id = ramdom.nextInt(99999999);
  5. // 保证生成不同的id
  6. for(Member m:manger){
  7. if (m.getCardId()==id){
  8. id = ramdom.nextInt(99999999);
  9. }
  10. }
  11. return id;
  12. }
  13. //开卡
  14. public void register(){
  15. Member member = new Member();
  16. System.out.print("请输入注册姓名:");
  17. member.setName(input.next());
  18. System.out.print("请输入密码: ");

// member.setPasswd(input.next());

  1. // 验证密码不低于6位
  2. String pwd;
  3. boolean flag = false;
  4. do{
  5. pwd = input.next();
  6. if(pwd.length()<6){
  7. System.out.println("会员密码不低于6位,请重新输入: ");
  8. flag = false;
  9. }else{
  10. flag = true;
  11. member.setPasswd(pwd);
  12. }
  13. }while(!flag);
  14. member.setCardId(createId());
  15. member.setScore(100);
  16. //开卡日期
  17. Date date = new Date();
  18. SimpleDateFormat format = new SimpleDateFormat("MM月DD日");
  19. String cardDate = format.format(date);
  20. member.setRegistDate(cardDate);
  21. manger.add(member);
  22. System.out.println("开卡成功,系统赠送100积分,您的会员卡号是:"+member.getCardId());
  23. }
  24. // 验证会员是否存在
  25. public Member hasMember(Member me){
  26. Member member = null;
  27. for (Member m:manger){
  28. if (m.getCardId() == me.getCardId() && m.getPasswd().equals(me.getPasswd())){
  29. member = m;
  30. }
  31. }
  32. return member;
  33. }
  34. // 修改密码
  35. // 卡号 和 原来的密码
  36. public boolean changePwd(){
  37. boolean flag = true;
  38. Member member = new Member();
  39. System.out.println("请输入您的会员卡号: ");
  40. member.setCardId(input.nextInt());
  41. System.out.println("请输入您的会员密码: ");
  42. member.setPasswd(input.next());
  43. member = hasMember(member); //用新的对象 作为参数
  44. if(member!=null){
  45. System.out.print("请输入新的会员密码: ");
  46. String pwd;
  47. boolean flagpwd = true;
  48. do {
  49. pwd = input.next();
  50. if (pwd.length() < 6) {
  51. System.out.println("会员密码不能小于6位,请重新输入: ");
  52. flagpwd = false;
  53. } else {
  54. flagpwd = true;
  55. member.setPasswd(pwd);
  56. }
  57. }while(!flagpwd);
  58. }else{
  59. System.out.println("您输入的会员卡号或者密码错误,无法修改密码");
  60. flag = false;
  61. }
  62. return flag;
  63. }
  64. //积分累计
  65. public boolean saveScore(){
  66. boolean flag = true;
  67. Member member = new Member();
  68. System.out.println("请输入您的会员卡号: ");
  69. member.setCardId(input.nextInt());
  70. System.out.println("请输入您的会员密码: ");
  71. member.setPasswd(input.next());
  72. member = hasMember(member); //用新的对象 作为参数
  73. if (member!=null){
  74. System.out.println("请输入您此次的消费金额(消费1元累计1分):");
  75. int score = input.nextInt();
  76. member.setScore(member.getScore()+score);
  77. flag = true;
  78. }else{
  79. System.out.println("您输入的会员卡号或者密码错误,无法积分!");
  80. flag = false;
  81. }
  82. return flag;
  83. }
  84. //积分查询
  85. public void scoreQuery(){
  86. Member member = new Member();
  87. System.out.println("请输入您的会员卡号: ");
  88. member.setCardId(input.nextInt());
  89. System.out.println("请输入您的会员密码: ");
  90. member.setPasswd(input.next());
  91. member = hasMember(member); //用新的对象 作为参数
  92. if (member!=null){
  93. int score = member.getScore();
  94. System.out.println("您的积分为:"+score);
  95. }else{
  96. System.out.println("无法查询");
  97. }
  98. }
  99. // 积分兑换
  100. public void resetScore(){
  101. Member member = new Member();
  102. System.out.println("请输入您的会员卡号: ");
  103. member.setCardId(input.nextInt());
  104. System.out.println("请输入您的会员密码: ");
  105. member.setPasswd(input.next());
  106. member = hasMember(member); //用新的对象 作为参数
  107. if (member!=null){
  108. System.out.println("请输入您要兑换的积分额度:");
  109. int score = input.nextInt();
  110. if (score<100){
  111. System.out.println("积分太低不允许兑换!");
  112. }else if(score>member.getScore()) {
  113. System.out.println("您的积分不够!");
  114. }else{
  115. member.setScore(member.getScore()-score);
  116. System.out.println("积分兑换成功");
  117. }
  118. }
  119. }

}

  1. ```
  2. package com.miniMarket;
  3. public class Member {
  4. private String name;
  5. private int cardId;
  6. private String passwd;
  7. private int score;
  8. private String registDate;
  9. public Member(){}
  10. public Member(String name, int cardId, String passwd, int score, String registDate) {
  11. this.name = name;
  12. this.cardId = cardId;
  13. this.passwd = passwd;
  14. this.score = score;
  15. this.registDate = registDate;
  16. }
  17. public String getName() {
  18. return name;
  19. }
  20. public int getCardId() {
  21. return cardId;
  22. }
  23. public String getPasswd() {
  24. return passwd;
  25. }
  26. public int getScore() {
  27. return score;
  28. }
  29. public String getRegistDate() {
  30. return registDate;
  31. }
  32. public void setName(String name) {
  33. this.name = name;
  34. }
  35. public void setCardId(int cardId) {
  36. this.cardId = cardId;
  37. }
  38. public void setPasswd(String passwd) {
  39. this.passwd = passwd;
  40. }
  41. public void setScore(int score) {
  42. this.score = score;
  43. }
  44. public void setRegistDate(String registDate) {
  45. this.registDate = registDate;
  46. }
  47. }
  1. package com.miniMarket;
  2. public class Test {
  3. public static void main(String[] args) {
  4. MemberMgr mgr = new MemberMgr();
  5. mgr.start();
  6. }
  7. }

IO 流

File类

Yl2rxf

  1. import java.io.File;
  2. import java.io.IOException;
  3. public class FileDemo {
  4. //创建文件
  5. public void create(File file){
  6. if(!file.exists()){
  7. try{
  8. file.createNewFile();
  9. System.out.println("文件已经创建");
  10. }catch (IOException e){
  11. e.printStackTrace();
  12. }
  13. }
  14. }
  15. // 获取文件信息
  16. public void showFileInfo(File file){
  17. if(file.exists()){
  18. if(file.isFile()){
  19. System.out.println("文件名称: "+file.getName());
  20. System.out.println("文件绝对路径:"+file.getAbsolutePath());
  21. System.out.println("文件大小: "+file.length()+"个字节");
  22. }else if(file.isDirectory()){
  23. System.out.println(" 文件是个目录");
  24. }else{
  25. System.out.println("文件不存在");
  26. }
  27. }
  28. }
  29. public void delete(File file){
  30. if(file.exists()){
  31. file.delete();
  32. System.out.println("文件已经删除");
  33. }
  34. }
  35. public static void main(String[] args) {
  36. FileDemo filedemo = new FileDemo();
  37. File file = new File("/Users/ay/FileDemo.txt");
  38. filedemo.create(file);
  39. filedemo.showFileInfo(file);
  40. filedemo.delete(file);
  41. }
  42. }

通过流来读写文件

  1. - 流是一组有序的数据序列
  2. - 以先进先出的方式发送信息的通道

InputStream ——> OutputStream
InputStream-> FileInputStream
InputStream字节数入流 (抽象类-基类)
Int read() : 从数入流一个字节一个字节的读,返回的事该字节的整数表示形式,如果读到数入流末尾,会返回-1.