常见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)!