栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java-常用API(String、ArrayList)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java-常用API(String、ArrayList)

目录

一、API简介

二、String简介

1.String类概述

2.String类创建对象的2种方式

3.String类常见面试题

4.String类常用API-字符串内容比较

5.String类常用API-遍历、替换、截取、分割操作

6.String类案例实战

三、ArrayList简介

1.集合概述

2.ArrayList集合快速入门

3.ArrayList对泛型的支持

4.ArrayList常用API、遍历

5.ArrayList集合案例:遍历并删除元素

6.ArrayList集合案例:存储自定义类型的对象

7.ArrayList集合案例:元素搜索


一、API简介

API(应用程序编程接口):1.Java写好的技术(功能代码),我们可以直接调用;2.Oracle也为Java提供的这些功能代码提供了相应的API文档(技术说明书)

二、String简介

String类定义的变量可以用于存储字符串,同时String类提供了很多操作字符串的功能,我们可以直接使用

1.String类概述

String类概述:1.java.lang.String 类代表字符串,String类定义的变量可以用于指向字符串对象,然后操作该字符串;2.Java程序种的所有字符串文字(例如"abc")都为此类的对象

String类的特点详解:String其实常被称为不可变字符串类型,它的对象在创建后不能被更改

String是不可变字符串的原因:String变量每次的修改其实都是产生并指向了新的字符串对象;原来的字符串对象都是没有改变的,所以称为不可变字符串

2.String类创建对象的2种方式

方式一:直接直接使用" " 定义。(推荐方式)  例如:String name = "皮卡丘";

方式二:通过String类的构造器创建对象。

 两种方式的区别:以" "方式给出的字符串对象,在字符串常量池中存储,而且相同内容只会在其中存储一份;通过构造器new对象,每new一次都会产生一个新对象,放在堆内存中

package com.pikaqiu.string;

import java.nio.charset.StandardCharsets;

public class StringDemo1 {
    public static void main(String[] args) {
        //方式一:直接直接使用" " 定义
        String name = "妙蛙种子";
        System.out.println(name);

        System.out.println("--------------------");

        //方式二:通过String类的构造器创建对象
        //1.public String(): 创建一个空白字符串对象,不含有任何内容(几乎不用)
        String s1 = new String(); //s1 = ""
        System.out.println(s1);
        System.out.println("--------------------");

        //2.public String(String): 根据传入的字符串内容,来创建字符串对象(几乎不用)
        String s2 = new String("我爱你中国");
        System.out.println(s2);
        System.out.println("--------------------");

        //3.public String(char[] c): 根据字符数组的内容,来创建字符串对象
        char[] chars = {'皮','卡','丘'};
        String s3 = new String(chars);
        System.out.println(s3);
        System.out.println("--------------------");

        //4.public String(byte[] b): 根据字节数组的内容,来创建字符串对象
        byte[] bytes = {97,98,99,65,66,67};
        String s4 = new String(bytes);
        System.out.println(s4);
        System.out.println("--------------------");

        String s5 = "abc";
        String s6 = "abc";
        System.out.println(s5 == s6); //true

        char[] chars1 = {'a','b','c'};
        String s7 = new String(chars1);
        String s8 = new String(chars1);
        System.out.println(s7 == s8); //false

    }
}

3.String类常见面试题
package com.pikaqiu.string;

public class StringTest {
    public static void main(String[] args) {
        //第一题
        String s2 = new String("abc"); //这里创建了两个对象,一个在常量池,一个在堆内存
        String s1 = "abc"; //这里没有创建对象,常量池中已有
        System.out.println(s1 == s2); //false

        //第二题
        String s3 = "abc";
        String s4 = "ab";
        String s5 = s4 + "c";
        System.out.println(s3 == s5); //false

        //第三题
        String s6 = "abc";
        String s7 = "a" + "b" + "c"; //Java存在编译优化机制,程序编译时:"a" + "b" + "c"会直接转成"abc"
        System.out.println(s6 == s7); //true
    }
}

4.String类常用API-字符串内容比较

equals比较:只关心内容一样即可

package com.pikaqiu.string;

import java.util.Scanner;

public class StringDemo3 {
    public static void main(String[] args) {
        String okName = "pikaqiu";
        String okPassword = "123456";

        Scanner sc = new Scanner(System.in);
        System.out.print("登录名称: ");
        String name = sc.next();
        System.out.print("登录密码: ");
        String password = sc.next();
//          //以下代码错误原因: ”==“是比较地址,okName == name是常量池中的地址和堆内存地址比较,很明显不会一样
//            if(okName == name && okPassword == password){
//                System.out.println("登录成功!");
//            }else{
//                System.out.println("用户名或者密码输入错误!");
//            }
        if(okName.equals(name) && okPassword.equals(password)){
            System.out.println("登录成功!");
        }else{
                System.out.println("用户名或者密码输入错误!");
        }

        //忽略大小写比较内容的API:一般用于比较验证码这样的业务逻辑
        String okCode = "23AdFh";
        String code = "23adfh";
        System.out.println(okCode.equals(code)); //false
        System.out.println(okCode.equalsIgnoreCase(code)); //true
    }
}

