java自学-常见的API(String、ArryList)

什么是API?

全称:应用程序编程接口(俗称:java自己写好的程序,提供给程序员使用,方便完成一些功能)

API文档:程序使用说明书

1.String

String是字符串类型,它定义的变量可以指向一个字符串对象

String是不可变的字符串(指定过后,如果改变属于重新创建,而并非在原有基础上进行更改)

1.1 String 创建对象的方式

1.直接使用双引号围起来 (String name = "test")

2.new 构造器得到字符串对象

1.2 String创建对象两种方式的区别

1.双引号给出的字符串对象,存在与堆内存中的常量池中,并且相同内容只存储一份。

2.new 字符串对象,每new一次均会在堆内存中产生一个字符串对象。

 

 

 

1.3 String 的常用方法(常用API)

背景: == 判断字符串对象是判断地址的,这样会引起很多业务问题。

必要性:判断字符串,在开发中更多时候希望判断内容是否相同,不在乎地址。

判断字符串内容:if (s1.equals(s2))   表示对两个字符串内容做比较

equals   贪婪匹配

eequalsIgnoreCase 不贪婪匹配

 

结论:

  1. 之后只要是字符串进行内容比较,那必须使用字符串的equals方法。
  2. 在基本数据类型做比较时,那就使用 ==  。 (如:  int  a =1  ;  int  b =2  ;   a==b   ) 

其他常用方法:

案例如下: 

public class StringAPIOtherDemo5 {
        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 ch = name.charAt(1);
            System.out.println(ch);
            System.out.println(" -------遍历字符串中的每个字符--------");
            for (int i= 0 ; i < name.length() ; i++) {
                //i=012345678
                char c = name.charAt(i);
                System.out.println(c);
            }

            // 3. public char[] toCharArray(): 把字符串转换成数组
                char[] chars = name.toCharArray();
                System.out.println('\t');
                for (int i = 0; i < chars.length; i++) {
                    System.out.println(chars[i]);
                }

            //4 public String substring (int beginindex, int endindex):截取内容,(包前不包后的,截取索引位只包含前面的,最后以为的不包含)
                String s1= "Java是最生的编程语言之一~" ;
                String rs = s1.substring (0,12);
                System.out.println(rs);

            //5 public string substring(int beginindex):从当前索号一直截取到未尾
                String rs2 = s1.substring(5);
                System.out.println(rs2);

            //6. public String replace(CharSequence target, CharSequence replacement) :使用新值,替换字符串中的旧值,得到新的字符串
                String s2 ="三胖哥是最牛的80后, 三胖哥的发型yyds,好想跟三胖哥一样!!" ;
                String rs3 = s2.replace("三胖哥","***");
                System.out.println(rs3);

            // 7. public boolean contains (CharSequence s) 检测字符串中是否有指定字符
                System.out.println(s2.contains("三胖哥"));   //true
                System.out.println(s2.contains("三胖哥1")); // false

            // 8, public boolean startsWith(String prefix) 判断字符串以什么开始
                System.out.println(s2.startsWith ("三胖哥"));   // true
                System.out.println(s2.startsWith("三胖"));    //true
                System.out.println(s2.startsWith("三胖2"));  //talse

            // 9、public String[]  split(String s):按照某个内容把字符串分割成字符串数组返回。
                String data ="王宝强、贾乃亮、蔡徐坤";
                String[] names = data.split("、") ;
                for (int i=0; i<names.length; i++) {
                        System.out.println("选择了"+ names[i]);
            }
        }
    }

2.集合

集合:代表的是一种入容器,类似于数组。

集合特点:大小可变,类型可以不固定,功能更加强大,适合做元素个数不能确定,同时存在增删操作的业务场景。

2.ArrayList

ArrayList:是一种集合  

特点:元素可以重复,元素存在索引。

如何构建ArrayList的对象代表一个集合容器,用来存储数据?

原理:public ArrayList() ;     解释:表示创建一个无参构造器

格式: ArrayList   集合名称 = new  ArrayList(); 

泛型:集合支持泛型   

作用:约束集合在编译阶段只能操作某种数据类型

格式:

  • ArrayList list = new ArrayList();    //不使用泛型
  • ArrayList<String>  集合名称   =  new  ArratList() ;    //使用泛型定义 (建议规范均使用此方法)

注意:

  • 集合和泛型都不支持基本数据类型,只能支持引用数据类型。
  • 以后定义集合都应该采用泛型 
  • 问题:若集合就是什么类型都要存,则书写格式为: ArrayList<Object> list = new ArratList(); 

