自学内容网 自学内容网

常见API(一)

        API(Application Programming interface):应用程序编程接口,别人写好的程序,直接拿来调用。主要是为了灵活解决需求。这次只先简单学习了一下String和ArrayList两个。

  1.包

        包是分门别类管理程序的,类似于文件夹。别人写好的包通常都在别人的包里面。

注意事项:1.同一个包下的程序,可以直接访问

                  2.访问其他包下的程序,必须导包才可以访问

                  3.自己的程序中调用java提供的程序,也需要先导包才可以使用;注意:                                  java.long包下的程序是不需要我们导包的,可以直接使用

                  4.访问多个其他包下的程序,这些程序名又一样的情况下,默认只能                                          导入 一 个程序,另一个程序必须带包名和类名来访问。

 

package API;

import API.itcast.Demo1;
import API.itcast.Demo2;

import java.util.Random;
import java.util.Scanner;

/* 目标:掌握如何在自己的程序下调用其他包下的程序,以及一些注意事项*/
public class Text {
    public static void main(String[] args) {
        //1.同一个包下的程序,可以直接访问
        Dome d = new Dome();
        d.print();

        //2.访问其他包下的程序,必须导包才可以访问
        Demo1 d1 = new Demo1();
        d1.print();

        //.自己的程序中调用java提供的程序,也需要先导包才可以使用;注意: java.long包下的程序是不需要我们导包的,可以直接使用
        Scanner sc = new Scanner(System.in);
        String s = "楠楠";
        Random r = new Random();

        // 4.访问多个其他包下的程序,这些程序名又一样的情况下,默认只能导入一个程序,另一个程序必须带包名和类名来访问。
        Demo2 d2 = new Demo2();
        d2.print();
    }
}
package API.itcast;

public class Demo1 {
    public void print(){
        System.out.println("Hello World2");
    }

}
package API.itcast;

public class Demo1 {
    public void print(){
        System.out.println("Hello World2");
    }

}
package API;

public class Dome {
    public void print(){
        System.out.println("Hello World1");
    }
}

  2.String

(1)数据封装和常用方法

        String,主要是对字符串的处理。在java.lang.String代表字符串,封装了字符串数据和处理字符串的方法。


        String 数据封装

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

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

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

构造器说明
public Sttring创建一个空白字符串对象,不含有任何内容
public String(String original)根据传入的字符串内容,来创建字符串对象
public String (char [ ] chars)根据字符数组的内容,来创建字符串对象
public String (byte [ ] bytes)根据字节数组的内容,来创建字符串对象

   

package String;

public class Demo1 {
    public static void main(String[] args) {
        //目标:掌握创建String对象,并封装要处理的字符串的两种方式。
        //1.直接双引号得到字符串对象,封装字符串数据
        String name = "楠楠";
        System.out.println(name);

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

        String rs2 = new String("楠楠");
        System.out.println(rs2);

        char[] chars = {'W','S','K'};
        String rs3 = new String(chars);
        System.out.println(rs3);

        byte[] bytes = {97,98,99};
        String rs4 = new String(bytes);
        System.out.println(rs4);
    }
}

  String 常用方法
方法名说明
public int length()获取字符串的长度并返回(字符个数)
public char cahrAt(int index)获取某个索取位置处的字符返回
public char[ ] toCharArray( ):将当前字符串转换为字符数组返回
public boolean equals(objetct anobject)判断当前字符串与另一个字符串的内容一样,一样返回true
public boolean equalsIgnoreCase(String another String)判断当前字符串和另一个字符串的内容是否一样(忽略大小写)
public String substring(int beginIndex,int endIndex)根据开始和结束索引进行警截取,得到新字符串(包前前不包后)
public String substring(int beginIndex)从传入的索引处开始截取,截取到末尾,得到新的字符串返回
public String replace(Charsrquencce target,CharSequnce replacement)使用新值,将字符串中的旧值替换,得到新的字符串
public boolean contains(CharSequence s)判断字符串中是否包含某个字符串
public boolean startsWitch(String prefix)判断字符串是否以某个字符串内容开头,开头返回true,反之,返回,flase
public String [ ] split(String regex)把字符串按照某个字符串内容分割,并返回字符串数组回来
package String;

