Java程序设计--常用API(上)(九)


1、String

1.1 String类概述

java.lang.String 类代表字符串,String类定义的变量可以用于指向字符串对象,然后操作该字符串。

Java程序中的所有字符串文字(例如“abc”)都为此类的对象。

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

字符串对象以 “” 方式给出的字符串对象,在字符串常量池中存储。

1.2 String创建对象

  1. 直接使用“”定义。(推荐方式)
  2. 通过String类的构造器创建对象。
构造器说明
public String()创建一个空白字符串对象,不含有任何内容
public String(String original)根据传入的字符串对象,来创建字符串对象
public String(char[] chs)根据字符数组的内容,来创建字符串对象
public String(byte[] chs)根据字节数组的内容,来创建字符串对象
public class StringDemo {
    public static void main(String[] args) {
        // 方式一:直接使用双引号得到字符串对象
        String name = "我爱你XX";
        System.out.println(name);

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

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

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

        // 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 ss1 = "abc";//内容
        String ss2 = "abc";
        System.out.println(ss1 == ss2);

        char[] chars1 = {'a' , 'b' , 'c'};
        String ss3 = new String(chars1);//地址
        String ss4 = new String(chars1);
        System.out.println(ss3 == ss4);
    }
}

以“”方式给出的字符串对象,在字符串常量池中存储,而且相同内容只会在其中存储一份。

在这里插入图片描述

通过构造器new对象,每new一次都会产生一个新对象,放在堆内存中。

在这里插入图片描述

1.3 常用API

字符串内容比较

推荐使用String类提供的“equals”比较:只关心内容一样即可

方法名说明
public boolean equals (Object anObject)将此字符串与指定对象进行比较。只关心字符内容是否一致!
public boolean equalsIgnoreCase (string anotherString)将此字符串与指定对象进行比较,忽略大小写比较字符串。只关心字符内容是否一致!
import java.util.Scanner;

public class StringAPIEqualsDemo {
    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("用户名或者密码错误了!");
        }

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

String类常用API

方法名说明
public int length()返回此字符串的长度
public char charAt(int index)获取某个索引位置处的字符
public char[] toCharArray() :将当前字符串转换成字符数组返回
public sString substring(int beginIndex, int endIndex)根据开始和结束索引进行截取,得到新的字符串(包前不包后)
public string substring(int beginIndex)从传入的索引处截取,截取到末尾,得到新的字符串
public string replace(CharSequence target,CharSequence replacement)使用新值,将字符串中的旧值替换,得到新的字符串
public string[ ] split(String regex)根据传入的规则切割字符串,得到字符串数组返回
/**
    String常用的其他API。
 */
public class StringAPIOtherDemo{
    public static void main(String[] args) {
        // 1、public int length(): 获取字符串的长度
        String name = "我爱你XXlove";
        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是最厉害的编程语言!";
        //              01234567   89
        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 = "金X胖是最厉害的80后,金X胖棒棒的!我好爱金X胖";
        String rs3 = name3.replace("金X胖", "***");
        System.out.println(rs3);

        // 7、public boolean contains(CharSequence s)
        System.out.println(name3.contains("金X胖")); // true
        System.out.println(name3.contains("金XX胖")); // false

        // 8、public boolean startsWith(String prefix)
        System.out.println(name3.startsWith("金X胖"));
        System.out.println(name3.startsWith("金X胖是最厉害的"));
        System.out.println(name3.startsWith("金X胖是最厉害的2"));

        // 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]);
        }
    }
}

2、Arraylist

2.1 Arraylist概述

集合是与数组类似,也是一种容器,用于装数据的。

在这里插入图片描述

数组定义完成并启动后,类型确定、长度固定。

在个数不能确定,且要进行增删数据操作的时候,数组是不太合适的

在这里插入图片描述

  1. 集合的大小不固定,启动后可以动态变化,类型也可以选择不固定。
  2. 集合非常适合做元素个数不确定,且要进行增删操作的业务场景。
  3. 集合的提供了许多丰富、好用的功能,而数组的功能很单一。

ArrayList是集合中的一种,它支持索引。

ArrayList集合的对象获取

构造器说明
public ArrayList()创建一个空的集合对象

ArrayList集合添加元素的方法

方法名说明
public boolean add(E e)将指定的元素追加到此集合的末尾
public void add(int index,E element)在此集合中的指定位置插入指定的元素
/**
      创建ArrayList对象,代表集合容器,往里面添加元素。
 */
public class ArrayListDemo1 {
    public static void main(String[] args) {
        // 1、创建ArrayList集合的对象
        ArrayList list = new ArrayList();

        // 2、添加数据
        list.add("Java");
        list.add("Java");
        list.add("MySQL");
        list.add("程序员");
        list.add(23);
        list.add(23.5);
        list.add(false);
        System.out.println(list.add('中'));
        System.out.println(list);

        // 3、给指定索引位置插入元素
        list.add(1, "赵敏");
        System.out.println(list);
    }
}

