JAVA SE基础《九》 ---- 常用API

目录

一、包

二、String

  1、String概述

  2、String的常用方法

  3、String使用时的注意事项

  4、String的应用案例

三、ArrayList

  1、ArrayList快速入门

   1、ArrayList应用案例

   1、ArrayLis综合案例

 

前言

API (Application Programming Interface,应用程序编程接口)

  • Java写好的程序(功能),咱们可以直接调用。
  • Oracle 也为Java提供的这些功能代码提供了相应的 API文档(使用说明书) 。

 

 

 

一、包

什么是包?

  • 包是用来分门别类的管理各种不同程序的,类似于文件夹,建包有利于程序的管理和维护。
  • 建包的语法格式:

在自己的程序中调用其他包下的程序的注意事项

  • 如果当前程序中,要调用自己所在包下的其他程序,可以直接调用。(同一个包下的类,互相可以直接调用
  • 如果当前程序中,要调用其他包下的程序,则必须在当前程序中导包,才可以访问!导包格式: import 包名.类名
  • 如果当前程序中,要调用java提供的程序,也需要先导包才可以使用;但是java.lang包下的程序是不需要我们导包的,可以直接使用。
  • 如果当前程序中,要调用多个不同包下的程序,而这些程序名正好一样,此时默认只能导入一个程序,另一个程序必须带包名访问。

 

二、String

1、String概述

String简单介绍

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

 String创建对象封装字符串数据的方式

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

  •  方式二:调用String类的构造器初始化字符串对象

public class StringDemo1 {
    public static void main(String[] args) {
        // 目标:掌握创建String对象,并封装要处理的字符串的两种方式。

        // 1、直接双引号得到字符串对象,封装字符串数据。
        String rs1 = "ctgu";
        System.out.println(rs1);

        // 2、new String创建字符串对象,并调用构造器初始化字符串。
        String rs2 = new String("ctgu");
        System.out.println(rs2);

        char[] chars = {'a','b','c'};
        String rs3 = new String(chars);
        System.out.println(rs3);
    }
}

总结

1、String是什么?可以做什么?

  • 代表字符串,可以用来创建对象封装字符串数据,并对其进行处理。

2、String类创建对象封装字符串数据的方式有几种?

  • 方式一:直接使用双引号“...”。
  • 方式二:new String类,调用构造器初始化字符串对象。

 

2、String的常用方法

String提供的操作字符串数据的常用方法

 

package com.ctgu.string;


public class StringDemo2 {
    public static void main(String[] args) {
        // 目标:快速熟悉String提供的处理字符串的常用方法。
        String s = "黑马Java";
        // 1、获取字符串的长度
        System.out.println(s.length());
        
        // 2、提供方字符串中某个索引位置处的字符
        char c = s.charAt(1);
        System.out.println(c);
        
        // 字符串的遍历
        for (int i = 0; i < s.length() ; i++) {
            // i = 0 1 2 3 4 5
            char ch = s.charAt(i);
            System.out.println(ch);
        }
        // 3、把字符串转换成字符数组,再进行遍历
        char[] chars = s.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            System.out.println(chars[i]);
        }
        // 4、判断字符串内容,内容一样就返回true
        String s1 = new String("ctgu");
        String s2 = new String("ctgu");
        System.out.println(s1 == s2); // false
        System.out.println(s1.equals(s2)); // true

        // 5、忽略大小写比较字符串内容
        String c1 = "34AeFG";
        String c2 = "34aEfg";
        System.out.println(c1.equals(c2));//false
        System.out.println(c1.equalsIgnoreCase(c2)); //true

        // 6、截取字符串内容
        String s3 = "Java是最好的编程语言之一";
        String rs = s3.substring(0,8); //包前不包后

        // 7、从当前索引位置一直截取到字符串的末尾
        String rs2 = s3.substring(5);
        System.out.println(rs2);

        // 8、把字符串中的某个内容替换成新内容,并返回新的字符串对象给我们
        String info = "这个电影简直是个垃圾,垃圾电影!!";
        String rs3 = info.replace("垃圾","**");
        System.out.println(rs3);

        // 9、判断字符串中是否包含某个关键字
        String info2 = "Java是最好的编程语言之一,我爱Java,Java不爱我!";
        System.out.println(info2.concat("Java"));

        // 10、判断字符串是否以某个字符串开头。
        String rs4 = "张三丰";
        System.out.println(rs4.startsWith("张"));

        // 11、把字符串按照某个指定内容分割成多个字符串,放到一个字符串数组中返回给我们
        String rs5 = "张无忌,周芷若,殷素素,赵敏";
        String[] names = rs5.split(",");
        for (int i = 0; i < names.length; i++) {
            System.out.println(names[i]);
        }
    }
}

 