public class Dome2 {
    public static void main(String[] args) {
        //目的:快速熟悉String提供的字符串的常用方法
        String S = "情忆楠楠而眠";
        //1.获取字符串长度
        System.out.println(S.length());

        //2.提取字符串中某个索引位置处的字符
        char c = S.charAt(2);
        System.out.println(c);

        //字符串的遍历
        for (int i = 0; i < S.length(); i++) {
            char ch = S.charAt(i);
            System.out.println(ch);
        }
        System.out.println("______________");
        //3.把字符串转化为字符数组
        char[] chars = S.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            System.out.println(chars[i]);
        }

        //4.判断字符串内容一致就返回true
        String s1 = new String("楠楠");
        String s2 = new String("楠楠");
        System.out.println(s1 == s2);//false
        System.out.println(s1.equals(s2));//true

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

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

        //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.contains("java"));
        System.out.println(info2.contains("Java"));

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

        //11.把字符串按照某个制定方法分割成多个字符串,放到一个字符串数组中返回
        String rs5 = "陈平安,宁姚,阮秀,陈清流,陈暖树,齐静春";
        String[] names  =rs5.split(",");
        for (int i = 0; i < names.length; i++) {
            System.out.println(names[i]);
        }
    }
}

                                                 (熟悉方法的测试代码)


(2)注意事项

1. String 对象的内容不可改变,被称为不可变字符串对象。

2. 只要是通过“.......”方式写出的字符串对象,会存储到字符串常量池,且相同内容的字符串只存储一次。(地址是一致的)

    但通过new方式创建字符串对象,每new一次都会产生一个新对象放到堆内存中。

       每次试图改变字符串对象实际是产生了新的字符串对象,变量每次是指向了新的字符串对象,而之前的字符串对象的内容确实是没有改变的。

public class Text {
    public static void main(String[] args) {
        String s2 = new String("abc");
        String s1 = "abc";
        System.out.println(s1 == s2);
        
        String s1= "abc";
       String s2 ="a"+ "b" +"c";
        System.out.println(s1 == s2); //结果为true
    }
}

 (3)应用案例

用户登录界面

 需求

系统正确的登录名和密码是:楠楠/050501,请在控制台开发一个登录界面,接收用户输入的登录名和密码,判断用户是否登录成功,登录成功后展示:‘欢迎进入系统!’,即可停止程序(注意:要求最多给用户三次登录机会)

实现

        字符串判断内容一致使用equals,不能使用 == ,因为 == 判断的是地址,会业务报错。(一般在基本数据类型的比较会使用 ==)

package StringText;

import java.util.Scanner;

public class Text {
    public static void main(String[] args) {
        //目标:完成用户登录案例
        //1.开发一个登录界面
        for (int i = 0; i < 3; i++) {

            Scanner sc = new Scanner(System.in);
            System.out.println("请您输入登录名称");
            String name = sc.next();
            System.out.println("请您输入登录密码");
            String pass = sc.next();

            if (login(name, pass)) {
                System.out.println("恭喜您登录成功!");
                break;
            } else {
                System.out.println("登录失败,请重新登录");
            }
        }
    }
        //2.开发一个登录方法,接收用户的登录名和密码,返回认证结果
        public static boolean login(String name,String pass){
            //3.准备一份系统正确的用户名和系统
            String OKname = "楠楠";
            String OKnpass = "050501";

            //4.判断是否登录成功
            if(OKname.equals(name)&&OKnpass.equals(pass)){return true;}
            else{return false;}
            //返回时可以优化一下
            //return OKname.equals(name)&&OKnpass.equals(pass);
        }
}


