20天Java-常用API

一、包

包是用来分门别类的管理各种不同程序的,类似于文件夹,建包有利于程序的管理和维护。
建包的语法格式:
package com.itheima.javabean;
public class Student {
}

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

二、String

1.String创建对象封装字符串数据的方式
方式一: java 程序中的所有字符串文字(例如“abc”)都为此类的对象
String name ="小黑";
String schoolName ="黑马程序员"

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

2.String方法

3.string使用时的注意事项
第一点
string对象的内容不可改变,被称为不可变字符串对象。
第二点
只要是以“...”方式写出的字符串对象,会存储到字符串常量池,且相同内容的字符串只存储一份;
但通过new方式创建字符串对象,每new一次都会产生一个新的对象放在堆内存中。

4.案例

完成用户登录
需求
系统正确的登录名和密码是:itheima/123456,请在控制台开发一个登录界面,接收用户输入的登录名和密码,判断用户是否登录成功,登录成功后展示:“欢迎进入系统!”即可停止程序(注意: 要求最多给用户三次登录机会)
步骤:
1)、开发登录界面,提示用户通过键盘输入登录名和密码
2)、设计一个登录方法,对用户的登录名和密码进行正确性认证
3)、根据登录方法返回的认证结果,判断用户是否登录成功
4.1、字符串的比较使用==比较好吗? 为什么?什么时候使用==?
不好,对于字符串对象的比较,==比较的是地址,容易出业务bug
基本数据类型的变量或者值应该使用==比较
4.2、开发中比较字符串推荐使用什么方式比较?
使用String提供的equals方法,它只关心字符串内容一样就返回true。

使用String来开发验证码
需求:
实现随机产生验证码,验证码的每位可能是数字、大写字母、小写字母。
分析:
1)设计一个方法,该方法接收一个整型参数,最终要返回对应位数的随机验证码。
2)方法内定义2个字符串变量:1个用来记住生成的验证码,1个用来记住要用到的全部字符。
String code = ";
String data ="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
3)定义for循环控制生成多少位随机字符,每次得到一个字符范围内的随机索引,根据索引提取该字符,把该字符交给code变量连接起来,循环结束后,在循环外返回code即可。

三、ArrayList(集合)

public boolean remove(Object 0)默认删除的是第一次出现的元素,后面相同的不删除。

2.1ArrayList应用案例

需求1:
●现在假如购物 车中存储了如下这些商品: Java入门,宁夏枸杞,黑枸杞,人字拖,特级枸杞,枸杞子。现在用户不想买枸杞了,选择了批量删除,请完
分析:
①后台使用ArrayList集合表示购物车,存储这些商品名。
②遍历集合中的每个数据,只要这个数据包含了“枸杞”则删除它。
③输出集合看是否已经成功删除了全部枸杞数据了。

package string;

import java.util.ArrayList;

public class ArrayListDemo {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list. add("Java入门");
        list . add("宁夏枸杞");
        list.add("黑枸杞");
        list . add("人字拖");
        list.add ("特级枸杞");
        list . add("枸杞子");
        System. out . println(list);

//        for (int i = 0; i < list.size(); i++) {
//            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);
    }

}

从集合中遍历元素,并筛选出元素删除它,应该如何操作才能不出bug?
●方式一:每次删除一个数据后,索引-1。
●方式二:从集合后面遍历然后删除,可以避免漏掉元素。

需求2
●完成菜品的上架、以及菜品信息浏览功能。
目标
●使用所学的ArrayList集合结 合面向对象编程实现以上2个需求。

1.设计一个菜品类:经典三步走,变量-getset-两个构造器

package string;

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

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

2.构建一个菜品操作类:添加菜品-展示菜品-循环添加菜品操作

package string;

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

public class Foodoperator {
    ArrayList<Food> foodlist = new ArrayList<>();
    public void addFood(){
        Food f = new Food();
        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);

        foodlist.add(f);
        System.out.println("上架成功");
    }

    public void showAllFoods(){
        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 "了":
                    System.out.println("下次再来哦! ");
                    return; //干掉方法!
                default:
                    System.out.println("您输入的命令不存在! ");
            }
        }
    }
}

3.调用方法:调用循环添加菜品的方法

package string;

import java.util.ArrayList;

public class ArrayListDemo2 {
    public static void main(String[] args) {
        Foodoperator op = new Foodoperator();
        op.start();
    }
}

四、总结

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值