目录
一.API概述
API(全称是Application Program Interface 应用程序接口),说人话就是:别人写好的一些程序,给咱们程序员直接拿去调用。
-
比如String类,表示字符串,提供的方法全都是对字符串操作的。
-
比如ArrayList类,表示一个容器,提供的方法都是对容器中的数据进行操作的。
像这样的类还有很多,Java把这些类是干什么用的、类中的每一个方法是什么含义,编写成了文档,我们把这个文档称之为API文档。
二.String类
1.什么是String
String代表字符串对象, 可以用来封装字符串数据, 并提供了很多操作字符串的方法
字符串的应用场景是非常多的
2.String创建对象
在API查看String类的对象是如何创建的.
意思就是:所有Java的字符串字面值,都是字符串对象。
- 所以创建String对象的第一种方式:
String s1 = "abc"; //这里abc就是一个字符串对象, 用s1变量接收.
String s2 = "白龙马";
-
创建String对象的第二种方式,就是利用String类的构造方法创建String类的对象。
执行构造方法需要用到new关键字。new String(参数)
就是在执行String类的构造方法。
我们演示两种常用:
// 1、直接双引号得到字符串对象,封装字符串数据
String name = "白龙马";
System.out.println(name);// 2、new String创建字符串对象,并调用构造器初始化字符串
String s1 = new String();
System.out.println(s1);String s2 = new String("星空");
System.out.println(s2);
3. String类的常用方法
网上列出来的String类的方法有:
下面我们就把String类中的方法,按照方法的调用规则,先快速过一遍。(注意:第一次调用API方法,都是看着API方法来调用用的,不是背的)
public class Test1 {
public static void main(String[] args) {
//目标:快速熟悉String提供的处理字符串的常用方法。
String s = "白龙马";
// 1、获取字符串的长度
System.out.println(s.length());
// 2、提取字符串中某个索引位置处的字符
char c = s.charAt(1);
System.out.println(c);
// 字符串的遍历
for (int i = 0; i < s.length(); i++) {
// i = 0 1 2 3 4 5
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 = "123abc";
String c2 = "123abcd";
System.out.println(c1.equals(c2)); // false
System.out.println(c1.equalsIgnoreCase(c2)); // true
// 6、截取字符串内容 (包前不包后的)
String s3 = "明天会更好吗?";
String str1 = s3.substring(0, 3);
System.out.println(str1);
// 7、从当前索引位置一直截取到字符串的末尾
String str2 = s3.substring(2);
System.out.println(str2);
// 8、把字符串中的某个内容替换成新内容,并返回新的字符串对象给我们
String info = "明天要早起,真的好烦呀!!!";
String str3 = info.replace("好烦", "好开心");
System.out.println(str3);
// 9、判断字符串中是否包含某个关键字
String info2 = "我爱说唱,可是他好像不爱我!!!";
System.out.println(info2.contains("说唱")); //true
// 10、判断字符串是否以某个字符串开头。
String str4 = "张子豪是个很厉害的说唱歌手";
System.out.println(str4.startsWith("张")); //true
System.out.println(str4.startsWith("张子豪")); //true
// 11、把字符串按照某个指定内容分割成多个字符串,放到一个字符串数组中返回给我们
String str5 = "珍珠,花,太阳,雨,你";
String[] names = str5.split(",");
for (int i = 0; i < names.length; i++) {
System.out.println(names[i]);
}
}
}
4. String的注意事项
- String对象的内容不可改变,被称为不可变字符串对象.
- 只要以"..."方式写出的字符串对象,会存储到字符串常量池,并且相同内容的字符串只会存储一份.
- 但通过new方式创建 字符串对象, 每new一次都会产生一个新的对象,放在堆内存中.
第一点:
有人会提出疑问字符串不是改变了吗?为什么说是不可变的;
其实底层原理是 : 在这个过程中在堆内存中创建了两块空间 , 第一块空间存"白" , 第二块空间存"白龙马" , 只是把空间地址赋给了name , 原来的"白"没有变量记录了. 所以说是不可变的.
第二点 :
第三点 :
三.ArrayList类
1. ArrayList快速入门
ArrayList表示一种集合,它是一个容器,用来装数据的,类似于数组 .
数组一旦创建大小不变,比如创建一个长度为4的数组,就只能存储4个元素,想要存储第5个元素就不行。而集合是大小可变的,想要存储几个元素就存储几个元素,在实际工作中用得更多。
2. ArrayList常用方法
-
第一步:创建ArrayList容器对象。一般使用空参数构造方法,如下图所示:
-
第二步:调用ArrayList类的常用方法对容器中的数据进行操作。常用方法如下:
下面我们就把ArrayList集合中的方法,按照方法的调用规则,先快速过一遍。(注意:第一次调用API方法,都是看着API方法来调用用的,不是背的)
/**
目标:掌握如何创建ArrayList集合的对象,并熟悉ArrayList提供的常用方法。
*/
public class Test1 {
public static void main(String[] args) {
// 1、创建一个ArrayList的集合对象
//<String>这个东西是泛型,用来确定集合类型,以后再说
ArrayList<String> list = new ArrayList<>();
list.add("白龙马");
list.add("白龙马");
list.add("张子豪");
System.out.println(list);
// 2、往集合中的某个索引位置处添加一个数据
list.add(0, "法老");
System.out.println(list);
// 3、根据索引获取集合中某个索引位置处的值
String s = list.get(1);
System.out.println(s);
// 4、获取集合的大小(返回集合中存储的元素个数)
System.out.println(list.size());
// 5、根据索引删除集合中的某个元素值,会返回被删除的元素值给我们
System.out.println(list.remove(1));
System.out.println(list);
// 6、直接删除某个元素值,删除成功会返回true,反之
System.out.println(list.remove("张子豪"));
System.out.println(list);
list.add(1, "星空");
System.out.println(list);
// 默认删除的是第一次出现的这个白龙马的数据的
System.out.println(list.remove("白龙马"));
System.out.println(list);
// 7、修改某个索引位置处的数据,修改后会返回原来的值给我们
System.out.println(list.set(1, "美女"));
System.out.println(list);
}
}
3. ArrayList应用案例
分析:
1.用户可以选购多个商品,可以创建一个ArrayList集合,存储这些商品
2.按照需求,如果用户选择了"枸杞"批量删除,应该删除包含"枸杞"的所有元素
1)这时应该遍历集合中每一个String类型的元素
2)使用String类的方法contains判断字符串中是否包含"枸杞"
3)包含就把元素删除
3.输出集合中的元素,看是否包含"枸杞"的元素全部删除
代码:
public class ArrayListTest2 {
public static void main(String[] args) {
// 1、创建一个ArrayList集合对象
ArrayList<String> list = new ArrayList<>();
list.add("枸杞");
list.add("说唱入门");
list.add("宁夏枸杞");
list.add("黑枸杞");
list.add("人字拖");
list.add("特级枸杞");
list.add("枸杞子");
System.out.println(list);
//运行结果如下: [枸杞, 说唱入门, 宁夏枸杞, 黑枸杞, 人字拖, 特级枸杞, 枸杞子]
// 2、开始完成需求:从集合中找出包含枸杞的数据并删除它
for (int i = 0; i < list.size(); i++) {
// i = 0 1 2 3 4 5
// 取出当前遍历到的数据
String ele = list.get(i);
// 判断这个数据中包含枸杞
if(ele.contains("枸杞")){
// 直接从集合中删除该数据
list.remove(ele);
i--; //关键点,删除元素之后,后面的元素会往前顺延,所以要i--再次判断这个索引位置
}
}
System.out.println(list);
//删除后结果如下:[说唱入门, 人字拖]
}
}