常见API
- API (全称 Application Programming Interface:应用程序编程接口)
- 就是别人写好的一些程序,给咱们程序员直接拿去调用即可解决问题的。
1 包
1.1 什么是包?
- 包是用来分门别类的管理各种不同程序的,类似于文件夹,建包有利于程序的管理和维护。
- 建包的语法格式:
package com.itheima.javabean;
public class Student {
// ...
}
1.2 在自己程序中调用其他包下的程序的注意事项
- 要调用自己所在包下的其他类,可以直接调用。(同一个包下的类,可以直接使用)
- 要调用其他包下的类,则必须在当前类中导包, 才可以访问!导包格式:import 包名.类名;(idea自动导包)
- 要调用Java提供的类,也需要先导包才可以使用;但是Java.lang包下的类是不需要我们导包的,可以直接使用。
- 要调用多个不同包下的类,而这些类名正好一样,此时默认只能导入一个类,另一个类必须带包名访问。
1.3 总结
- 声明一个包的关键字是什么?
package com.itheima.javabean;
public class Student {
}
- 在自己类中调用其他包下的程序的注意事项
- 要调用自己所在包下的其他类,可以____直接调用_____
- 要调用其他包下的类,则必须在当前类中____导入其他包____, 才可以访问
- _____java.lang_____包下的类是不需要我们导包的,可以直接使用。
- 要调用多个不同包下的类,而这些类名正好一样,此时默认只能导入一个类,另一个类必须____全限定名(带包名)_____访问。
2 String
2.1 概述
2.1.1 String是啥?为什么学习String?
- String代表字符串对象,可以用来封装字符串数据,并提供了很多操作字符串的方法。
2.1.2 String创建对象封装字符串数据的方式
- 方式一: Java 程序中的所有字符串文字(例如“abc”)都为此类的对象。
String name = "小黑";
String schoolName = "黑马程序员";
- 方式二: 调用String类的构造器初始化字符串对象。
构造器 | 说明 |
---|
public String() | 创建一个空白字符串对象,不含有任何内容 |
public String(String original) | 根据传入的字符串内容,来创建字符串对象 |
public String(char[] chars) | 根据字符数组的内容,来创建字符串对象 |
2.1.3 总结
- Java中使用哪个类代表字符串?位于哪个包下
- String类创建对象封装字符串数据的方式有几种?
- 方式一: 直接使用双引号创建
String s = "ABC";
- 方式二: 使用构造函数创建
String s = new String("ABC")
2.2 常用方法
String提供的操作字符串数据的常用方法
方法名 | 说明 |
---|
public int length() | 获取字符串的长度返回(就是字符个数) |
public char charAt(int index) | 获取某个索引位置处的字符返回 |
public char[] toCharArray(): | 将当前字符串转换成字符数组返回 |
public boolean equals(Object anObject) | 判断当前字符串与另一个字符串的内容一样,一样返回true |
public boolean equalsIgnoreCase(String anotherString) | 判断当前字符串与另一个字符串的内容是否一样(忽略大小写) |
public String substring(int beginIndex, int endIndex) | 根据开始和结束索引进行截取,得到新的字符串(包前不包后) |
public String substring(int beginIndex) | 从传入的索引处截取,截取到末尾,得到新的字符串返回 |
public String replace(CharSequence target, CharSequence replacement) | 使用新值,将字符串中的旧值替换,得到新的字符串 |
public boolean contains(CharSequence s) | 判断字符串中是否包含了某个字符串 |
public boolean startsWith(String prefix) | 判断字符串是否以某个字符串内容开头,开头返回true,反之 |
public String[] split(String regex) | 把字符串按照某个字符串内容分割,并返回字符串数组回来 |
对于API, 不要追求一下子全记住, 记得大概, 后面用的多了,自然就记住了
2.3 注意事项
2.3.1 String使用时的注意事项1
- 只要是以“…”方式写出的字符串对象,会存储到字符串常量池,且相同内容的字符串只存储一份
- 通过new方式创建字符串对象,每new一次还会产生一个新的对象放在堆内存中
2.3.2 通过" "定义字符串
2.3.3 通过new构造器得到字符串对象
2.3.4 阅读程序并回答问题
2.3.5 String使用时的注意事项2
- String对象的内容不可改变,被称为不可变字符串对象。
2.3.6 String注意事项: String的对象是不可变字符串对象
- 注意:只要是以“…”方式写出的字符串对象,会在堆内存中的字符串常量池中存储。
结论:每次试图改变字符串对象实际上是新产生了新的字符串对象了,变量每次都是指向了新的字符串对象,之前字符串对象的内容确实是没有改变的,因此说String的对象是不可变的。
2.3.7 总结
- String有哪几点注意事项
- 只要是以“…”方式写出的字符串对象,
会存储到字符串常量池,且相同内容的字符串只存储一份 - 通过new方式创建字符串对象,
每new一次都会产生一个新的对象放在堆内存中 - String对象的内容不可改变,被称为不可变字符串对象。
2.4 应用案例
2.4.1 案例1: 完成用户登录
- 需求
- 系统正确的登录名和密码是:itheima/123456,请在控制台开发一个登录界面,接收用户输入的登录名和密码,判断用户是否登录成功,登录成功后展示:“欢迎进入系统!”,即可停止程序**
(注意:要求最多给用户三次登录机会)
**
- 步骤:
- 开发登录界面,提示用户通过键盘输入登录名和密码。
- 设计一个登录方法,对用户的登录名和密码进行正确性认证。
- 根据登录方法返回的认证结果,判断用户是否登录成功。
- 使用循环控制登录界面最多显示3次。
- 完整代码:
package com.itheima.b_string;
/**
* @author: LXHYouth
* @date: 2024/3/16 21:07
* @Version: 1.0
* @Description 控制密码输入次数
*/
import java.util.Scanner;
/*
完成用户登录
系统正确的登录名和密码是:itheima/123456,
请在控制台开发一个登录界面,接收用户输入的登录名和密码,
判断用户是否登录成功,登录成功后展示:“欢迎进入系统!”,即可停止程序(注意:要求最多给用户三次登录机会)
*/
public class Demo7 {
public static void main(String[] args) {
// 创建一个扫描器对象
Scanner scanner= new Scanner(System.in);
// 定义两个变量, 分别存储键盘输入的用户名和密码
String username,password;
System.out.println("黑马系统");
// 实现最多只能输入三次密码
for (int i = 0; i < 3; i++) {
// 存储键盘输入的用户名和密码
System.out.print("请输入用户名:");
username=scanner.next();
System.out.print("请输入密码: ");
password=scanner.next();
// 密码正确直接退出程序
if (username.equals("itheima")&& password.equals("123456")){
System.out.println("您好, 黑马系统登录成功!!!");
break;
}
// 如果索引等于2, 说明已经输入了三次密码, break跳出循环语句, 并输出密码错误
if(i==2){
System.out.println("密码输入次数太多, 请明天重试.");
break;
}
// 提示可输入密码次数
System.out.println("账号或密码输入错误, 请重新输入, 还有"+(3-i-1)+"次机会.");
}
}
}
2.4.2 案例2 使用String来开发验证码。
- 需求:
- 实现随机产生指定位数验证码,验证码的每位可能是数字、大写字母、小写字母。
- 分析:
- 设计一个方法,该方法接收一个整型参数,最终要返回对应位数的随机验证码。
- 方法内定义2个字符串变量:1个用来记住生成的验证码,1个用来记住要用到的全部字符。
- 定义for循环控制生成多少位随机字符,每次得到一个字符范围内的随机索引,根据索引提取该字符,把该字符交给code变量连接起来,循环结束后,在循环外返回code即可。
- 主程序中,调用该方法即可得到随机验证码了。
- 完整代码:
package com.itheima.b_string;
/**
* @author: LXHYouth
* @date: 2024/3/16 21:10
* @Version: 1.0
* @Description
*/
import java.util.Random;
import java.util.Scanner;
/*
验证码
实现随机产生指定位数验证码,验证码的每位可能是数字、大写字母、小写字母。
String data = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
*/
public class Demo8 {
public static void main(String[] args){
// 初始化验证码字符串
String data = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
// 创建一个扫描器对象
Scanner scanner=new Scanner(System.in);
// 创建一个变量用来存储验证码
int num=0;
String code="";
while (true){
// 提示用户需要多少为验证码
System.out.print("请输入4~8位验证码: ");
num=scanner.nextInt();
if (num<4|| num>8){
System.out.println("输入错误, 请重新输入. ");
continue;
}
break;
}
System.out.println("您需要的"+num+"位验证码为: "+verificationCode(num,data));
}
/**
* @MethodName verificationCode
* @Author LXHYouth
* @Date 2024/3/16 21:10
* @Param [num, data]
* @return java.lang.String
* @Description 随机出一个需要传入位数的随机验证码
**/
public static String verificationCode(int num ,String data){
String code="";
// 创建一个随机数对象
Random random=new Random();
// 创建一个变量存储随机出来的索引
int index=random.nextInt();
for (int i = 0; i < num; i++) {
index=random.nextInt(data.length());
code+=data.charAt(index);
}
// 返回随机验证码
return code;
}
}
3 ArrayList
3.1 快速入门
ArrayList<E>
- 是用的最多、最常见的一种集合。
总结
- 集合是什么,有什么特点?
- ArrayList是什么? 怎么使用?
- 是集合中最常用的一种,ArrayList是泛型类,可以约束存储的数据类型。
- 创建对象,调用无参数构造器初始化对象:public ArrayList();
- 调用相应的增删改查数据的方法
- ArrayList提供了哪些常用方法?
常用方法名 | 说明 |
---|
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) | 修改指定索引处的元素,返回被修改的元素 |
3.2 综合案例
3.2.1 掌握从容器中找出某些数据并成功删除的技巧
- 需求:
- 现在假如购物车中存储了如下这些商品:Java入门,宁夏枸杞,黑枸杞,人字拖,特级枸杞,枸杞子。现在用户不想买枸杞了,选择了批量删除,请完成该需求。
- 分析:
- 后台使用ArrayList集合表示购物车,存储这些商品名。
遍历集合中的每个数据,只要这个数据包含了“枸杞”则删除它。 - 输出集合看是否已经成功删除了全部枸杞数据了。
- 完整代码:
package com.itheima.c_arraylist;
/**
* @author: LXHYouth
* @date: 2024/3/16 21:31
* @Version: 1.0
* @Description
*/
import java.util.ArrayList;
/*
删除特例
现在假如购物车中存储了如下这些商品:Java入门,宁夏枸杞,黑枸杞,人字拖,特级枸杞,枸杞子。
现在用户不想买枸杞了,选择了批量删除,请完成该需求。
实现方式:
方式一:每次删除一个数据后,索引-1。
方式二:从集合后面遍历然后删除,可以避免漏掉元素。
*/
public class Demo2 {
public static void main(String[] args){
// 创建一个字符串属性的集合对象
ArrayList<String> arrayList=new ArrayList<>();
// 向集合中添加对象
arrayList.add("Java入门");
arrayList.add("宁夏枸杞");
arrayList.add("黑枸杞");
arrayList.add("人字拖");
arrayList.add("特级枸杞");
arrayList.add("枸杞子");
// 遍历集合, 并打印
for(int i=0;i<arrayList.size();i++){
System.out.println(arrayList.get(i));
}
// 进行匹配, 含有枸杞的使用 remove方法删除
System.out.println("删除所有关于枸杞的商品");
for (int i=0;i<arrayList.size();i++){
String str=arrayList.get(i);
if(str.contains("枸杞")){
arrayList.remove(i);
i--;
}
}
// 遍历集合, 并打印
for(int i=0;i<arrayList.size();i++){
System.out.println(arrayList.get(i));
}
}
}
3.2.2 ArrayList的综合案例-模仿外卖系统中的商家系统
- 需求
- 目标
- 使用所学的ArrayList集合结合面向对象编程实现以上2个需求。
- 完整代码:
package com.itheima.c_arraylist;
/**
* @author: LXHYouth
* @date: 2024/3/16 21:28
* @Version: 1.0
* @Description 上菜测试类
*/
/*
综合案例:
完成菜品的上架、以及菜品信息浏览功能。
细节说明:
1. 设计一个菜品实体类,至少包含菜品名称、菜品价格两个属性
2. 在main方法中完成: 菜品创建、保存到集合、遍历打印菜品名称和价格的功能
*/
public class Demo3 {
public static void main(String[] args) {
// 创建一个菜品类对象
Dish dish=new Dish();
// 创建一个菜品操作类对象
DishOperator dishOperator=new DishOperator();
dishOperator.upDish(new Dish("烤乳猪",98));
dishOperator.upDish(new Dish("烤全羊",300));
dishOperator.upDish(new Dish("澳洲龙虾",688));
dishOperator.upDish(new Dish("金枪鱼",1999));
dishOperator.allPrint();
}
}
package com.itheima.c_arraylist;
/**
* @className: Dish
* @author: LXHYouth
* @date: 2024/3/13 17:34
* @Version: 1.0
* @description: JavaBean 菜品类
*/
public class Dish {
// 属性
private String name;
private double price;
// get, set 方法
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 Dish() {
}
public Dish(String name, double price) {
this.name = name;
this.price = price;
}
}
package com.itheima.c_arraylist;
import java.util.ArrayList;
/**
* @className: DishOperation
* @author: LXHYouth
* @date: 2024/3/13 17:37
* @Version: 1.0
* @description: 上菜操作类
*/
public class DishOperator {
Dish dish;
public DishOperator(){
}
public DishOperator(Dish dish){
this.dish=dish;
}
ArrayList<Dish> list=new ArrayList<>();
// 创建一个方法 进行菜单上菜
public void upDish(Dish dish){
// dish = new Dish();
// dish.setName(name);
// dish.setPrice(price);
list.add(dish);
System.out.println(dish.getName()+"上菜成功!!!");
}
public void allPrint(){
for (int i=0;i<list.size();i++){
System.out.print(list.get(i).getName()+" 价格为:");
System.out.println(list.get(i).getPrice());
}
}
}
-
- 到此教程就结束了.
- 转载: 请附上本文链接.
- 如果文章对你有帮助, 可以点赞收藏一下, 以防下次需要可以快速找到.