学习时间:
2022 /7/2 - 7/3 七月第一个周末
学习目标:
视频p115-p149;
1.字符串
2.集合基础;
3.学生管理系统;
学习内容:
目录
String对象特点编辑new会开辟新内存,直接赋值 如果两个值一样内存位置也一样
1.String
1.String
-
String概述

-
String构造方法
//string构造方法: //public String(),创建一个空白字符串对象,不含有任何内容; //public String(char[] chs),根据字符串数组的内容,来创建字符串对象。 //public Strinf(byte[] bys),根据字节数组内容,来创建字符串对象。 //String s=“abc”;直接赋值的方法创建字符串对象,内容就是abc; //推荐直接赋值的方法得到字符串对象 public class String_01 { public static void main(String[] args) { //public String(),创建一个空白字符串对象,不含有任何内容; String s1 = new String(); System.out.println("s1"+s1); //public String(char[] chs),根据字符串数组的内容,来创建字符串对象。 char[] chs={'a','b','c'}; String s2=new String(chs); System.out.println("s2"+s2); //public Strinf(byte[] bys),根据字节数组内容,来创建字符串对象。 byte[] bys={97,98,99}; String s3 = new String(bys); System.out.println("s3"+s3); //String s=“abc”;直接赋值的方法创建字符串对象,内容就是abc; String s4="abc"; System.out.println("s4"+s4); } } -
String对象特点
new会开辟新内存,直接赋值 如果两个值一样内存位置也一样 -
字符串比较

public class test { public static void main(String[] args){ char[] arr = {'a','b','c'}; String s1 = new String(arr); String s2 = new String(arr); String s3 = "abc"; String s4 = "abc"; System.out.println(s1==s2); System.out.println(s1==s3); System.out.println(s3==s4); System.out.println("````````````````````````"); System.out.println(s1.equals(s2)); System.out.println(s1.equals(s3)); System.out.println(s3.equals(s4)); } }
案例
-
用户登录
import java.util.Scanner; //需求:已知用户名和密码,请用程序实现模拟用户登录,总共给三次机会,登陆之后,给出相应提示。 public class Lojinn{ public static void main(String[] args) { String username = "susu"; String passport = "123"; for(int i = 1;i <= 3;i++){ Scanner sc = new Scanner(System.in); System.out.println("请输入用户名:"); String name=sc.nextLine(); System.out.println("请输入密码:"); String port= sc.nextLine(); if((name.equals(username)) && (port.equals(passport))) { System.out.println("登陆成功"); break; }else{ if(2-i==0) { System.out.println("登陆失败,账号锁定。"); }else{ System.out.println("登陆失败,你还有"+(2-i)+"次机会"); } } } } } -
遍历字符串
import java.util.Scanner; //字符串的索引也是从0开始的、 public class zhifuchuan { public static void main(String[] args) { //键盘录入一个字符串,用Scanner实现; Scanner sc=new Scanner(System.in); System.out.printf("请输入一个字符串:"); String line= sc.nextLine(); for(int i=0;i<line.length();i++) { System.out.println(line.charAt(i)); } } }
-
统计字符次数
import java.util.Scanner; //需求:键盘录入一个字符串,统计该字符串中大写字母字符,小写字母字符,数字字符字符出现的次数 //判断遍历到的字符属于那种类型,然后对应类型变量的统计+1。 public class accuse { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.printf("请输入一个字符串"); String line=sc.nextLine(); int bigCount=0; int smallCount=0; int numberCount=0; for(int i=0;i<line.length();i++) { char ch=line.charAt(i); if(ch>'A'&&ch<'Z') { bigCount++; }else if(ch>'a'&&ch<'z') { smallCount++; }else if (ch>'0'&&ch<'9') { numberCount++; } } System.out.println("大写字母:"+bigCount+"个"); System.out.println("小写字母:"+smallCount+"个"); System.out.println("数字:"+numberCount+"个"); } }
-
拼接字符串
//要求:定义一个方法,把int数组中的数据按照指定格式拼接成一个字符出返回, //调用方法,并在控制台输出结果。例如,数组为int[]arr={1,2,3};执行后输出结果为[1, 2,3]' public class stick { public static void main(String[] args) { int[] arr={1,2,3}; String s=arrayToString(arr); System.out.println("s:"+ s); } public static String arrayToString(int[] arr) { String s=""; s+="["; for(int i=0;i<arr.length;i++) { if(i==arr.length-1) { s+=arr[i]; }else{ s+=arr[i]; s+=", "; } } s+="]"; return s; } } - 字符串反转
import java.util.Scanner; //定义一个方法,实现字符串反转。 public class reverses { public static void main(String[] args) { Scanner sc= new Scanner(System.in); System.out.printf("请输入一个字符串:"); String line=sc.nextLine(); String s=reverse(line); System.out.println("s:"+ s); } public static String reverse(String s) { String ss=""; for(int i=s.length()-1;i>=0;i--) { ss+=s.charAt(i); } return ss; } }
2.StringBuilder
-
StringBuilder概述

