1、字符串常用类
在JDK里设计了三个类都可以来表示字符串:String;StringBuffer;StringBuilder。
String概述:
- 代表字符串,String类定义的变量可以用于指向字符串对象,然后操作该字符串。
- Java程序里的所有字符串文字(例如:"abc")都为此类的对象。
- Java里一个非常特殊的引用数据类型;它是唯一一个有常量表示形式的对象。这一点跟基本数据类型一样。
- String类提供了大量的方法来方便我们调用,实现对字符串的各种操作;
- 为了提高性能,Java专门为String设计了“字符串常量池”。
String name = "张三";
String类的特点:
String其实常被称为不可变字符串类型,它的对象在创建后不能被修改。
String类不可变的原因:
String变量每次修改其实都是产生并指向了新的字符串对象。原来的字符串对象都是没有改变的,所以称不可变字符串。
StringBuffer
StringBuffer类与String类没有任何继承关系,所以不能直接给StringBuffer的对象复制字符串常量,必须用new的语法。
StringBuffer的对象提供了大量的跟字符串拼接的相关方法,最常用的是append、insert、replace、delete;
所有这些方法都是改变当前的StringBuilder对象。
StringBuffer stringBuffer = new StringBuffer("hello"); stringBuffer.append("hello");//在尾部添加,拼接内容 System.out.println(stringBuffer); stringBuffer.insert(2,"Java");//往某个位置插入内容 System.out.println(stringBuffer); stringBuffer.replace(3,5,"LOVO");//把三到五的字符替换;前闭后开 System.out.println(stringBuffer); stringBuffer.delete(3,5);
StringBuffer对比StringBuilder
这两个类都是可变的字符串序列,两个类提供的方法是完全一样的。唯一的区别是:
StringBuffer线程安全;来自于Java1.0版本
StringBuilder线程不安全。来自于Java1.5版本
记一个结论:
凡是线程安全的,执行效率会降低;凡是线程不安全的,执行效率会高。
创建字符串对象的2种方式(区别:面试常考)
方式一:以"" 方式给出的字符串对象,在字符串常量池中存储,而且相同内容只会在其中存储一份。(推荐方式)
//1、方式一:直接使用双引号得到字符串对象 String name = "我爱你中国"; System.out.println(name);
方式二:通过String类的构造器new对象,每new一次都会产生一个新对象,放在堆内存中。
String s1 = new String();
public String (); 创建一个空白字符串对象,不含有任何内容(几乎不用)
public String (String original); 根据传入的字符串内容,来创建字符串对象(几乎不用)
public String(char[] chs); 根据字符数组的内容,来创建字符串对象
public String (byte[] chs); 根据字节数组的内容,来创建字符串对象
//2、方式二:通过String类的构造器创建对象。 //1、public String (); 创建一个空白字符串对象,不含有任何内容(几乎不用) String s1 = new String(); //s1 = " " System.out.println(s1); //2、public String (String original); 根据传入的字符串内容,来创建字符串对象(几乎不用) String s2 = new String("我是中国人"); System.out.println(s2); //3、public String(char[] chs); 根据字符数组的内容,来创建字符串对象 char[] chars = {'a' , 'b' , '中' , '国'}; String s3 = new String(chars); System.out.println(s3); //4、public String (byte[] chs); 根据字节数组的内容,来创建字符串对象 byte [] bytes = {97, 98, 99, 65, 66, 67}; String s4 = new String(bytes); System.out.println(s4);
两种方式的区别代码演示:
//区别2 String ss1 = "abc"; String ss2 = "abc"; System.out.println(ss1 == ss2);//true char[] chars1 = {'a' , 'b' , 'c' }; String ss3 = new String(chars1); String ss4 = new String(chars1); System.out.println(ss3 == ss4);//false
String类常见的面试题
//面试题1! String s4 = new String("qwe");//实际上生成了两个对象(双引号生成的字符串常量池的对象;和new生成的堆内存里的对象) String s3 = "qwe";//这里生成了0个对象,因为s4已经在字符串常量池里生成了"qwe"对象 System.out.println(s4 == s3);//false,s3的地址指向字符串常量池,而s4的地址指向堆内存里。
//面试题2 String s1 = "abc";//在字符串常量池里生成"abc" String s2 = "a" + "b" + "c";//因为Java存在编译优化机制,程序在编译时:"a","b","c"会直接转成"abc"。 浪费性能 // 因此它也在字符串常量池里生成"abc",而常量池已经有了"abc",因此s1和s2指向同一地址,为true System.out.println(s1 == s2);//true
//面试题3 String s5 = "abc";//在字符串常量池里生成"abc" String s6 = "ab";//在字符串常量池里生成"ab" String s7 = s6 + "c";//s7不是双引号直接给i出来的,因此它指向堆内存中的"abc",s6是一个变量 System.out.println(s5 == s7);//false
String类常用API(功能)——字符串大小比较;字符串内容比较
字符串大小比较
int value = "hello".compareTo("world");//比较两个字符串的大小 /* compareTo方法是按照字典顺序比较两个字符串的大小,返回的是它们的差值,是int值 相对于做的就是字符串1 - 字符串2 之后的结果。如果是正数,说明字符串1大;反之字符串2大。 字典顺序的比较规则: 1、用两个字符串的第一对同位置,不同字符的Ascii码之差作为结果; Hello和hello,结果是-32 2、如果没有同位置不同字符出现,那么就用两者的长度之差作为结果。 hello helloworld,结果是-5 */ value = "hello".compareToIgnoreCase("HELLO");//忽略大小写,比较两个字符串的大小 str.toUpperCase();//变大写 str.toLowerCase();//变小写
字符串的内容比较不适合用"=="比较。
字符串内容比较推荐使用String类提供的"equals"比较:只关心内容一样即可。
开发中什么时候使用==比较数据:基本数据类型比较时使用。例子:用户登录
public static void main(String[] args) { //1、正确登录名和密码 String okname = "admin"; String okPassword = "123456"; //2、请您输入登录名称和密码 Scanner sc = new Scanner(System.in); System.out.println("登录名称: "); String name = sc.next(); System.out.println("登录密码: "); String Password = sc.next(); //3、判断用户输入的登录名称和密码与正确的内容是否相等 if (okname.equals(name) && okPassword.equals(Password) ){ System.out.println("登陆成功!"); }else{ System.out.println("用户名或者密码错误了!"); } }
忽略大小写比较内容的API(用于比较验证码这样的业务逻辑)
//4、忽略大小写比较内容的Api,一般用于比较验证码这样的业务逻辑 String sysCode = "23AdFH"; String code1 = "23aDfH"; System.out.println(sysCode.equals(code1)); // false 此方法只适合内容完全相等的情况 System.out.println(sysCode.equalsIgnoreCase(code1)); // ture 这个方法适合验证码这种,忽略字符串大小写,只比较内容即可。
String类常用API(功能、方法)——遍历、替换、截取、分割操作
public int length(); 获取字符串的长度
public char charAt(int index): 获取某个索引位置处的字符
遍历字符串中的每个字符
public char[] toCharArray() : 把字符串转换成字符数组,越界会报StringIndexOutOfBoundsException异常
public String substring(int beginIndex, int endIndex) : 截取内容(包前不包后的)
public String substring(int beginIndex) : 从当前索引一直截取到末尾。
public String replace(CharSequence target,CharSequence replacement) :替换。使用新值,将字符串中的旧值替换,得到新的字符串
public boolean contains(CharSequence s) :判断文章中包不包含一些关键字
public boolean startsWiths(String prefix) :判断以什么开始(ebdsWith:判断字符串以什么结束)
public String [] split(String s) : 按照某个内容把字符串分割成字符串数组返回
indexOf和lastIndexOf:通过字符去获取该字符在String中首次出现的位置;最后一次出现的位置。indexOf和lastIndexOf有一些重载方法,还可以获取某个子字符串的位置,或是指定从哪个位置开始查询
代码演示:
public static void main(String[] args) { //1、public int length(); 获取字符串的长度 String name = "我爱你中国love"; System.out.println(name.length()); //2、public char charAt(int index): 获取某个索引位置处的字符 char c = name.charAt(1); System.out.println(c); System.out.println("------------遍历字符串中的每个字符-----------------------"); for (int i = 0; i <name.length() ; i++) { char ch = name.charAt(i); System.out.println(ch); } //3、public char[] toCharArray() : 把字符串转换成字符数组 char[] chars = name.toCharArray(); for (int i = 0; i < chars.length; i++) { char ch = chars[i]; System.out.println(ch); } //4、public String substring(int beginIndex, int endIndex) : 截取内容(包前不包后的) String name2 = "java是最厉害的编程语言!"; // 截取到“的” String rs = name2.substring(0,9); System.out.println(rs); String rs1 = name2.substring(4,9); //截取“是最厉害的” System.out.println(rs1); //5、public String substring(int beginIndex) : 从当前索引一直截取到末尾 String rs2 = name2.substring(4); System.out.println(rs2); //6、public String replace(CharSequence target,CharSequence replacement) :替换。使用新值,将字符串中的旧值替换,得到新的字符串 String name3 = "金三胖是最厉害的80后,金三胖棒棒的!我好爱金三胖!"; String rs3 = name3.replace("金三胖" , "***"); System.out.println(rs3); //7、public boolean contains(CharSequence s) :判断文章中包不包含一些关键字 System.out.println(name3.contains("金三胖")); // true System.out.println(name3.contains("金二胖")); // false //8、public boolean startsWiths(String prefix) :判断以什么开始 System.out.println(name3.startsWith("金三胖")); //true System.out.println(name3.startsWith("金三胖是最厉害的")); //true System.out.println(name3.startsWith("金三胖是最厉害的2")); //false //9、public String [] split(String s) : 按照某个内容把字符串分割成字符串数组返回 String name4 = "王宝强,贾乃亮,陈羽凡"; String [] names = name4.split(","); for (int i = 0; i < names.length; i++) { System.out.println("选择了:" + names[i]); } //10、indexOf和lastIndexOf String str = "helloWorld"; int index = str.indexOf('a');//通过字符去获取该字符在String中首次出现的位置 // System.out.println(index); index = str.lastIndexOf("l");//最后一次出现的位置 // System.out.println(index); }
String类的三个特殊方法:
1、trim去掉字符串前后的空格(使用较多)
2、split字符串拆分
3、matches正则表达式校验
正则表达式在这个连接有详细写到。
//3、三个特殊方法 //3-1、trim——去掉字符串前后的空格(使用较多) String input = " hello world "; input = input.trim(); // System.out.println(input); // System.out.println(input.length()); //3-2、split——字符串拆分 /* 如果在字符串尾部出现分隔符且后面没有内容,那么不会放置一个空串到数组里; 如果字符串头部出现分隔符或中间出现连续分割符,都会把拆分得到的空串放入到数组里。 */ String msg = "zhangsan-123456-000000"; String [] strs = msg.split("-"); // System.out.println(strs.length); //3-3、matches——正则表达式校验` /* 正则表达式是一种专门用来规范字符串内容和格式的表达式 英文:regex 凡是以后看到参数名字是它,就说明改参数可以传入一个正则表达式 正则表达式首先在本质上自己就是一个字符串,也就是说任意一个字符串都是正则。 比如:“hello”就是一个正则表达式,只不过没有使用模糊符合,所以只能做原样匹配,就相当于equals了。 因此,我们主要要学习如何使用它的模糊匹配符合。其中最关键的就是三种括号。 []---表示一个字符能够使用哪些符合 [abc]只能是a, b, 或c [0-9] [a-zA-Z] 有一个特殊符号^异或,它在正则表达式里表示“除了。。。之外” [^0-9]除了0-9之外都可以 {}---表示的是之前的正则表达式允许出现的次数。 标准语法:[h]{m,n}---至少出现m次,至多出现n次 {m,}---至少出现m次,最多不限制 {m}---只能出现m次 注意:没有{,m}这种写法 还有几种简写: * ---0到任意多次 + --- 一次或多次,至少一次 ? --- 0-1次(一次或根本不) ()---分组 (表达式1|表达式2|表达式3......)---表示的含义是表达式1可以,或表达式2也可以,3也可以。。。。。 */ Scanner sc = new Scanner(System.in); /*System.out.println("请输入一个电话号码"); String tel = sc.next(); if (tel.matches("8320([0-9]{4})|110|119|120")){ System.out.println("是电子科大"); }else{ System.out.println("不是电子科大"); }*/ /* while (true) { System.out.println("输入金额:"); String money = sc.next(); TestString atm = new TestString(); System.out.println(atm.judgeMoney(money)); }*/ String inputMoney = JOptionPane.showInputDialog(null,"请输入你要提取的金额:"); String regex = "([1-9][0-9]?|1[0-9]{2}|200)00"; if (inputMoney.matches(regex)){ System.out.println("有效金额"); int money = Integer.parseInt(inputMoney); }else { System.out.println("无效金额"); } /* String当中的split和replaceAll方法也是支持正则表达式的 */ str = "zhang3?123456-11000-male"; strs = str.split("[?-]"); str.replaceAll("[?-]","!"); strs = str.split("//?"); /* 注意:当我们需要某个特殊的正则表达式符合作为字符来使用的时候,需要进行转意。 而正则表达式里不是用/来做转意的,我们需要用[]来表示,这是一个字符,然后把 该特殊符号写在[]里。 */ } /* private boolean judgeMoney(String money){ int judgeMoney = Integer.parseInt(money); if (judgeMoney>0 && money.matches("(([1][0-9]{2})|(200)|([1-9][0-9])|([1-9]))00")){ return true; } return false; }*/
String案例:
1、练习题:使用String完成随机生成五位数的验证码,每位可能是数字、大写字母、小写字母。
public static void main(String[] args) { //1、定义可能出现的字符信息 String dates = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; //2、循环五次,每次生产一个随机的索引,提取对应的字符连接起来即可 String code = "";//定义一个空字符串 Random r = new Random(); for (int i = 0; i < 5; i++) { //随机一个索引 int index = r.nextInt(dates.length()); //根据随机的索引,将这个索引位置的字符加进去 char c = dates.charAt(index); code += c; } //3、输出字符串变量即可 System.out.println(code); }
2、练习题:模拟用户登录(最多给三次机会)
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) + "次机会登录"); } } }
3、练习题:手机号码屏蔽:需求:以字符串的形式从键盘接受一个手机号,将中间四位号码屏蔽
比如:139****7675
public static void main(String[] args) { // 1、键盘录入一个手机号码 Scanner sc = new Scanner(System.in); System.out.println("请您输入您的手机号码: "); String tel = sc.next(); //2、截取号码的前三位后四位 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(集合)
集合与数组类似,也是一种容器,用于装数据的。
数组的特点:
- 数组定义完成并启动后,类型确定,长度固定。
- 问题:在个数不确定,且要进行增删数据操作的时候,数组是不太合适的。
集合的特点:
- 集合的大小不固定,启动后可以动态变化,类型也可以选择不固定。
- 集合非常适合做元素个数不确定,且要进行增删操作的业务场景。
ArrayList集合:
它是集合的一种,它支持索引。
ArrayList集合的对象获取:
构造器:public ArrayList() (说明:创建一个空的集合对象)
//1、创建ArrayList集合的对象 ArrayList list = new ArrayList();
ArrayList集合添加元素的方法:
1、public boolean add(E e)将指定的元素追加到次集合的末尾
//2、添加数据 list.add("Java"); list.add("Java"); list.add("MySQL"); list.add("黑马"); list.add(23); list.add(23.5); list.add(false); list.add('中'); System.out.println(list);//[Java, Java, MySQL, 黑马, 23, 23.5, false, 中]
2、public void add(int index, E element)在此集合中的指定位置插入指定的元素
//3、给指定索引位置插入元素 list.add(1,"张三"); System.out.println(list);//[Java, 赵敏, Java, MySQL, 黑马, 23, 23.5, false, 中]
泛型概述:
- ArrayList<E>其实就是一个泛型类,可以在编译阶段约束集合对象只能操作某种数据类型。
- 比如:ArrayList<String>:此集合只能操作字符串类型的元素;
- ArrayList<Integer>:此集合只能操作整数类型的元素。
- 注意:集合中只能存储引用类型,不支持基本数据类型。
public static void main(String[] args) { ArrayList<String> list = new ArrayList<String>(); ArrayList<String> list1 = new ArrayList<>(); //JDK1.7开始,泛型后面的类型申明可以不写 list.add("Java"); list.add("MySQL"); // list.add(23); // list.add(23.5); ArrayList<Integer> list2 = new ArrayList<>(); list2.add(23); list2.add(100); // list2.add("Java"); }
ArrayList常用API(方法):遍历
public E get(int index) : 获取某个索引位置处的元素值
public int size() :获取集合的大小(元素个数)
完成集合的遍历
public E remove(int index) : 删除某个索引位置处的元素值,并返回被删除的元素值
public boolean remove (Object o) : 直接删除元素值,删除成功返回true,删除失败返回false
public E set(int index,E element) :修改某个索引位置处的元素值
代码实现:
public static void main(String[] args) { ArrayList<String> list = new ArrayList<>() ; list.add("Java"); list.add("Java"); list.add("MySQL"); list.add("MyBatis"); list.add("HTML"); //1、public E get(int index) : 获取某个索引位置处的元素值 String e = list.get(3); System.out.println(e);//MyBatis //2、public int size() :获取集合的大小(元素个数) System.out.println(list.size());//5 //3、完成集合的遍历 for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } //Java Java MySQL MyBatis HTML //4、public E remove(int index) : 删除某个索引位置处的元素值,并返回被删除的元素值 System.out.println(list); // [Java, Java, MySQL, MyBatis, HTML] String e2 = list.remove(2); System.out.println(e2);//MySQL System.out.println(list);//[Java, Java, MyBatis, HTML] //5、public boolean remove (Object o) : 直接删除元素值,删除成功返回true,删除失败返回false System.out.println(list.remove("MyBatis"));//true System.out.println(list);//[Java, Java, HTML] ArrayList<String> list1 = new ArrayList<>(); list1.add("Java"); list1.add("王宝强"); list1.add("Java"); list1.add("MySQL"); System.out.println(list1);//[Java, 王宝强, Java, MySQL] // 只会删除第一次出现的这个元素值,后面的不删除 System.out.println(list1.remove("Java"));//true System.out.println(list1);//[王宝强, Java, MySQL] //6、public E set(int index,E element) :修改某个索引位置处的元素值 String e3 = list1.set(0, "贾乃亮"); System.out.println(e3);//王宝强 System.out.println(list1);//[贾乃亮, Java, MySQL] }
ArrayList集合案例
1、遍历并删除元素
public static void main(String[] args) { //案例:遍历并删除元素值:从集合后面遍历去删除 // 需求:某个班级的考试在系统上进行,成绩大致为:98,77,66,89,79,50,100; // 现需要先把成绩低于80分以下的数据去掉 //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); System.out.println(scores); //2、把低于80分的成绩从集合中去掉。 //有毛病的代码 // for (int i = 0; i < scores.size(); i++) { // int score = scores.get(i); // if (score < 80){ // //这个分数必须删除 // scores.remove(i); // } // } // System.out.println(scores); //完美的方案之一 /*for (int i = 0; i < scores.size(); i++) { int score = scores.get(i); if (score < 80){ //这个分数必须删除 scores.remove(i); i--; //删除成功后,必须退一步,这样可以保证下次回到这个位置,如此则不会跳过数据;删除一个数字后,需要让遍历会退一个数据,不然会导致有数字没有判断到 } } System.out.println(scores);*/ //scores = [98, 77, 66, 89, 79, 50, 100] // i //完美方案之二:从后面倒着遍历再删除就可以 for (int i = scores.size(); i >= 0; i--) { int score = scores.get(i); if (score < 80){ //这个分数必须删除 scores.remove(i); } } System.out.println(scores); }
2、需求:某影院系统需要在后台存储上述三部电影,然后依次展示出来
public static void main(String[] args) { // 目标:理解ArrayList集合存储自定义类型的对象 //1、定义一个电影类 //2、创建三个电影对象 Movie m1 = new Movie("《肖生克的救赎》" , 9.7 ,"罗宾汉"); Movie m2 = new Movie("《霸王别姬》" , 9.6 ,"张国荣、张丰毅"); Movie m3 = new Movie("《阿甘正传》" , 9.5 ,"汤姆.汉克斯"); //3、创建一个电影类型的ArrayList集合,存储三部电影对象 ArrayList<Movie> movies = new ArrayList<>(); movies.add(m1); movies.add(m2); movies.add(m3); //4、遍历电影类型的集合中的每个电影对象,访问它的信息 for (int i = 0; i < movies.size(); i++) { // i = 0 1 2 Movie m = movies.get(i); System.out.println("电影名称:" + m.getName()); System.out.println("电影评分:" + m.getScore()); System.out.println("电影主演:" + m.getActor()); System.out.println("-------------------------"); } }
电影类:
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; } }
3、案例:学生信息系统的数据搜索
需求:后台程序需要存储如上学生信息并展示,然后要提供按照学号搜索学生信息的功能。学生班类信息(学号,姓名,性别,班级)
测试数据:
"20180302","叶孤城",23,"护理一班"
"20180303","东方不败",23,"推拿二班"
"20180304","西门吹雪",26,"中药学四班"
"20180305","梅超风",26,"神经科二班"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,"神经科二班")); //3、遍历这些学生信息展示 System.out.println("学号\t名字\t年龄\t班级"); for (int i = 0; i < students.size(); i++) { Student s = students.get(i); System.out.println(s.getStudyNumber()+"\t"+s.getName()+"\t"+s.getAge()+"\t"+s.getClassName()); } //4、定义方法完成按照学号的搜索功能 Scanner sc = new Scanner(System.in); while(true){ System.out.println("请您输入学号查询学生对象:"); String studyNumber = sc.next(); //5、调用方法查询 Student s = getStudentById(students,studyNumber); //6、判断s中是否存在学生对象地址 if (s == null){ System.out.println("对不起,查无此人--"); }else{ System.out.println("您查询的学生信息如下: "); System.out.println(s.getStudyNumber()+"\t"+s.getName()+"\t"+s.getAge()+"\t"+s.getClassName()); } } } /** * 根据学生的学会查询学生对象返回 * @param students 存储全部学生对象的集合 * @param studyNumber 搜索的学生的学号 * @return 返回学生对象|null */ public static Student getStudentById(ArrayList<Student> students,String studyNumber){ //1、遍历全部学生对象 for (int i = 0; i < students.size(); i++) { Student s = students.get(i); //2、询问当前遍历的这个学生对象的学号,是否是我们要找的学号 if (s.getStudyNumber().equals(studyNumber)){ //这个s代表的学生对象,就是我们要找的;返回它 return s; } } //查无此人 return null; } /* 也可以定义一个无返回值的方法,即在方法里写输出的信息 */ /* //5、按照学号搜索学生信息的功能 //定义一个方法 while (true){ Scanner sc = new Scanner(System.in); System.out.println("请输入您要搜索的学生的学号:"); String newStudyNo = sc.next(); //调用方法 getStudentInformation(students,newStudyNo); }*/ //按照学号搜索学生信息的方法 /*public static void getStudentInformation(ArrayList<Student> students,String newStudyNo){ //遍历集合,判断集合里的学号与搜索的学号相不相同 for (int i = 0; i < students.size(); i++) { Student newStudent = students.get(i); if (newStudent.getStudyNo().equals(newStudyNo)){ System.out.println("这个学生的信息为:"); System.out.println( newStudent.getStudyNo() +"\t"+ newStudent.getName() +"\t\t"+ newStudent.getAge() +"\t"+ newStudent.getStudyClass()); break; }else{ System.out.println("对不起,您输入的学号查无此人,请重新输入:"); break; } } }*/
学生类:
public class Student { private String studyNumber; private String name; private int age; private String className; public Student() { } public Student(String studyNumber, String name, int age, String className) { this.studyNumber = studyNumber; this.name = name; this.age = age; this.className = className; } public String getStudyNumber() { return studyNumber; } public void setStudyNumber(String studyNumber) { this.studyNumber = studyNumber; } 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; } }