3、String使用时的注意事项

String使用时的注意事项

 String注意事项1:String的对象是不可变字符串对象

 总结

1、String有哪几点注意事项?

  • String是不可变字符串对象
  • 只要是以“...”方式写出的字符串对象,会存储到字符串常量池,且相同内容的字符串只存储一份。
  • 但通过new方式创建字符串对象,每new一次都会产生一个新的对象放在堆内存中。

案例

 

 

 

4、String的应用案例

案例 完成用户登录

需求

  • 系统正确的登录名和密码是:ctgu/123456,请在控制台开发一个登录界面,接受用户输入的登录名和密码,判断用户是否登录成功,登录成功后展示:“欢迎进入系统!”,即可停止系统。(注意:要求最多给用户三次登录机会

步骤

  1、开发登录界面,提示用户通过键盘输入登录名和密码。

  2、设计一个登录方法,对用户的登录名和密码进行准确性认证。

  3、根据登录方法返回的认证结果,判断用户是否登录成功。

  4、使用循环控制登录界面最多显示3次。

package com.ctgu.string;
import java.util.Scanner;

/**
    目标:完成用户的登录案例
 */
public class StringTest4 {
    public static void main(String[] args) {
        // 1、开发一个登录界面
        for (int i = 0; i < 3; i++) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请您输入登录名称:");
            String loginName = sc.next();
            System.out.println("请您输入登录密码:");
            String passWord = sc.next();

            // 5、开始调用登录方法,判断是否登录成功
            boolean rs = login(loginName,passWord);
            if(rs){
                System.out.println("恭喜您,欢迎进入系统!");
                break; // 跳出for循环,代表登录完成
            }else{
                System.out.println("登录名或者密码错误,请您确认~~~");
            }
        }
    }

    /**
     * 2、开发一个登录方法,接受用户的登录名和密码,返回认证的结果
     */
    public static boolean login(String loginName,String passWord){
        // 3、准备一份系统正确的登录名和密码
        String okLoginName = "ctgu";
        String okPassWord = "123456";

        // 4、开始正式判断用户是否登陆成功
        if(okLoginName.equals(loginName) && okPassWord.equals(passWord)){
            // 登录成功的
            return true;
        }else{
            return false;
        }
    }
}

 总结

1、字符串的比较使用==比较好吗?为什么?什么时候使用==?

  • 不好,对于字符串对象的比较,==比较的是地址,容易出业务bug
  • 基本数据类型的变量或者值应该使用==比较。

2、开发中比较字符串推荐使用什么方式比较?

  • 使用String提供的equals方法,它只关心字符串内容一样就返回true。

 

案例 使用String来开发验证码

 

需求

  • 实现随机产生验证码,验证码的每位可能是数字、大写字母、小写字母。

分析

① 设计一个方法,该方法接受一个整型参数,最终要返回对应位数的随机验证码。

② 方法内定义2个字符串变量:1个用来记住生成的验证码,1个用来记住要用到的全部字符。

 ③定义for循环控制生成多少位随机字符,每次得到一个字符范围内的随机索引,根据索引提取该字符,把该字符交给code变量连接起来,循环结束后,在循环外返回code即可。

④主程序中,调用改方法即可得到随机验证码。

 

package com.ctgu.string;

import java.util.Random;

/**
 * 目标:完成随机产生验证码,验证码的每位可能是数字、大写字母、小写字母
 */
