目录
思维导图
API
应用程序编程接口(application programming interface):Java写好的奇数(功能代码),咱们可以直接调用。
1.String
(1)String概述
(2)String类创建对象的两种方式及原理(面试常考)![](https://i-blog.csdnimg.cn/blog_migrate/047ab9ecdd767b17d0f1367111e54c3d.png)
例子:
原理:
1.
2.
(3)String类常见面试题
(4)String类常用API
字符串内容比较,遍历,替换,截取,分割
(字符串的内容比较不适用于"=="号来比较) 忽略大小写比较主要用于比较验证码。还有一些常见的API:
(5)案例
1.验证码
需求:随机产生一个5位的验证码,每位可能是数字,大写字母,小写字母
分析:1.定义一个String类型的变量存储a-z,A-Z,0-9之间的全部字符;
2.循环五次,随机一个范围内的索引,获取对应字符连接起来即可
3.输入验证码,判断是否正确,如果不正确重新输入。
import java.util.Scanner;
import java.util.Random;
public class Code{
public static void main(String[] args){
Random r = new Random();
Scanner s = new Scanner(System.in);
//创建随机字符
char[] ch = new char[5];
String stro = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890";
boolean flag = true;
while(flag){
for (int i = 0;i < 5;i++ ) {
int index = r.nextInt(stro.length());
ch[i] = stro.charAt(index);
}
String code = new String(ch);
System.out.println("验证码为"+code);
//输入验证码
System.out.print("请输入验证码:");
String mycode = s.next();
if (mycode.equalsIgnoreCase(code)) {
System.out.println("输入正确!");
flag = false;
}else
System.out.println("输入错误!请重新操作!");
}
}
}
运行结果:
2.用户登陆系统
需求:模拟用户登录功能,最多只给三次机会
分析:1.注册用户名和登录密码
2.输入用户名和登录密码,判断是否正确(区分大小写.equals())
3.用for循环来控制三次机会
import java.util.Scanner;
public class Users{
public static void main(String[] args){
//定义账号密码
String name = "txdwxh123";
String code = "h123456";
//输入账号密码
Scanner s = new Scanner(System.in);
for (int i = 0;i < 3 ;i++ ) {
System.out.println("请输入账号:");
String myname = s.next();
System.out.println("请输入密码:");
String mycode = s.next();
//判断是否一致(区分大小写)
if (myname.equals(name)) {
if(mycode.equals(code)){
System.out.println("帐号密码正确!");
break;
}
else{
System.out.println("帐号密码不匹配!您还有"+ (3-(i+1)) +"次机会。");
continue;
}
}else{
System.out.println("不存在该账号!您还有"+ (3-(i+1)) +"次机会。");
continue;
}
}
}
}
运行结果:
之前做过类似的哈哈,用API果然更方便。
3.手机号码屏蔽
需求:以字符串的形式从键盘接受一个手机号,将中间四位数屏蔽,最终效果为:
import java.util.Scanner;
public class Tele{
public static void main(String[] args){
Scanner myscanner = new Scanner(System.in);
System.out.println("请输入手机号码:");
String tele = myscanner.next();
String codeTele = tele.replace(tele.substring(3,7),"****");
System.out.println("加密后的手机号码为:\n" + codeTele);
}
}
运行结果:
3.ArrayList
集合与数组类似,也是一种容器,用于装数据的。
(1)集合的特点
(2)ArrayList集合
例子:
(3)ArrayList对于泛型的支持![](https://i-blog.csdnimg.cn/blog_migrate/f3858775cc0e106d6fa85dc15e5aba24.png)
(4)ArrayList常用API
长度:数组用arr.length;String类型用s1.length();集合类型用al.size()。
例子:
(5)Array List案例
1.遍历并删除元素值
import java.util.ArrayList;
public class ArrayList1{
public static void main(String[] args){
ArrayList<Integer> scoreList = new ArrayList<>();
scoreList.add(98);
scoreList.add(77);
scoreList.add(66);
scoreList.add(89);
scoreList.add(79);
scoreList.add(50);
scoreList.add(100);
System.out.println(scoreList);
//完美的方案1
for (int i = 0;i < scoreList.size() ; i++) {
if(scoreList.get(i) < 80){
scoreList.remove(i);
i--;
}
}
System.out.println(scoreList);
//完美的方案2
for (int i = scoreList.size()-1;i >=0 ; i--) {
if(scoreList.get(i) < 80){
scoreList.remove(i);
}
}
System.out.println(scoreList);
}
}
运行结果:
2.输出电影信息
package Movie;
public class Movies {
private String name;
private double score;
private String actor;
public Movies() {
}
public Movies(String name, double score, String actor) {
this.name = name;
this.score = score;
this.actor = actor;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
public String getActor() {
return actor;
}
public void setActor(String actor) {
this.actor = actor;
}
}
package Movie;
import java.util.ArrayList;
public class MovieList {
public static void main(String[] args) {
Movies m1 = new Movies("战狼",5,"吴京");
Movies m2 = new Movies("小时代",2,"杨幂");
Movies m3 = new Movies("少年的你",4.5,"周冬雨");
ArrayList<Movies> movieList = new ArrayList<>();
movieList.add(m1);
movieList.add(m2);
movieList.add(m3);
for (int i = 0; i <movieList.size() ; i++) {
Movies m = movieList.get(i);
System.out.println("电影名称:"+m.getName());
System.out.println("电影评分:"+m.getScore());
System.out.println("电影主演:"+m.getActor()+"\n");
}
}
}
运行结果:
运行机制:
3.学生信息系统的数据搜索
package students;
public class Student {
private String id;
private String name;
private int age;
private String classes;
public Student() {
}
public Student(String id, String name, int age, String classes) {
this.id = id;
this.name = name;
this.age = age;
this.classes = classes;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getClasses() {
return classes;
}
public void setClasses(String classes) {
this.classes = classes;
}
}
import java.util.ArrayList;
import java.util.Scanner;
public class StudentList {
public static void main(String[] args) {
Student s1 = new Student("20180302","叶孤城",23,"护理一班");
Student s2 = new Student("20180303","东方不败",23,"护理二班");
Student s3 = new Student("20180304","西门吹雪",23,"中医学四班");
Student s4 = new Student("20180305","梅超风",23,"神经科二班");
ArrayList<Student> studentList = new ArrayList<>();
studentList.add(s1);
studentList.add(s2);
studentList.add(s3);
studentList.add(s4);
System.out.println("学号\t\t\t姓名\t\t\t年龄\t\t\t班级");
for (int i = 0; i < studentList.size(); i++) {
Student s = studentList.get(i);
System.out.print(s.getId()+"\t");
System.out.print(s.getName()+"\t\t");
System.out.print(s.getAge()+"\t\t\t");
System.out.println(s.getClasses());
}
Student result = Search(studentList);
}
public static Student Search(ArrayList studentList) {
Scanner myscanner = new Scanner(System.in);
boolean flag = true;
while (flag) {
System.out.println("请输入你要查找的学生学号:");
String idinput = myscanner.next();
System.out.println("你要查找的学生信息为:");
System.out.println("学号\t\t\t姓名\t\t\t年龄\t\t\t班级");
for (int i = 0; i < studentList.size(); i++) {
Student s = (Student) studentList.get(i);
if (idinput.equals(s.getId())) {
System.out.print(s.getId()+"\t");
System.out.print(s.getName()+"\t\t");
System.out.print(s.getAge()+"\t\t\t");
System.out.println(s.getClasses());
flag = false;
return s;
}
}
System.out.println("没有你要查找的元素!");
flag = true;
}
return null;
}
}
运行结果:
这一题写完代码之后再看网课,感觉老师写的有bug,这也是我最开始犯的错误——查找完成之后死循环没有结束,继续让你输入学号。正确做法应该是定义Boolean型的flag变量放在while判断位置,如果查找到学生信息,令flag = false;退出循环。