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();

  1. public String (); 创建一个空白字符串对象,不含有任何内容(几乎不用)

  2. public String (String original); 根据传入的字符串内容,来创建字符串对象(几乎不用)

  3. public String(char[] chs); 根据字符数组的内容,来创建字符串对象

  4. 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);

两种方式的区别代码演示:

 //区别2String ss1 = "abc";String ss2 = "abc";System.out.println(ss1 == ss2);//truechar[] 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的地址指向堆内存里。
//面试题2String s1 = "abc";//在字符串常量池里生成"abc"String s2 = "a" + "b" + "c";//因为Java存在编译优化机制,程序在编译时:"a","b","c"会直接转成"abc"。  浪费性能// 因此它也在字符串常量池里生成"abc",而常量池已经有了"abc",因此s1和s2指向同一地址,为trueSystem.out.println(s1 == s2);//true
//面试题3String 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,结果是-322、如果没有同位置不同字符出现,那么就用两者的长度之差作为结果。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(功能、方法)——遍历、替换、截取、分割操作

  1. public int length(); 获取字符串的长度

  2. public char charAt(int index): 获取某个索引位置处的字符

  3. 遍历字符串中的每个字符

  4. public char[] toCharArray() : 把字符串转换成字符数组,越界会报StringIndexOutOfBoundsException异常

  5. public String substring(int beginIndex, int endIndex) : 截取内容(包前不包后的)

  6. public String substring(int beginIndex) : 从当前索引一直截取到末尾。

  7. public String replace(CharSequence target,CharSequence replacement) :替换。使用新值,将字符串中的旧值替换,得到新的字符串

  8. public boolean contains(CharSequence s) :判断文章中包不包含一些关键字

  9. public boolean startsWiths(String prefix) :判断以什么开始(ebdsWith:判断字符串以什么结束)

  10. public String [] split(String s) : 按照某个内容把字符串分割成字符串数组返回

  11. 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("金三胖")); // trueSystem.out.println(name3.contains("金二胖")); // false//8、public boolean startsWiths(String prefix) :判断以什么开始System.out.println(name3.startsWith("金三胖")); //trueSystem.out.println(name3.startsWith("金三胖是最厉害的")); //trueSystem.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和lastIndexOfString 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正则表达式校验

正则表达式在这个连接有详细写到。

JavaSE基础笔记——常用API、Lambda、常见算法_小曹爱编程!的博客-CSDN博客JavaSE基础笔记——常用API、Lambda、常见算法主要包括:日期与时间、JDK8开始新增的日期API、包装类、正则表达式、Arrays、常见算法:选择、冒泡排序和二分查找、Lambda表达式https://blog.csdn.net/weixin_62993347/article/details/126088041?spm=1001.2014.3001.5501

//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 2String 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(方法):遍历

  1. public E get(int index) : 获取某个索引位置处的元素值

  2. public int size() :获取集合的大小(元素个数)

  3. 完成集合的遍历

  4. public E remove(int index) : 删除某个索引位置处的元素值,并返回被删除的元素值

  5. public boolean remove (Object o) : 直接删除元素值,删除成功返回true,删除失败返回false

  6. 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);//MySQLSystem.out.println(list);//[Java, Java, MyBatis, HTML]//5、public boolean remove (Object o) : 直接删除元素值,删除成功返回true,删除失败返回falseSystem.out.println(list.remove("MyBatis"));//trueSystem.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"));//trueSystem.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 2Movie 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;}
}