验证码开发 

需求

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

实现

  思路:定义一个存储好数据的数组,for循环控制生成多少位字符,每次得到一个索引,读取后交到一个存储结果的变量中,最后循环结束返回即可。

package String;

import java.util.Random;

//目的:完成随机验证码,每位可以是大写字母,小写字母,数字
public class Text {
    public static void main(String[] args) {
        System.out.println(creatCode(4));
        System.out.println(creatCode(6));
    }
    //1.设计一个方法返回指定位数的验证码
    public static String creatCode(int n){
        //2.定义两个变量,一个用来存储最终产生的随机验证码 一个用来记住可能用到的全部字符
        String code = "";
        String data = "abccdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
        Random r = new Random();
        //3.定义一个循环 产生每位随机字符
        for (int i = 0; i < n; i++) {
            int index = r.nextInt(data.length());
            code += data.charAt(index);
        }
         return code;
    }
}


   3.ArrayList

(1)介绍与入门

        集合是一种容器,用来装数据的,类似与数组。但是,数组长度是固定的,不方便使用,集合的特点是大小可变,开发中用的更多。而ArrayList是集合中最常用的一种,是泛类型,可以约束存储的数据类型。

        创建

构造器描述
ArrayList()构造一个初始容量为10的空列表
ArrayList(int initialCapacity)构造具有指定初始容量的空列表
ArrayList(Collection<? extends E>c)按照集合的迭代器返回的顺序构造一个包含指定集合元素的列表

package ArrayListTextt;

import java.util.ArrayList;

//目标:学会ArrayList的创建,并熟悉ArrayList提供的常用方法
public class Text {
    public static void main(String[] args) {
        //1.创建
        ArrayList list = new ArrayList();
        list.add("暄暄");
        list.add(666);
        list.add(99.99);
        list.add("我在时光尽头等你");
        System.out.println(list);
        //目前发现对于列表中的元素种类是没有限制的,但是对于列表元素实际是可以进行限制的
        //使用<>进行贴标签
        //从jdk 1.7后开始支持
        ArrayList<String> list1 = new ArrayList<>();
        list1.add("java");
        //list1.add(999);
    }
}

        操作:增删改查

常用方法名说明
public boolean add(E e)将指定的元素添加到集合的末尾
public void add (int index,E element)在此集合中的指定位置插入指定的元素
public E get(int index)返回指定索引处的元素
public int size()返回集合中元素的个数
public E remove(int index)删除指定索引处的元素,返回被删除的元素
public boolean remove(object o)删除指定的元素,返回删除是否成功
public E set(int index,E element)修改指定索引处的元素,返回被修改的元素
package ArrayListTextt;

import java.util.ArrayList;

//目标:学会ArrayList的创建,并熟悉ArrayList提供的常用方法
public class Text {
    public static void main(String[] args) {
        //1.创建
        //目前发现对于列表中的元素种类是没有限制的,但是对于列表元素实际是可以进行限制的
        //使用<>贴标签
        ArrayList<String> list1 = new ArrayList<String>();
        list1.add("我");
        list1.add("表达比较木讷");
        list1.add("总是小心翼翼的回答");
        list1.add("不知道到底该如何面对");

        //2.往集合的某个索引位置处添加一个数据
        list1.add(0,"我在犹豫");
        System.out.println(list1);

        //3.根据索引获取集合中的元素
        String rs = list1.get(3);
        System.out.println(rs);

        //4.返回集合大小,返回元素个数
        System.out.println(list1.size());

        //5.根据索引删除元素,返回删除元素
        System.out.println("元素【" + list1.remove(0) + "】已被删除");
        System.out.println(list1);

        //6.删除指定元素,返回是否成功(默认删除第一次出现的数据 )
        System.out.println(list1.remove("我"));
        System.out.println(list1);

        //7.修改某个索引位置的值,返回原来的值
        System.out.println(list1.set(0, "真的会是这样嘛"));
    }
}