如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费内存空间,而这种操作还不可避免。
StringBuilder是一个可变的字符串类,我们可以把它看成是一个容器
这里的可变指的是StringBuilder对象中的内容是可变的String和StringBuilder的区别:
String:内容是不可变的StringBuilder:内容是可变的 -
StringBuilder构造方法

-
StringBuilder 和String相互转换
1.StringBuilder转换为String
publicString toString(): 通过 toString()就可以实现把StringBuilder转换为String
2.String转换为StringBuilder
public StringBuilder(String s): 通过构造方法就可以实现把String转换为StringBuilder
案例:
1.字符串拼接升级版
public class stickUp {
public static void main(String[] args) {
int[] arr={1,2,3};
String s=arrayToString(arr);
System.out.println("s:"+s);
}
public static String arrayToString(int[] arr){
StringBuilder sb=new StringBuilder();
sb.append("[");
for(int i=0;i<arr.length;i++)
{
if(i== arr.length-1)
{
sb.append(arr[i]);
}else{
sb.append(arr[i]).append(", ");
}
}
sb.append("]");
String s= sb.toString();
return s;
}
}
2.字符串反转升级版
public class reverseUp {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String line = sc.nextLine();
String s=myReserve(line);
System.out.println("s:"+s);
}
public static String myReserve(String s) {
/* StringBuilder sb=new StringBuilder(s);
sb.reverse();
String ss=sb.toString();
return ss;*/
return new StringBuilder(s).reverse().toString();
}
}
2.集合基础
-
集合概述
集合类的特点:提供一种存储空问可变的存储模型,存储的数据容量可以发生改变集合类有很多,目前我们先学习一个: ArrayList