JavaSE基础笔记——字符串常用类/ArrayList(集合)相关推荐

  1. JavaSE基础知识之常用类和集合

    常用类 Object类 protected Object clone() throws CloneNotSupportedException 克隆方法:创建并返回此对象的一个副本 Object 类的 ...

  2. JavaSE基础笔记——常用API、Lambda、常见算法

    日期与时间 时间日期是在任何一个程序系统里几乎都不可能忽略掉的数据量,而且大量的算法在底层都会使用到时间日期数据值作为算法的基本种子(随机数算法或加密算法都经常用到). 计算机里,时间日期的本质 作为 ...

  3. 第八章笔记 Java常用类

    第八章笔记 Java常用类 文章目录 第八章笔记 Java常用类 第一节 Java类库概述 Java类库文档 Java类库列表 第二节 数字相关类 Java数字类 大数字类 随机数类 数字工具类 第三 ...

  4. java map常用类及其方法_Day50.Map类常用的方法 -Java常用类、集合#、IO

    Day50.Map类常用的方法 -Java常用类.集合#.IO Day50.Map类常用的方法 -Java常用类.集合#.IO Map类常用的方法 . 总结: 常用方法 添加: put(Object ...

  5. 常用类之集合:ArrayList类

    ArrayList类 数组有一个缺点:一旦创建,程序运行期间长度不可以发生改变. 但是ArrayList类出现解决了这一问题! 数组的长度不可以发生改变. 但是ArrayList集合的长度是可以随意变 ...

  6. Java常用工具类之异常、包装类、字符串处理类、集合框架实现类、输入输出流、多线程

    集合.多线程和I/O流等 介绍6种常用工具类: 1.如何应用异常处理程序中的问题?2.如何通过包装器类实现基本数据类型的对象化处理?3.字符串处理类String.StringBuilder是如何进行字 ...

  7. 重学JavaSE 第11章 : 常用类API、String、日期API、比较器、BigDecimal、System等

    文章目录 一.字符串相关的类 1.1.String类的概述 1.2.理解String的不可变性 1.3.String不同实例化方式的对比 1.4.String不同拼接操作的对比 1.4.1.Strin ...

  8. JavaSE基础笔记(全)

    文章目录 JAVA语言的初识 JDK的下载及安装 简单的DOS命令 1.打开cmd: 2.常用的Dos命令 JDK.JRE.JVM JDK JRE JVM JDK.JRE.JVM三者之间的关系 JDK ...

  9. 4_常用类_集合_泛型

    JavaSE_第四周 包装类 基本类型 包装类类型(引用类型:默认值都是null) byte Byte short Short int Integer long Long float Float do ...

  10. java笔记:常用类-反射

    目录 1 常用类 1.1 内部类 1.1.1 概念 1.1.2 成员内部类 1.1.3 静态内部类 1.1.4 局部内部类 1.1.4 匿名内部类 1.2 Object类 1.2.1 getClass ...

最新文章

  1. C# Trim 的使用
  2. html 3d转换动画,开源项目:CSS 3D转换和动画学习示例教程
  3. SAP UI5和微信小程序框架里的全局变量
  4. RRDTool学习资料备忘
  5. 【Arduino】OTTO机器人(做二次开发的一点点总结)
  6. 利用Servlet做一套增删改查
  7. PMF镜像中文件提取/diskgenius做的镜像文件
  8. 二元函数连续性、可导性及极限
  9. CodeSmith注册错误的解决方法
  10. 熊逸《唐诗50讲》感时篇 - 学习笔记与感想
  11. SLURM Array Job
  12. 有道云笔记的敏捷开发实践——好文收藏吧!【转】
  13. UG NX 12 点集
  14. 空格的两个ascii值
  15. flink maven依赖自用(项目用)
  16. CANoe.DiVa操作指南——配置特定测试序列
  17. PaddleOCR数字仪表识别——3.paddleocr迁移学习
  18. 移动端background 照片不铺满的处理
  19. 批处理文件快捷操作 .bat指令
  20. 腾达路由器linux开发,Linux内核系统! 腾达8口路由器功能超强

热门文章

  1. c语言文字表达式,【原创】化学方程式配平算法的设计与实现( 非Naylon版)
  2. java中abstract什么意思中文,abstraction(abstraction什么意思中文)
  3. 邓白氏编码邮件10个问题
  4. 【备忘】修复过的SCCM报错
  5. 水滴动态IP:自动换IP软件哪个好用?换IP的原理是什
  6. 详解浪潮与Odoo联手背后 双方将带来哪些化学反应?
  7. 网工解惑?什么是路由器、交换机与防火墙,他们的区别与联系是什么?
  8. 爱恨情仇——Kobe悖论终结篇
  9. python面板数据分析代码_面板数据分析是什么如何进行面板数据分析?
  10. Elasticsearch:Elasticsearch 开发入门 - Golang