public class StringTest5 {
    public static void main(String[] args) {
        System.out.println(createCode(4));
    }
    /**
     * 1、设计一个方法,返回指定位数的验证码
     */
    public static String createCode(int n){
        // 2、定义2个变量 一个是记住最终产生的随机验证码 一个是记住可能用到的全部字符
        String code = "";
        String data = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

        Random r = new Random();
        // 3、开始定义一个循环产生每位随机字符
        for (int i = 0; i < n; i++) {
            // 4、随机一个字符范围的索引。
            int index = r.nextInt(data.length());
            // 5、根据索引去全部字符中提取该字符
            code += data.charAt(index);

        }
        // 6、返回code字符
        return code;
    }
}

 

三、ArrayList

1、ArrayList快速入门

什么是集合?

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

有数组,为啥还学习集合?

  • 数组定义完成并启动后,长度就固定了
  • 集合大小可变,开发中用的更多。

 

 

package com.ctgu.arraylist;

import java.util.ArrayList;

/**
 * 目标:要求同学们掌握如何创建ArrayList集合的对象,并熟悉ArrayList提供的常用方法。
 */
public class ArrayListDemo1 {
    public static void main(String[] args) {
        // 1、创建一个ArrayList的集合对象
        // ArrayList<String> list = new ArrayList<String>();
        // 从jdk 1.7开始才支持的
        ArrayList list = new ArrayList();
        list.add("ctgu");
        list.add(66);
        list.add("java");
        System.out.println(list);

        // 2、往集合中的某个索引位置处添加一个数据
        list.add(1,"MySQL");
        System.out.println(list);

        // 3、根据索引获取集合中某个索引位置处的值
        String rs = (String) list.get(1);
        System.out.println(rs);

        // 4、获取集合的大小(返回集合中存储的元素个数)
        System.out.println(list.size());

        // 5、根据索引删除集合中的某个元素值,会返回被删除的元素值给我们
        System.out.println(list.remove(1));
        System.out.println(list);

        // 6、直接删除某个元素值,删除成功会返回true,反之
        System.out.println(list.remove("Java"));
        System.out.println(list);

        // 默认删除的是第一次出现的这个ctgu的数据
        System.out.println(list.remove("ctgu"));
        System.out.println(list);

        // 7、修改某个索引位置处的数据,修改后会返回原来的值给我们
        System.out.println(list.set(1,"黑马程序员"));
        System.out.println(list);
    }
}

 总结

1、集合是什么?有什么特点?

  • 一种容器,用来存储数据的。
  • 集合的大小可变

2、ArrayList是什么?怎么使用?

  • 是集合中最常用的一种,ArrayList是泛型类,可以约束存储的数据类型。
  • 创建对象,调用无参数构造器初始化对象:public ArrayList();
  • 调用相应的增删改查数据的方法

3、Array提供了哪些常用方法?

 

2、ArrayList应用案例

 

 

package com.ctgu.arraylist;

import java.util.ArrayList;

/**
 * 目标:掌握从集合容器中找数据并删除的技巧。
 *
 */
public class ArrayListTest2 {
    public static void main(String[] args) {
        // 1、创建一个ArrayList集合对象
        ArrayList<String> list = new ArrayList<String>();
        list.add("Java入门");
        list.add("宁夏枸杞");
        list.add("黑枸杞");
        list.add("人字拖");
        list.add("特级枸杞");
        list.add("枸杞子");
        System.out.println(list);

        // 2、开始完成需求,从集合中找出包含枸杞的数据并删除它
        for (int i = 0; i < list.size() ; i++) {
            // i = 0 1 2 3 4 5
            // 取当前遍历到的数据
            String ele = list.get(i);
            // 判断这个数据中包含枸杞
            if (ele.contains("枸杞")){
                // 直接从集合中删除该数据
                list.remove(ele);
                i--;
            }
        }
        System.out.println(list);

        // 方式二:从集合的后面倒着遍历并删除
//        for (int i = list.size() - 1; i >= 0 ; i--) {
//            // 取当前遍历到的数据
//            String ele = list.get(i);
//            // 判断这个数据中包含枸杞
//            if (ele.contains("枸杞")){
//                // 直接从集合中删除该数据
//                list.remove(ele);
//            }
//        }
//        System.out.println(list);
    }

}