-
ArrayList的构造方法和添加方法
/* ArrayList的构造方法: public ArrayList():创建一个空的集合对象。 ArrayList的添加方法: public boolean add(E e):将指定元素追加到此集合的末尾。 public void add(index, E elemen):在此集合的指定位置插入指定元素。 */ public class FundnAdd { public static void main(String[] args) { ArrayList<String> array=new ArrayList<String>(); // System.out.println(array.add("hello")); array.add("hello"); array.add("world"); array.add("java"); array.add(1,"wuhu"); System.out.println("array:"+array); } }第二种在指定位置添加方法时,如果是中间部分,那数组中的元素依次后移;如果在末尾位置,那么直接补到结尾,如果超过结尾,比如本来0-2,插入到4位置,越界,会报错。
-
ArrayList的常用方法

remove&set&get:如果删除越界处的元素,会报错。
-
案例
- 1.储存字符串
//需求:创建一个储存字符串的集合,存储3个字符串元素,实用程序在控制台遍历该集合。 public class chuncu { public static void main(String[] args) { //创建集合对象 ArrayList<String> array =new ArrayList<String>(); //在集合中添加字符串对象 array.add("liu"); array.add("zuo"); array.add("feng"); //遍历集合。通过get(int index)实现。 /* System.out.println(array.get(0)); System.out.println(array.get(1)); System.out.println(array.get(2));*/ //遍历集合,其次要获得到集合的长度,用size()方法实现。 for(int i=0;i<array.size();i++) { String s=array.get(i); System.out.println(s); } } } - 2.储存学生对象
public class Student { private String name; private int age; public Student() {} public Student(String name,int age){ this.name=name; this.age=age; } public void setName(String name){ this.name=name; } public void setAge(int age) { this.age=age; } public String getName() { return name; } public int getAge() { return age; } }//需求:创建一个存储学生对象的集合,存储三个学生对象,使用程序实现在控制台遍历改集合。 public class cunStudents { public static void main(String[] args) { //创建集合对象 ArrayList<Student> array=new ArrayList<Student>(); //创建学生对象 Student s1=new Student("小明",15); Student s2=new Student("小娜",16); Student s3=new Student("小英",14); //添加学生对象到集合中 array.add(s1); array.add(s2); array.add(s3); for(int i=0;i<array.size();i++) { Student s= array.get(i); System.out.println(s.getName()+","+s.getAge()); } } } -
学生管理系统
- 3.储存学生对象并遍历升级版
-
public class Student { private String sid; private String name; private String age; private String address; public Student() { } public Student(String sid, String name, String age, String address) { this.sid = sid; this.name = name; this.age = age; this.address = address; } public String getSid() { return sid; } public void setSid(String sid) { this.sid = sid; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }上面是学生类;下面是主界面。 利用Alt + Ins 可以快速设置set和get方法。
import java.sql.SQLOutput; import java.util.ArrayList; import java.util.Scanner; public class StudentManager { public static void main(String[] args) { ArrayList<Student> array=new ArrayList<Student>(); while (true) { System.out.println("------欢迎来到学生管理系统------"); System.out.println("1 添加学生"); System.out.println("2 删除学生"); System.out.println("3 修改学生"); System.out.println("4 查看所有学生"); System.out.println("5 退出"); System.out.println("请输入你的选择:"); Scanner sc = new Scanner(System.in); String line = sc.nextLine(); //用switch语句完成操作的选择 switch (line) { case "1": addStudent(array); break; case "2": updateStudent(array); break; case "3": deleteStudent(array); break; case "4": findStudent(array); break; case "5": System.out.println("谢谢使用"); break; } } } public static void addStudent(ArrayList<Student> array) { Scanner sc=new Scanner(System.in); String sid; while(true) { System.out.println("请输入学生学号:"); sid = sc.nextLine(); boolean flag = isUsing(array, sid); if (flag) { System.out.println("该学号已被使用,请重新输入"); }else { break; } } System.out.println("请输入学生姓名:"); String name=sc.nextLine(); System.out.println("请输入学生年龄:"); String age=sc.nextLine(); System.out.println("请输入学生地址:"); String address=sc.nextLine(); Student s=new Student(); s.setSid(sid); s.setName(name); s.setAge(age); s.setAddress(address); array.add(s); System.out.println("添加学生成功"); } public static void findStudent(ArrayList<Student> array) { if(array.size()==0) { System.out.println("无信息,请录入学生信息"); return; } System.out.println("学号\t\t\t姓名\t\t年龄\t\t居住地"); for(int i=0;i<array.size();i++) { Student s=array.get(i); } } public static void deleteStudent(ArrayList<Student> array) { Scanner sc=new Scanner(System.in); System.out.println("请输入你要删除的学生的学号:"); String sid=sc.nextLine(); int index=-1; for(int i=0;i<array.size();i++) { Student s=array.get(i); if(s.getSid().equals(sid)) { index=i; break; } } if(index==-1) { System.out.println("该信息不存在,请重新输入"); }else{ array.remove(index); System.out.println("删除学生成功"); } } public static void updateStudent(ArrayList<Student> array) { Scanner sc= new Scanner(System.in); System.out.println("请输入你要修改的学生的学号:"); String sid=sc.nextLine(); //键盘录入要修改的学生信息 System.out.println("请输入学生新姓名:"); String name=sc.nextLine(); System.out.println("请输入学生新年龄:"); String age=sc.nextLine(); System.out.println("请输入学生新居住地:"); String address=sc.nextLine(); //创建学生对象 Student s=new Student(); s.setSid(sid); s.setName(name); s.setAge(age); s.setAddress(address); //遍历集合修改对应的学生信息 for(int i=0;i<array.size();i++) { Student student=array.get(i); if(student.getSid().equals(sid)) { array.set(i,s); break; } } System.out.println("修改学生信息成功!"); } public static boolean isUsing(ArrayList<Student> array,String sid) { boolean flag=false; for(int i=0;i<array.size();i++) { Student s= array.get(i); if(s.getSid().equals(sid)) { flag=true; break; } } return flag; } }
1348

被折叠的 条评论
为什么被折叠?