5.String类常用API-遍历、替换、截取、分割操作

package com.pikaqiu.string;

public class StringDemo4 {
    public static void main(String[] args) {
        //1.public int length(): 获取字符串长度
        String name = "我爱你中国love";
        System.out.println(name.length()); //9

        //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++) {
            System.out.print(name.charAt(i));
        }
        System.out.println();
        System.out.println("----------------------");

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

        //4.public String substring(int beginIndex , int endIndex): 截取内容,包前不包后
        String name2 = "Java是最厉害的编程语言!";
        System.out.println(name2.substring(0, 9)); //Java是最厉害的

        //5.public String substring(int beginIndex): 从当前索引一直截取到末尾
        System.out.println(name2.substring(9)); //编程语言!

        //6.public String replace(CharSequence target , CharSequence replacement)
        //替换字符串的内容
        String name3 = "皮卡丘是最可爱的";
        System.out.println(name3.replace("皮卡丘", "***")); /

        //方案二:
        //从后面倒着遍历再删除就可以
        for (int i = list.size() - 1 ; i >= 0 ; i--) {
            if(list.get(i) < 80){
                list.remove(i);
            }
        }
        System.out.println(list); //输出[98, 89, 100]
    }
}

6.ArrayList集合案例:存储自定义类型的对象

需求:某影院系统需要在后台存储上述三部电影,然后依次展示出来

package com.pikaqiu.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;
    }

    //定义get和set方法
    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;
    }
}


package com.pikaqiu.arraylist;

import java.util.ArrayList;

public class ArrayListTest2 {
    public static void main(String[] args) {
        //创建三个电影对象
        Movie movie1 = new Movie("肖生客的救赎",9.7,"罗宾斯");
        Movie movie2 = new Movie("霸王别姬",9.9,"张国荣,张丰毅");
        Movie movie3 = new Movie("阿甘正传",9.6,"汤姆.汉克斯");

        //创建一个电影类型的集合存储三部电影
        ArrayList movies = new ArrayList<>();
        movies.add(movie1);
        movies.add(movie2);
        movies.add(movie3);
        System.out.println(movies); //这是三部电影的地址

        //遍历电影类型的集合中的每个电影对象
        for (int i = 0; i < movies.size(); i++) {
            Movie m = movies.get(i);
            System.out.print("电影名称:" + m.getName() + " ");
            System.out.print("电影分数:" + m.getScore() + " ");
            System.out.print("电影主演:" + m.getActor() + " ");
            System.out.println();
        }
    }
}

总结:集合中存储的元素并不是对象本身,而是对象的地址

7.ArrayList集合案例:元素搜索

需求:后台程序需要存储如上学生信息并展示,然后要提供按照学号搜索学生信息的功能

package com.pikaqiu.arraylist;

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


package com.pikaqiu.arraylist;

import java.util.ArrayList;
import java.util.Scanner;

public class ArrayListTest3 {
    public static void main(String[] args) {
        //1.定义学生类
        //2.创建集合存储学生对象,创建学生对象封装学生信息
        //把学生对象添加到集合中去
        ArrayList 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.遍历学生信息展示
        for (int i = 0; i < students.size(); i++) {
            Student s = students.get(i);
            System.out.print("学号:" + s.getStudyNumber() + "t");
            System.out.print("姓名:" + s.getName() + "t");
            System.out.print("年龄:" + s.getAge() + "t");
            System.out.print("班级:" + s.getClassName() + "t");
            System.out.println();
        }
        //4.定义方法完成按照学号搜索的功能
        Scanner sc = new Scanner(System.in);
        boolean flag = true;
        while (flag) {
            System.out.print("请输入学号查询学生对象:");
            String studyNumber = sc.next();
            //5.调用方法查询
            Student s = getStudentById(students, studyNumber);
            //6.判断s是否存在学生对象地址
            if(s == null){
                System.out.println("查无此人!!!");
            }else{
                System.out.println("您查询的学生信息如下:");
                System.out.print("学号:" + s.getStudyNumber() + "t");
                System.out.print("姓名:" + s.getName() + "t");
                System.out.print("年龄:" + s.getAge() + "t");
                System.out.print("班级:" + s.getClassName() + "t");
                System.out.println();
                flag = false;
            }
        }
    }

    
    public static Student getStudentById(ArrayList students,String studyNumber){
        //1.遍历所有学生对象
        for (int i = 0; i < students.size(); i++) {
            Student s = students.get(i);
            //2.询问当前遍历的这个学生对象的学号,是否是我们要找的学号
            if(s.getStudyNumber().equals(studyNumber)){
                return s;
            }
        }
        return null;
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1013402.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号