总结

1、从集合中遍历元素,并筛选出元素删除它,应该如何操作才能不出bug?

  • 方式一:每次删除一个数据后,索引-1.
  • 方式二:从集合后面遍历然后删除,可以避免漏掉元素。

 

3、ArrayList综合案例

 

 分为三个类,Food实体类,FoodOperator菜品操作类:负责上架和浏览功能的实现,ArrayListTest3负责业务处理。

package com.ctgu.arraylist;


public class Food {
    private String name;
    private double price;
    private String desc;

    public Food() {
    }

    public Food(String name, double price, String desc) {
        this.name = name;
        this.price = price;
        this.desc = desc;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return price
     */
    public double getPrice() {
        return price;
    }

    /**
     * 设置
     * @param price
     */
    public void setPrice(double price) {
        this.price = price;
    }

    /**
     * 获取
     * @return desc
     */
    public String getDesc() {
        return desc;
    }

    /**
     * 设置
     * @param desc
     */
    public void setDesc(String desc) {
        this.desc = desc;
    }

    public String toString() {
        return "Food{name = " + name + ", price = " + price + ", desc = " + desc + "}";
    }
}

FoodOperator类

package com.ctgu.arraylist;

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

/**
 * 菜品操作类:负责上架和浏览功能的实现
 */
public class FoodOperator {
    // 1、定义一个ArrayList集合对象,负责存储菜品对象信息
    private ArrayList<Food> foodList = new ArrayList<>();

    // 2、开发功能:上架菜品功能
    public void addFood(){
        // 3、创建一个菜品对象,封装上架的的菜品信息
        Food f = new Food();

        // 4、录入菜品信息进去
        Scanner sc = new Scanner(System.in);
        System.out.println("请您输入该菜品名称:");
        String name = sc.next();
        f.setName(name);

        System.out.println("请您输入该菜品价格:");
        Double price = sc.nextDouble();
        f.setPrice(price);

        System.out.println("请您输入该菜品描述:");
        String desc = sc.next();
        f.setDesc(desc);

        // 5、把菜品对象存入到集合中去
        foodList.add(f);
        System.out.println("上架成功!");
    }
    // 6、展示菜品
    public void showAllFoods(){
        if(foodList.size() == 0){
            System.out.println("什么菜品都没有,先去上架!");
            return;
        }
        for (int i = 0; i < foodList.size(); i++) {
            Food f = foodList.get(i);
            System.out.println(f.getName());
            System.out.println(f.getPrice());
            System.out.println(f.getDesc());
            System.out.println("-------------------");

        }
    }

    /** 负责展示操作界面**/
    public void start(){
        while (true) {
            System.out.println("请选择功能:");
            System.out.println("1、上架菜品");
            System.out.println("2、展示菜品");
            System.out.println("3、退出");

            Scanner sc = new Scanner(System.in);
            System.out.println("请选择您的操作:");
            String command = sc.next();
            switch (command){
                case "1":
                    addFood();
                    break;
                case "2":
                    showAllFoods();
                    break;
                case "3":
                    System.out.println("下次再来哦!");
                    return;
                default:
                    System.out.println("您输入的命令不存在!");

            }
        }

    }

}

ArrayListTest3类

package com.ctgu.arraylist;


import java.util.ArrayList;

public class ArrayListTest3 {
    public static void main(String[] args) {
        // 目标:完成拓展案例:商家彩品上架操作。
        // 1、设计一个菜品类Food,负责创建菜品对象,封装菜品数据。
        // 2、设计一个菜品操作类FoodOperator,负责对菜品的业务处理
        FoodOperator operator = new FoodOperator();
        operator.start();
    }
}

 

 

 

posted @ 2023-08-23 21:59  小王子C  阅读(17)  评论(0编辑  收藏  举报