目录
思维导图

API
应用程序编程接口(application programming interface):Java写好的奇数(功能代码),咱们可以直接调用。
1.String


(1)String概述


(2)String类创建对象的两种方式及原理(面试常考)
 
例子:

原理:
1.
 2.
(3)String类常见面试题
1.
2. (4)String类常用API
 (4)String类常用API
 
字符串内容比较,遍历,替换,截取,分割
(字符串的内容比较不适用于"=="号来比较)
 忽略大小写比较主要用于比较验证码。还有一些常见的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对于泛型的支持
 
(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;退出循环。












