前言
记录时间:2023.3.6
已坚持的第八天
java从入门到精通
学习java时间历程记录打卡
早上6:00到 12:00
下午1:00到6:00
java常用API总结
完成代码练习
1.String
1.了解String类的特点
package cn.vqqc.string;
public class StringDemo1 {
public static void main(String[] args) {
//了解String类的特点,String是不可变的原理
String name = "try";
name += "栈";
name += "技术栈";
System.out.println(name);
}
}
2.String类型创建字符串对象的2种方式
package cn.vqqc.string;
/*
目标:String类型创建字符串对象的2种方式
*/
public class StringDemo2 {
public static void main(String[] args) {
//方式一:直接使用引号得到字符串对象
String name = "我爱你中国";
System.out.println(name);
//方式二:
// 1.public String() : 创建一个空白字符串对象,不含有任何内容,(j几乎不用)
String s1 = new String(); //s1 = ""
//2.public String(String) : 根据传入的字符串内容,来创建字符串的对象(几乎不用)
String s2 = new String("try栈");
System.out.println(s2);
//3.public String(char[] c) : 根据字符数组内容,来创建字符串的对象
char[] chars = {'a', 'b', '栈'};
String s3 = new String(chars);
//4.public String(byte[] b) : 根据字节数组内容,来创建字符串的对象
byte[] bytes = {97, 99, 65, 66, 67};
new String(bytes);
System.out.println("---------------------");
//字符串内容指向相同的地址对象
String ss1 = "abc";
String ss2 = "abc";
System.out.println(ss1 == ss2);
//用构造器得到创建字符串的对象(栈内存地址不一样)
char[] chars1 = {'a', 'b', 'c'};
String ss3 = new String(chars1);
String ss4 = new String(chars1);
// ss3 = ss4;
System.out.println(ss3 == ss4);
}
}
3.程序直接编译 String常见
package cn.vqqc.string;
public class StringDemo3 {
public static void main(String[] args) {
//程序直接编译 String常见
String s1 = "abc";
String s2 = "a" + "b" + "c";
System.out.println(s1 == s2);
}
}
4.StringEquals的使用
package cn.vqqc.string;
import java.util.Scanner;
public class StringEqualsDemo4 {
public static void main(String[] args) {
//1.正确登录和密码
String okName = "try栈";
String okPassword = "123456";
String sysCode = "65jKHu";
//2.请输入登录名称和密码
Scanner sc = new Scanner(System.in);
System.out.println("登录名称:");
String name = sc.next();
System.out.println("登录密码:");
String password = sc.next();
System.out.println("验证码:");
String code = sc.next();
//3.判断用户输入的登录名称和密码与正确的内容是否相等。
if(okName .equals(name) && okPassword .equals(password) || sysCode .equalsIgnoreCase(code)){
System.out.println("登录成功!");
}else {
System.out.println("用户名或者密码错误!");
}
//4.忽略大小写比较内容的Api :一般用于比较验证码这样的业务逻辑
String code1 = "65jkhu";
System.out.println(sysCode.equals((code1))); //false
System.out.println(sysCode.equalsIgnoreCase((code1))); //true
}
}
5.使用String完成随机生成五个的验证码
package cn.vqqc.string;
/*
练习题 :使用String完成随机生成五个的验证码
*/
import java.util.Random;
public class StringExec {
public static void main(String[] args) {
//1.定义可能出现的字符信息
String datas = "abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ0123456789";
//2.循环5次,每个生成一个随机的索引,获取对应的字符连接起来即可
String code = "";
Random r = new Random();
for (int i = 0; i < 5; i++) {
//随机一个索引
int index = r.nextInt(datas.length());
char c = datas.charAt(index);
code += c;
}
//3.输出字符串变量即可
System.out.println(code);
}
}
6.模拟用户登录
package cn.vqqc.string;
/*
练习题 :模拟用户登录
*/
import java.util.Scanner;
public class StringExec1 {
public static void main(String[] args) {
//1.定义正确的登录名称和密码
String okLoginName = "admin";
String okPassword = "123456";
//2.定义一个循环,循环3次,让用户登录
Scanner sc = new Scanner(System.in);
for (int i = 1; i <= 3; i++) {
System.out.println("请您输入登录名称");
String loginName = sc.next();
System.out.println("请您输入登录密码");
String password = sc.next();
//3.判断登录是否成功!
if(okLoginName.equals(loginName)) {
//4.判断密码是否正确
if (okPassword.equals(password)) {
System.out.println("登录成功!");
break;
} else {
//密码错误了
System.out.println("您的密码不正确!您还剩余" + (3 - i) + "次机会");
}
}else {
System.out.println("登录名称错误了!您还剩余" + (3 - i) + "次机会");
}
}
}
}
7.屏蔽手机号中间四位数
package cn.vqqc.string;
import java.util.Scanner;
public class StringExec2 {
public static void main(String[] args) {
//1.键盘录入一个手机号码
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的手机号码:");
String tel = sc.next();
//2.截取号码的请三位,后四位 1885484595
String before = tel.substring(0,3); //0 1 2
String after = tel.substring(7); // 从索引7开始截取到手机号的末尾
String s = before + "****" + after;
System.out.println(s);
}
}
2.ArrayList
1.创建ArrayList对象,代表集合容器,往里面添加元素
package cn.vqqc.arraylist;
/*
目标: 创建ArrayList对象,代表集合容器,往里面添加元素
*/
import java.util.ArrayList;
import java.util.Objects;
public class ArrayListDemo1 {
public static void main(String[] args) {
//1.创建ArrayList集合对象
// ArrayList<String> list = new ArrayList<String>();
ArrayList<String> list = new ArrayList<>(); //JDK 1.7开始泛型后面可以不写
//添加数据
list.add("java");
list.add("java");
list.add("try栈");
// list.add(20);
// list.add(35.5);
System.out.println(list);
//3.给指定的索引的位置输入元素
list.add(0,"try栈");
System.out.println(list);
ArrayList<Integer> list2 = new ArrayList<>();
list2.add(100);
//list2.add("java"); //报错
}
}
2.能够使用泛型约束ArrayList集合操作的数据类型
package cn.vqqc.arraylist;
/*
目标: 能够使用泛型约束ArrayList集合操作的数据类型
*/
import java.util.ArrayList;
public class ArrayListDemo2 {
public static void main(String[] args) {
ArrayList list = new ArrayList();
//添加数据
list.add("java");
list.add("java");
list.add("try栈");
list.add(20);
list.add(35.5);
list.add(false);
}
}
3.掌握ArrayList集合的常用API
package cn.vqqc.arraylist;
/*
目标: 掌握ArrayList集合的常用API
*/
import java.util.ArrayList;
public class ArrayListDemo3 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("java");
list.add("java");
list.add("try栈");
list.add("MySql");
list.add("HTML");
//1.获取某个索引位置处的元素值
System.out.println(list);
String e = list.get(3);
System.out.println(e);
//2.获取集合大小(元素个数)
System.out.println(list.size());
//3.完成集合遍历
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
//4.删除某个索引位置处的元素值,并返回被删除的元素值
System.out.println(list); // [java, java, try栈, MySql, HTML]
String e2 = list.remove(3);
System.out.println(e2);
System.out.println(list);
//5.直接删除元素值,删除成功返回true,删除失败返回false
System.out.println(list.remove("HTML"));
System.out.println(list);
System.out.println("----------------------");
ArrayList<String> list1 = new ArrayList<>();
list1.add("java");
list1.add("try栈");
list1.add("java");
list1.add("MySql");
list1.add("HTML");
//只会删除第一次删除的元素,后面不删除
System.out.println(list1.remove("java"));
System.out.println(list1);
//6.修改某个索引位置处的元素值
String e3 = list1.set(0, "小明");
System.out.println(e3);
System.out.println(list1);
}
}
4.学习遍历并删除元素的正确元素
package cn.vqqc.arraylist;
import java.util.ArrayList;
public class ArrayListTest4 {
public static void main(String[] args) {
//目标:学习遍历并删除元素的正确元素
//1.创建一个Arraylist集合一个班级学生的成绩
ArrayList<Integer> scores = new ArrayList<>();
scores.add(98);
scores.add(77);
scores.add(66);
scores.add(89);
scores.add(79);
scores.add(50);
scores.add(100);
// //错误的代码
// //把低于80分的成绩从集中去掉
// for (int i = 0; i < scores.size(); i++) {
// int score = scores.get(i);
// if(score < 80){
// //这个分数必须删除
// scores.remove(i);
// }
// }
System.out.println(scores);
//完美的方案之一
//把低于80分的成绩从集中去掉
/* for (int i = 0; i < scores.size(); i++) {
int score = scores.get(i);
if(score < 80){
//这个分数必须删除
scores.remove(i);
i--; //删除成功后,必须退一步,这样可以保证这个位置不会改变
}
}
System.out.println(scores); */
//从后面倒着遍历并删除
for (int i = scores.size() - 1; i >= 0; i--) {
int score = scores.get(i);
if(score < 80){
scores.remove(i);
}
}
System.out.println(scores);
}
}
5.案例:集合存储自定义元素并遍历
1.定义类
package cn.vqqc.arraylist;
public class Movie {
private String name;
private double score;
private String actor;
public Movie() {
}
public Movie(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;
}
}
2.案例
package cn.vqqc.arraylist;
import java.util.ArrayList;
/**
案例:集合存储自定义元素并遍历。
需求:定义电影类(名称,分值,演员),创建3个电影对象,代表三部影片,存入集合中并遍历。
《肖生克的救赎》, 9.7 , 罗宾斯
《霸王别姬》, 9.6 , 张国荣、张丰毅
《阿甘正传》, 9.5 , 汤姆.汉克斯
*/
public class ArrayListTest5{
public static void main(String[] args) {
// 1、定义一个电影类:Movie
// 2、定义一个ArrayList集合存储这些影片对象。
ArrayList<Movie> movies = new ArrayList<>();
// 3、创建影片对象封装电影数据,把对象加入到集合中去。
// Movie m1 = new Movie("《肖生克的救赎》", 9.7 , "罗宾斯");
// movies.add(m1);
movies.add(new Movie("《肖生克的救赎》", 9.7 , "罗宾斯"));
movies.add(new Movie("《霸王别姬》", 9.6 , "张国荣、张丰毅"));
movies.add(new Movie("《阿甘正传》", 9.5 , "汤姆.汉克斯"));
System.out.println(movies);
// 4、遍历集合中的影片对象并展示出来
for (int i = 0; i < movies.size(); i++) {
Movie movie = movies.get(i);
System.out.println("片名:" + movie.getName());
System.out.println("评分:" + movie.getScore());
System.out.println("主演:" + movie.getActor());
}
}
}
6.案例:学生信息系统:展示数据,并按照学号完成搜索
1.定义类
package cn.vqqc.arraylist;
public class Student {
private String studyId;
private String name;
public Student() {
}
public Student(String studyId, String name, int age, String className) {
this.studyId = studyId;
this.name = name;
this.age = age;
this.className = className;
}
public String getStudyId() {
return studyId;
}
public void setStudyId(String studyId) {
this.studyId = studyId;
}
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 getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
private int age;
private String className;
}
2.案例
package cn.vqqc.arraylist;
import java.util.ArrayList;
import java.util.Scanner;
/**
案例:学生信息系统:展示数据,并按照学号完成搜索
学生类信息(学号,姓名,性别,班级)
测试数据:
"20180302","叶孤城",23,"护理一班"
"20180303","东方不败",23,"推拿二班"
"20180304","西门吹雪",26,"中药学四班"
"20180305","梅超风",26,"神经科2班"
*/
public class ArrayListTest6 {
public static void main(String[] args) {
// 1、定义一个学生类,后期用于创建对象封装学生数据
// 2、定义一个集合对象用于装学生对象
ArrayList<Student> students = new ArrayList<>();
students.add(new Student("20180302","叶孤城",23,"护理一班"));
students.add(new Student("20180303","东方不败",23,"推拿二班"));
students.add(new Student( "20180304","西门吹雪",26,"中药学四班"));
students.add(new Student( "20180305","梅超风",26,"神经科2班"));
System.out.println("学号\t\t\t名称\t\t年龄\t班级");
// 3、遍历集合中的每个学生对象并展示其数据
for (int i = 0; i < students.size(); i++) {
Student s = students.get(i);
System.out.println(s.getStudyId() +"\t\t" + s.getName()+"\t\t"
+ s.getAge() +"\t\t" + s.getClassName());
}
// 4、让用户不断的输入学号,可以搜索出该学生对象信息并展示出来(独立成方法)
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请您输入要查询的学生的学号:");
String id = sc.next();
Student s = getStudentByStudyId(students, id);
// 判断学号是否存在
if(s == null){
System.out.println("查无此人!");
}else {
// 找到了该学生对象了,信息如下
System.out.println(s.getStudyId() +"\t\t" + s.getName()+"\t\t"
+ s.getAge() +"\t\t" + s.getClassName());
}
}
}
/**
根据学号,去集合中找出学生对象并返回。
* @param students
* @param studyId
* @return
*/
public static Student getStudentByStudyId(ArrayList<Student> students, String studyId){
for (int i = 0; i < students.size(); i++) {
Student s = students.get(i);
if(s.getStudyId().equals(studyId)){
return s;
}
}
return null; // 查无此学号!
}
}
视频总结
1.String、ArrayList课程安排
https://www.bilibili.com/video/BV1Cv411372m/?p=78
2.String概述、对象创建的原理
https://www.bilibili.com/video/BV1Cv411372m/?p=79
3.String类常见面试题
https://www.bilibili.com/video/BV1Cv411372m/?p=80
4.String类常用API
https://www.bilibili.com/video/BV1Cv411372m/?p=81
5.String案例:验证码、登录、隐私号码
https://www.bilibili.com/video/BV1Cv411372m/?p=82
6.集合概述、ArrayList的使用
https://www.bilibili.com/video/BV1Cv411372m/?p=83
7.集合案例、ArrayList遍历删除、存对象、搜索
https://www.bilibili.com/video/BV1Cv411372m/?p=84
8.总结:常用API(String、ArrayList使用)
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容