API学习

ArrayList

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

ArrayList:是集合中最常见的一种,ArrayList是泛型类,可以约束存储的数据类型
ArrayList<Food> listFood = new ArrayList<Food>();
listFood 集合内存储的是堆内存中对象的地址
1.构造器:
public ArrayList() 创建一个空的集合对象

2.常用方法

增:
//将指定的元素添加到此集合的末尾
  public boolean add(E e)
//在此集合中的指定位置插入指定的元素
  public void add(int index,E e)

删:
//删除指定索引处的元素,返回被删除的元素
  public E remove(int index)
//删除指定的元素,返回删除是否成功
  public boolean remove(Object o)

改:
//修改指定索引处的元素,返回被修改的元素
  public E set(int index,E e)

查:
//返回索引处的元素
  public E get(int index)
//返回集合中的元素的个数
  public int size()

pakage

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

String

String类创建对象封装数据有两种方式
方式一:直接使用双引号"..."
方式二:new String类,调用构造器初始化字符串对象
1.public String() 创建一个空白字符串对象,不含有任何内容
2.public String(char[] chars) 根据字符数组的内容,来创建字符串对象
3.public String(byte[] bytes) 根据字节数组的内容,来创建字符串对象
  byte[] bytes = {97,98,99}; 97 -> a ,98 -> b ,99 -> c
  String r = new String(bytes); r -> "abc"
  System.out.println(r);

String提供的操作字符串数据的常用方法
//获取字符串的长度返回
1.public int length()

//获取某个索引位置处的字符返回
2.public char charAt(int index)

//将当前字符串转换成字符数组返回
3.public char[] toCharArray()

//判断当前字符串与另一个字符串的内容一样,一样返回true
4.public boolean equals(Object anObject)
//判断当前字符串与另一个字符串的内容一样(忽略大小写),一样返回true
5.public boolean equalsIgnoreCase(String anotherString)

//根据开始和结束索引进行截取,得到新的字符串(包前不包后)
6.public String substring(int beginIndex,int endIndex)
//从传入的索引处截取,得到新的字符串返回
7.public String substring(int beginIndex)
//使用新值,将字符串中的旧值替换,得到新的字符串
8.public String replace(charSequence target,charSequence replacement)

//判断字符串中是否包含了某个字符串
9.public boolean contains(charSequence s)
//判断字符串是否以某个字符串内容开头,开头返回true
10.public boolean startWith(String prefix)
//把字符串按照某个字符串内容分割,并返回字符串数组
11.public String[] split(String regex)

String的注意事项
1.String的对象是不可变字符串对象
  只要是以"..."方式写出的字符串对象,会在堆内存中的字符串常量池中存储。
  每次试图改变字符串对象实际上是新产生了新的字符串对象,变量每次都是指向了新的字符串对象,之前的字符串对象
  的内容确实是没有改变的,因此说String的对象是不可变的。

2.只要是"..."方式写出的字符串对象,会存储导字符串常量池,且相同内容的字符串只存储一份。 ->节约内存
  但通过new方式创建字符串对象,每new一次都会产生一个新的对象放在堆内存中。

3.字符串常量池位于堆区

4.Java存在编译优化机制,程序在编译时:"a"+"b"+"c"会直接转成"abc",  以提高程序的执行性能。

demo01

package com.item.huang.demo01;

/*
* 1.开发登录界面,提示用户通过键盘输入登录名和密码
* 2.设计一个登录方法,对用户的登录名和密码进行正确性认识
* 3.根据登录方法返回的认证结果,判断用户是否登录成功
* 4.使用循环控制登录界面最多显示3次
 */

import java.security.PublicKey;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        //4.使用循环控制登录界面最多显示3次
        for (int i = 0; i < 3 ; i++) {
            //1.开发登录界面
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入登录名:");
            sc.hasNext();
            String logicName = sc.next();
            System.out.println("请输入密码:");
            sc.hasNext();
            String password = sc.next();
            //3.根据登陆方法返回的认证结果,判断用户是否成功
            if (logic(logicName,password)){
                System.out.println("恭喜登陆成功!");
                break;
            }else {
                System.out.println("登录名或密码错误!");
            }
        }
    }
    //2.设计登录方法,判断用户的登录名和密码是否正确
    public static boolean logic(String logicName,String passWord){
        String rightLogicName = "huang";
        String rightPassWord = "123456";
        //不能使用 == 号,这样比较的是两个字符串对象的地址,会出现 bug
        return rightLogicName.equals(logicName)&&rightPassWord.equals(passWord);
    }
}

demo02

package com.item.huang.demo02;