2.2 Arraylist与泛型

ArrayList︰其实就是一个泛型类,可以在编译阶段约束集合对象只能操作某种数据类型

举例:

  • ArrayList < String > :此集合只能操作字符串类型的元素。
  • ArrayList < lnteger >:此集合只能操作整数类型的元素。

注意:集合中只能存储引用类型,不支持基本数据类型。

/**
      能够使用泛型约束ArrayList集合操作的数据类型
 */
public class ArrayListDemo2 {
    public static void main(String[] args) {
        // ArrayList<String> list = new ArrayList<String>();
        ArrayList<String> list = new ArrayList<>(); // JDK 1.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");


    }
}

2.3 Arraylist常用API

方法名说明
public boolean remove(Object o)删除指定的元素,返回删除是否成功
public E remove(int index)删除指定索引处的元素,返回被删除的元素
public E set(int index,E element)修改指定索引处的元素,返回被修改的元素
public E get(int index)返回指定索引处的元素
public int size()返回集合中的元素的个数
public boolean add(E e)将指定的元素追加到此集合的末尾
public void add(int index,E element)在此集合中的指定位置插入指定的元素
/**
    目标:掌握ArrayList集合的常用API
 */
public class ArrayListDemo3 {
    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);

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

        // 3、完成集合的遍历
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

        // 4、public E remove(int index):删除某个索引位置处的元素值,并返回被删除的元素值
        System.out.println(list); // [Java, Java, MySQL, MyBatis, HTML]
        String e2 = list.remove(2);
        System.out.println(e2);
        System.out.println(list);

        // 5、public boolean remove(Object o):直接删除元素值,删除成功返回true,删除失败返回false
        System.out.println(list.remove("MyBatis"));
        System.out.println(list);

        ArrayList<String> list1 = new ArrayList<>();
        list1.add("Java");
        list1.add("王X强");
        list1.add("Java");
        list1.add("MySQL");
        System.out.println(list1);
        // 只会删除第一次出现的这个元素值,后面的不删除
        System.out.println(list1.remove("Java"));
        System.out.println(list1);


        // 6、public E set(int index,E element):修改某个索引位置处的元素值。
        String e3 = list1.set(0 , "贾乃亮");
        System.out.println(e3);
        System.out.println(list1);


    }
}

案例:

遍历并删除元素值

需求:某个班级的考试在系统上进行,成绩大致为:98,77,66,89,79,50,100
现在需要先把成绩低于80分以下的数据去掉。

/**
   案例:从集合中遍历元素且删除。
 */
public class ArrayListTest{
    public static void main(String[] args) {
        // 1、创建集合对象:存入学生成绩(98,77,66,89,79,50,100)
        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);

        for (int i = scores.size() - 1; i >= 0 ; i--) {
            int score = scores.get(i);
            // 2、判断这个分数是否低于80分,如果低于则从集合中删除它
            if(score < 80){
                scores.remove(i);
            }
        }
        System.out.println(scores);
    }
}

存储自定义类型

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

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;
    }
}
import java.util.ArrayList;

/**
    案例:集合存储自定义元素并遍历。
    需求:定义电影类(名称,分值,演员),创建3个电影对象,代表三部影片,存入集合中并遍历。
    《肖生克的救赎》, 9.7 , 罗宾斯
    《霸王别姬》, 9.6 , 张国荣、张丰毅
    《阿甘正传》, 9.5 , 汤姆.汉克斯
 */
public class ArrayListTest5{
    public static void main(String[] args) {
        // 1、定义一个电影类:Movie
        // 2、定义一个ArrayList集合存储这些影片对象。
        ArrayList<Movie> movies = new ArrayList<>();

        // 3、创建影片对象封装电影数据,把对象加入到集合中去。
//        Movie m1 = new Movie("《肖生克的救赎》", 9.7 , "罗宾斯");
//        movies.add(m1);
        movies.add(new Movie("《肖生克的救赎》", 9.7 , "罗宾斯"));
        movies.add(new Movie("《霸王别姬》", 9.6 , "张国荣、张丰毅"));
        movies.add(new Movie("《阿甘正传》", 9.5 , "汤姆.汉克斯"));

        System.out.println(movies);

        // 4、遍历集合中的影片对象并展示出来
        for (int i = 0; i < movies.size(); i++) {
            Movie movie = movies.get(i);
            System.out.println("片名:" + movie.getName());
            System.out.println("评分:" + movie.getScore());
            System.out.println("主演:" + movie.getActor());
        }
    }
}



元素搜索

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

public class Student {
    private String studyId;
    private String name;
    private int age;
    private String className;

    public Student() {
    }

    public Student(String studyId, String name, int age, String className) {
        this.studyId = studyId;
        this.name = name;
        this.age = age;
        this.className = className;
    }

    public String getStudyId() {
        return studyId;
    }

    public void setStudyId(String studyId) {
        this.studyId = studyId;
    }

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

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

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