(2)应用与综合案例

容器中找到并删除数据的技巧

需求

现在假设购物车存储了如下的商品:java入门,宁夏枸杞,黑枸杞,人字拖,特级枸杞,枸杞子,现在用户不想买枸杞了,选择了批量删除。请完成该需求。

实现

package ArrayListTextt;

import java.util.ArrayList;

//目标:掌握从集合容器中找数据并删除的技巧
public class Text2 {
    public static void main(String[] args) {
        //1.创建
        ArrayList<String> list = new ArrayList<>();
        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++) {
            String ele = list.get(i);
            //判断这个数据中包含枸杞
            if(ele.contains("枸杞")){
                //直接从集合中删掉数据
                list.remove(ele);
            }
        }
        System.out.println(list);
    }
}

修改方式; 1.每删除一个元素后,i就往左移动一步

                 2.从集合后面倒着进行遍历

package ArrayListTextt;

import java.util.ArrayList;

//目标:掌握从集合容器中找数据并删除的技巧
public class Text2 {
    public static void main(String[] args) {
        //1.创建
        ArrayList<String> list = new ArrayList<>();
        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++) {
            String ele = list.get(i);
            //判断这个数据中包含枸杞
            if(ele.contains("枸杞")){
                //直接从集合中删掉数据
                list.remove(ele);
            }
        }*/

        /*for (int i = 0; i < list.size(); i++) {
            String ele = list.get(i);
            //判断这个数据中包含枸杞
            if(ele.contains("枸杞")){
                //直接从集合中删掉数据
                list.remove(ele);i--;
            }
        }*/

        for (int i = list.size()-1; i>=0; i--) {
            String ele = list.get(i);
            //判断这个数据中包含枸杞
            if(ele.contains("枸杞")){
                //直接从集合中删掉数据
                list.remove(ele);
            }
        }

        System.out.println(list);
    }
}

 模仿外卖系统的商家系统

需求

         完成菜品的上架,以及菜品信息浏览功能。(使用ArrayList集合和面向对象编程完成)

实现

package ArrayListTextt;

public class Food {
    private String name;
    private Double price;

    public Food() {
    }

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

    private String desc;// 描述

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Double getPrice() {
        return price;
    }

    public void setPrice(Double price) {
        this.price = price;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }
}
package ArrayListTextt;

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

//菜品操作类FoodOperator 功能:上架 浏览信息
public class FoodOParetor {
    //1.定义一个集合对象存储信息
    private ArrayList<Food> foodList = new ArrayList<>();

    //2.开发功能 上架菜品
    public void addFood(){
        //3.创建一个菜品
        Food food = new Food();

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

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

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

        //5.存储到集合中
        foodList.add(food);
        System.out.println("上架成功");
    }

    public void showAllFood(){
        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 Menu(){
        while(true) {
            System.out.println("请选择功能");
            System.out.println("1.上架菜品");
            System.out.println("2.展示菜品");
            System.out.println("3.退出");

            Scanner sc = new Scanner(System.in);
            String command = sc.next();
            switch (command) {
                case "1":
                    addFood();
                    break;
                case "2":
                    showAllFood();
                    break;
                case "3":
                    System.out.println("下次再来");
                    return;
                default:
                    System.out.println("您输入的命令不正确");
                    break;
            }
        }
    }
}
package ArrayListTextt;

import java.util.ArrayList;

public class Text3 {
    public static void main(String[] args) {
        //目标;完成案例:外卖商家上菜系统
        //1.完成设计一个菜品类Food,负责创建菜品对象,封装菜品数据。
        //2.设计一个菜品操作类FoodOperator 功能:上架 浏览信息
        FoodOParetor operator = new FoodOParetor();
        operator.Menu();
    }
}

4.总结 


原文地址:https://blog.csdn.net/Hismybestlove/article/details/140839061

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!