import java.util.Random;

//随机生成指定位数的验证码
public class Test {
    public static void main(String[] args) {
        System.out.println(createCode(5));
        System.out.println(createCode(10));
    }

    //1.设计一个方法,返回指定位数的验证码
    public static String createCode(int number){
        //2.创建2个字符串,一个字符串用来存储验证码,另一个字符串包含所有随机字符
        String code = "";
        String totalChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        Random random = new Random();
        //3.随机生成指定位数的验证码
        for (int i = number; i > 0; i--) {
            code += totalChars.charAt(random.nextInt(totalChars.length()));
        }
        return code;
    }
}

arrayListDemo01

package com.item.huang.arraylistdemo01;

import java.util.ArrayList;

//需求:
//现在假如后无车中存储了如下这些商品;Java入门,宁夏枸杞,黑枸杞,人字拖,特级枸杞,枸杞子。
//现在用户不想买枸杞,选择了批量删除,请完成此需求
public class Test {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        //1.后台使用ArrayList集合表示购物车,存储这些商品名
        list.add("Java入门");
        list.add("宁夏枸杞");
        list.add("黑枸杞");
        list.add("人字拖");
        list.add("特级枸杞");
        list.add("枸杞子");
        System.out.println(list);
        System.out.println("==================================================");
        //2.遍历集合中的每个数据,只要这个数据包含了"枸杞"则删除它
        for (int i = 0; i < list.size(); i++) {
            String r = list.get(i);
            if (r.contains("枸杞")){
                list.remove(i);
                //删除一个集合元素,下标往前移一位
                i--;
            }
        }
//        //方法二
//        //从后往前遍历集合中的每个数据,只要这个数据包含了"枸杞"则删除它
//        //包含 i--
//        for (int i = list.size()-1; i >= 0 ; i--) {
//            String r1 = list.get(i);
//            if (r1.contains("枸杞")){
//                list.remove(i);
//            }
//        }
        //3.输出集合看是否已经成功删除了全部枸杞数据
        System.out.println(list);
    }
}

arrayListDemo02

Food

package com.item.huang.arraylistdemo02;

//1.设计一个菜品类 Food ,负责创建菜品对象 , 封装菜品数据
public class Food {
    private String name;
    private double price;
    private String info;

    public Food() {
    }

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

    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 getInfo() {
        return info;
    }

    public void setInfo(String info) {
        this.info = info;
    }
}

FoodOperator

package com.item.huang.arraylistdemo02;

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

//2.设计一个菜品操作类 , 负责完成对菜品的业务实现: 上架 , 浏览信息
public class FoodOperator {
    //创建菜单集合,存放菜品
    private ArrayList<Food> listFood = new ArrayList<Food>();

    //3.上架菜品
    public void order(){
        Scanner sc = new Scanner(System.in);
        Food food = new Food();
        System.out.println("请输入菜品名称:");
        sc.hasNext();
        food.setName(sc.next());
        System.out.println("请输入菜品价格:");
        sc.hasNextDouble();
        food.setPrice(sc.nextDouble());
        System.out.println("请输入菜品其他信息:");
        sc.hasNext();
        food.setInfo(sc.next());
        System.out.println("------------------------------");
        listFood.add(food);
    }
    //4.浏览菜品信息
    public void look(){
        if(listFood.size()==0){
            System.out.println("没有上架任何菜品!!!");
            System.out.println("--------------------------------");
        }else {
            for (int i = 0; i < listFood.size(); i++) {
                System.out.println(listFood.get(i).getName());
                System.out.println(listFood.get(i).getPrice());
                System.out.println(listFood.get(i).getInfo());
                System.out.println("---------------------------------");
            }
        }
    }
    //5.启动菜品业务
    public void start(){
        Scanner sc = new Scanner(System.in);

        while (true) {
            System.out.println("你已进入菜单!!!");
            System.out.println("输入 1 上架你的菜品");
            System.out.println("输入 2 浏览你的菜品");
            System.out.println("输入 3 退出菜单");
            System.out.println("----------------------------------");
            sc.hasNext();
            String command = sc.next();
            switch (command){
                case "1":
                    order();
                    break;
                case "2":
                    look();
                    break;
                case "3":
                    return;
                default:
                    System.out.println("输入的命令有问题!!!");
            }
        }

    }
}

Test

package com.item.huang.arraylistdemo02;

public class Test {
    public static void main(String[] args) {
        FoodOperator foodOperator = new FoodOperator();
        foodOperator.start();
    }
}

posted @ 2024-03-27 19:13  qing集  阅读(2)  评论(0编辑  收藏  举报