        // 3、遍历集合中的每个学生对象并展示其数据
        for (int i = 0; i < students.size(); i++) {
            Student s = students.get(i);
            System.out.println(s.getStudyId() +"\t\t" + s.getName()+"\t\t"
                    + s.getAge() +"\t\t" + s.getClassName());
        }

        // 4、让用户不断的输入学号,可以搜索出该学生对象信息并展示出来(独立成方法)
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("请您输入要查询的学生的学号:");
            String id = sc.next();
            Student s = getStudentByStudyId(students, id);
            // 判断学号是否存在
            if(s == null){
                System.out.println("查无此人!");
            }else {
                // 找到了该学生对象了,信息如下
                System.out.println(s.getStudyId() +"\t\t" + s.getName()+"\t\t"
                        + s.getAge() +"\t\t" + s.getClassName());
            }
        }
    }

    /**
      根据学号,去集合中找出学生对象并返回。
     * @param students
     * @param studyId
     * @return
     */
    public static Student getStudentByStudyId(ArrayList<Student> students, String studyId){
        for (int i = 0; i < students.size(); i++) {
            Student s = students.get(i);
            if(s.getStudyId().equals(studyId)){
                return s;
            }
        }
        return null; // 查无此学号!
    }
}

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java EE 5 Platform Packages javax.activation The JavaBeans(TM) Activation Framework is used by the JavaMail(TM) API to manage MIME data. javax.annotation javax.annotation.security javax.ejb The javax.ejb package contains the Enterprise JavaBeans classes and interfaces that define the contracts between the enterprise bean and its clients and between the enterprise bean and the EJB container. javax.ejb.spi The javax.ejb.spi package defines interfaces that are implemented by the EJB container. javax.el Provides the API for the Unified Expression Language shared by the JSP 2.1 and JSF 1.2 technologies. javax.enterprise.deploy.model Provides Tool Vendor implementation classes. javax.enterprise.deploy.model.exceptions Provides Tool Vendor exception implementation classes. javax.enterprise.deploy.shared Provides shared objects for Tool Vendor and Product Vendor implementation classes. javax.enterprise.deploy.shared.factories Provides shared factory manager object for Tool Vendor and Product Vendor implementation classes. javax.enterprise.deploy.spi Provides J2EE Product Vendor implementation classes. javax.enterprise.deploy.spi.exceptions Provides J2EE Product Vendor deployment exception implementation classes. javax.enterprise.deploy.spi.factories Provides J2EE Product Vendor deployment factory implementation classes. javax.enterprise.deploy.spi.status Provides J2EE Product Vendor deployment status implementation classes. javax.faces Top level classes for the JavaServer(tm) Faces API. javax.faces.application APIs that are used to link an application's business logic objects to JavaServer Faces, as well as convenient pluggable mechanisms to manage the execution of an application that is based on JavaServer Faces. javax.faces.component Fundamental APIs for user interface components. javax.faces.component.html Specialized user interface component classes for HTML. javax.faces.context Classes and interfaces defining per-request state information. javax.faces.convert Contains classes and interfaces defining converters. javax.faces.el DEPRECATED Classes and interfaces for evaluating and processing reference expressions. javax.faces.event Interfaces describing events and event listeners, and concrete event implementation classes. javax.faces.lifecycle Classes and interfaces defining lifecycle management for the JavaServer Faces implementation. javax.faces.model Standard model data beans for JavaServer Faces. javax.faces.render Classes and interfaces defining the rendering model. javax.faces.validator Interface defining the validator model, and concrete validator implementation classes. javax.faces.webapp Classes required for integration of JavaServer Faces into web applications, including a standard servlet, base classes for JSP custom component tags, and concrete tag implementations for core tags. javax.interceptor The javax.interceptor package contains classes and interfaces for use with EJB interceptors. javax.jms The Java Message Service (JMS) API provides a common way for Java programs to create, send, receive and read an enterprise messaging system's messages. javax.jws javax.jws.soap javax.mail The JavaMailTM API provides classes that model a mail system. javax.mail.event Listeners and events for the JavaMail API. javax.mail.internet Classes specific to Internet mail systems. javax.mail.search Message search terms for the JavaMail API. javax.mail.util Utility classes. javax.management.j2ee Provides the J2EE Management Enterprise Bean component (MEJB) interfaces. javax.management.j2ee.statistics Provides the standard interfaces for accessing performance data from J2EE managed objects Package Specification JSR 77, J2EE Management Related Documentation For overviews, tutorials, examples, guides, and tool documentation, please see: J2EE Tools javax.persistence The javax.persistence package contains the classes and interfaces that define the contracts between a persistence provider and the managed classes and the clients of the Java Persistence API. javax.persistence.spi The javax.persistence.spi package defines the classes and interfaces that are implemented by the persistence provider and the Java EE container for use by the container, provider, and/or Persistence bootstrap class in deployment and bootstrapping.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会思想的苇草i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值