2.1  ArrayList集合常用方法

方法名说明
1 public boolean add(E e)      将指定的元素追加到此集合的末尾     
2 public void add(int index,E element)  在此集合中的指定位置插入指定的元素
3public E get(int index) 返回指定索引处的元素
4 public int size()返回集合中的元素的个数
5 public E remove(int index)  删除指定索引处的元素,返回被删除的元素
6 public boolean remove(Object o) 删除指定的元素,返回删除是否成功
7public E set(int index,E element)  修改指定索引处的元素,返回被修改的元素
public class Test1 {
    public static void main(String[] args) {
    	//add方法:
        ArrayList<String> list = new ArrayList<>();
        list.add("Java");
        list.add("Java");
        list.add("Mysql");
        list.add("HTML");
        list.add("MyBatis");
        System.out.println(list);
        //list = [Java, Java, MySQL, MyBatis, HTML]

        //1、public E get(int index):获取某个索引位置处的元素值
        String ele = list.get(2);
        System.out.println(ele);

        // 2、public int size():获取集合的大小(元素个数)
        System.out.println(list.size());

        System.out.println("----------------");
        // 3、完成集合的遍历
        // list = [Java, Java, MySQL, MyBatis, HTML]
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

        // 4、public E remove(int index):删除某个索引位置处的元素值,并返回被删除的元素值
        System.out.println("----------------");
        String ele2 = list.remove(2);
        System.out.println(ele2);
        System.out.println(list);

        // 5、public boolean remove(Object o):
        // 直接删除元素值,删除成功返回true,删除失败返回false
        // 注意:默认会删除第一次出现的这个数据!!
        System.out.println(list.remove("java"));
        System.out.println(list);

        // 6、public E set(int index,E element):修改某个索引位置处的元素值。(很少用)
        System.out.println(list.set(2,"前端"));
        System.out.println(list);

2.2ArrayList 遍历

例题:
有一组成绩为:98, 77, 66, 89, 79, 50, 100
现在需要先把成绩低于80分以下的数据去掉。

解决上述问题方法:

  • 遍历中在if 判断时采用 i-- (表示将索引位前移一位;否则存在下述图片问题)
  • 或者从元素末尾向首位遍历 如: for (int i = list.size()-1 ; i >=0 ; i-- ) 

ArrayList存储自定义类型的对象:ArrayLIst<Student>  list = new ArrayList();    Student 为自建类

注意:集合容器中存储的是每个对象在堆内存中的地址

例题:

学生信息系统:展示数据,并按照学号完成搜索
学生类信息(学号,姓名,性别,班级)
测试数据:
“20180302”,“叶孤城”,23,“护理一班”
“20180303”,“东方不败”,23,“推拿二班”
“20180304”,“西门吹雪”,26,“中药学四班”
“20180305”,“梅超风”,26,“神经科2班”

代码部分:

1.Student  类

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;
    }
}

2. Test类 (在此包中调用上述Student)

/**
 案例:学生信息系统:展示数据,并按照学号完成搜索
 学生类信息(学号,姓名,性别,班级)
 测试数据:
 "20180302","叶孤城",23,"护理一班"
 "20180303","东方不败",23,"推拿二班"
 "20180304","西门吹雪",26,"中药学四班"
 "20180305","梅超风",26,"神经科2班"
 */
public class Test3 {
    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班"));

        //3、遍历这些学生信息展示
        System.out.println("学号\t\t\t名称\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 studentNumber = sc.next();
            Student s = getStudentById(students, studentNumber);
            if (s == null){
                System.out.println("对不起查无此人");
            }else {
                System.out.println("您查询的学生信息如下");
                System.out.println(s.getStudyNumber()+"\t" + s.getName() + "\t" + s.getAge() + "\t" + s.getClassName());
            }
        }
    }

    public static Student getStudentById(ArrayList<Student> students,String studnetNumber){
        // 1、遍历全部学生对象
        for (int i = 0; i < students.size(); i++) {
            Student s = students.get(i);
            // 2、询问当前遍历的这个学生对象的学号,是否是我们要找的学号
            if (s.getStudyNumber().equals(studnetNumber)) {
                // 这个s代表的学生对象,就是我们要找的:返回它
                return s;
            }
        }
        //查无此人
        return null;
    }
}

2.3 ArrayList 集合内存图

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值