20220720 第一组 于芮 面向对象——挺抽象3(第十三天)
string字符串(类)
双等号比较的是虚地址(对象在内存中的存储地址)
等号赋值,地址相等,new赋值,双等号比较也不相等
常用方法
比较字符串的内容
equals方法(等于)
1.需要传参,传入string类型参数
2.有返回值,是Boolean型
3.访问权限public
length方法(获取字符串的长度)
1.不需要传参
2.有返回值,int类型
3.访问权限public
字符串获取长度和数组获取长度有什么区别?
1.数组的length是属性,字符串的length()是方法
下标(索引)--从0开始
charAt方法(取出指定下标位置的字符)
indexof(判断指定字符是否存在)--返回值为字符串在值的下标,如果不存在,返回-1,如果有多个,返回从左到右第一个匹配的目标
indexof(string int)代表从int位置开始查找,包括当前位置
字符串的截取
substring(beginindex)--有返回值
如果传一个参数,从指定位置开始截取,直到字符串的末尾,包括起始位置的字符,生成一个新的字符串,不会改变原有数据
substring(beginindex,endindex)
从指定位置开始,到终止位置,包含起始位置,不包含终止位置。
touppercase()把字符串中的英文字母转成大写--返回新的字符串
tolowercase()把字符串中的英文字母转成小写
startwith()判断是不是以。。开头--返回TRUE或false
equalsignorecase()忽略大小写进行比较内容
trim()去掉字符串前后的空格
split(字符串)根据指定的字符分割,分割之后,分割条件消失了--返回值是string类型的数组
字符串的替换replace()--生成新的字符串
字符串和数组的转换以及字符串和其它数据类型的转换
任何类型做加法,结果都是字符串数据类型和字符串
字符串转数组tochararray();
转成字节型数组在----操作文件时常用
包装器类型(包装类,封装类)
int---Inteengr
char----character
自动封箱:把 int包装成integer(基本类型转换成对应的包装器类型)
自动拆箱:把integer转换成int类型(包装器类型转换成对应的基本数据类型)
JDK5之后的新功能
1.自动装箱,自动封箱
2.增强for循环
3.枚举
JDK7以后的新功能
1.switch case 可以用string
异常
1.数组下标越界
2.内存溢出
3.空指针
4.字符串下标越界
5.数据格式化
今天学习内容不是很多,但是有一个比较大的案例,相比于理论,我觉得实践更重要,今天的实践是一个简易的员工管理系统,一起来看看代码吧!
1 package Employee; 2 3 import java.util.Scanner; 4 5 6 7 import java.util.Scanner; 8 9 /** 10 * 注册和登录! 11 * 封装:属性一定要私有化,提供公有的set、get方法 12 * 1、创建一个User类,username和password 13 * 2、创建一个Employee类,id和name 14 * 3、Demo类。 15 * 16 * 登录: 17 * 输入账号和密码,然后去数组中比对, 18 * 遍历数组,分别比对账号和面,如果比对成功,则输出登录成功,则输入账号或密码错误! 19 * 20 * 21 * 空指针异常NullPointerException 22 * 23 * 注册2.0版本: 24 * 用户名不能重复! 25 * 遍历,用户名和数组中的用户名比对一下 26 * 15分钟! 27 * 28 */ 29 public class Demo { 30 31 public static void main(String[] args) { 32 Scanner sc = new Scanner(System.in); 33 UserManager userManager = new UserManager(); 34 35 36 main:for (;;){ 37 User[] users = userManager.getUsers(); 38 System.out.println("请选择功能:1、注册 2、登录 3、查询账户"); 39 String flag = sc.next(); 40 u:for(;;){ 41 switch (flag) { 42 case "1": 43 System.out.println("请输入账号:"); 44 String username = sc.next(); 45 for (User user : users) { 46 if (user != null) { 47 if (username == user.getUsername()) { 48 System.out.println("用户名不能重复,请重新输入!"); 49 continue u; 50 } 51 } 52 } 53 System.out.println("请输入密码:"); 54 String password = sc.next(); 55 String info = userManager.register(username, password); 56 System.out.println(info); 57 58 continue main; 59 case "2": 60 System.out.println("请输入账号:"); 61 String username1 = sc.next(); 62 System.out.println("请输入密码:"); 63 String password1 = sc.next(); 64 65 boolean b = userManager.login(username1, password1); 66 if (b) { 67 // 进入到员工管理 68 System.out.println("登录成功!"); 69 System.out.println("请选择功能:1.添加员工 2.查询员工 3.修改员工 4.删除员工"); 70 String selection = sc.next(); 71 switch (selection) { 72 case "1": 73 System.out.println("请输入新的员工姓名:"); 74 String username2 = sc.next(); 75 String s = Employee.addEmp(name); 76 System.out.println(s); 77 continue u; 78 79 80 case "2": 81 System.out.println("请选择功能:1.根据id查询 2.查询所有"); 82 String s2 = sc.next(); 83 switch (s2) { 84 case "1": 85 System.out.println("请输入id:"); 86 int id = sc.nextInt(); 87 Employee empById = Employee.getEmpById(id); 88 if (empById != null) { 89 System.out.println("你要找的" + id + "号员工信息为:" + empById.getName()); 90 } else { 91 System.out.println("你要找的" + id + "号员工不存在!"); 92 } 93 continue u; 94 case "2": 95 for (Employee employee : employees) { 96 if (employee != null) { 97 System.out.println(employee.getId() + "," + employee.getName()); 98 } 99 } 100 continue u; 101 } 102 case "3": 103 System.out.println("请输入工号:"); 104 int id = sc.nextInt(); 105 Employee emp = employeeManager.getEmpById(id); 106 if (emp != null) { 107 System.out.println("你要修改的" + id + "号员工信息为:" + emp.getName()); 108 System.out.println("请输入新的姓名:"); 109 String name1 = sc.next(); 110 emp.setName(name1); 111 // 需要把当前已经修改好的对象重新给数组 112 for (int i = 0; i < employees.length; i++) { 113 if (employees[i] == emp) { 114 employees[i] = emp; 115 } 116 } 117 System.out.println("修改成功!新的信息为:" + emp.getId() + "," + emp.getName()); 118 } else { 119 System.out.println("你要找的" + id + "号员工不存在!"); 120 } 121 case "4": 122 System.out.println("请输入工号:"); 123 int id1 = sc.nextInt(); 124 Employee emp1 = employeeManager.getEmpById(id1); 125 if (emp1 != null) { 126 for (int i = 0; i < employees.length; i++) { 127 if (employees[i] == emp1) { 128 employees[i] = null; 129 } 130 } 131 // 移位 132 System.out.println("删除成功!"); 133 } else { 134 System.out.println("你要找的" + id1 + "号员工不存在!"); 135 } 136 } 137 } 138 continue u; 139 } 140 } 141 142 143 } 144 } 145 }
package Employee; public class Employee { private int id; private String name; public Employee(int id, String name) { } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
1 package Employee; 2 3 public class EmployeeManager{ 4 private Employee [] employees = new Employee[10]; 5 private int index = 0; 6 7 private int id = 1001; 8 9 public Employee getEmpById(int id){ 10 Employee emp = null; 11 for (Employee employee : employees) { 12 if(employee != null){ 13 if(id == employee.getId()) { 14 emp = employee; 15 } 16 } 17 } 18 return emp; 19 } 20 21 public String addEmp(String name){ 22 Employee employee = new Employee(id,name); 23 employees[index] = employee; 24 25 index ++; 26 27 28 return "添加成功,工号:" + (id++) + ",姓名:" + name; 29 } 30 31 public Employee[] getEmployees() { 32 return employees; 33 } 34 35 public void setEmployees(Employee[] employees) { 36 this.employees = employees; 37 } 38 39 }
1 package Employee; 2 3 4 5 public class User { 6 7 private String username; 8 private String password; 9 10 public String getUsername() { 11 return username; 12 } 13 14 public void setUsername(String username) { 15 this.username = username; 16 } 17 18 public String getPassword() { 19 return password; 20 } 21 22 public void setPassword(String password) { 23 this.password = password; 24 } 25 26 public User() { 27 } 28 29 public User(String username, String password) { 30 this.username = username; 31 this.password = password; 32 } 33 }
1 package Employee; 2 3 4 5 public class UserManager { 6 7 // User类型的数组 8 // User类型的数中保存的就是一个一个的User对象 9 private User [] users = new User[10]; 10 private int index = 1; 11 12 public UserManager() { 13 users[0] = new User("admin","123456"); 14 } 15 16 public String register(String username, String password){ 17 // 保存账号密码,保存的是User对象 18 // 构建User对象 19 User user = new User(username,password); 20 users[index] = user; 21 22 index ++; 23 // this.index = this.index + 1; 24 25 return "注册成功,账号:" + username + ",密码:" + password; 26 } 27 28 public boolean login(String username,String password) { 29 30 boolean b = false; 31 for (User u : users) { 32 if(u != null){ 33 if(u.getUsername().equals(username) && u.getPassword().equals(password)) { 34 b = true; 35 break; 36 } 37 } 38 } 39 return b; 40 41 } 42 43 public User[] getUsers() { 44 return users; 45 } 46 47 public void setUsers(User[] users) { 48 this.users = users; 49 } 50 51 52 }