一、API
API的全称是应用程序编程接口,是Java提前为我们写好的一些程序,方便程序员调用
二、包
1、包是用来分门别类管理各种程序的------类似于文件夹,有利于对程序的管理和维护
2、建包的语法格式:
package demo;
public class Student{}
3、在自己程序中调用其他包下的程序注意事项
①如果当前程序中,要调用自己所在包下的其他程序,可以直接调用。(同一个包下的类,互相可以直接调用)
②如果当前程序中,要调用其他包下的程序,则必须在当前程序中导包,才可以访问。导包格式:import 包名.类名;
③如果当前程序中,要调用Java提供的程序,也需要先导包才可以使用,但是Java.lang包下的程序是不需要我们导包的,可以直接使用。
④如果当前程序中,要调用多个不同包下的程序,而这些程序名正好一样,此时默认只能导入一个程序,另一个程序必须带包名访问。
三、String
1、String类概述
java.lang.String类代表字符串,可以用来创建对象封装字符串数据,并对其进行处理
2、String类创建对象的2种方式
①第一种方式
直接使用英文双引号把我们的字符串内容包在中间就可以了
②第二种方式:使用构造器
1)public String() 创建一个空白字符串对象,不含有任何内容
2)public String(String original) 根据传入的字符串内容,来创建字符串对象
3)public Strinf(char[] chs) 根据字符数组的内容,来创建字符串内容
4)public String(byte[] chs) 根据字符数组的内容,来创建字符串对象
3、String类常用方法---字符串内容比较
①为什么需要这个知识点呢
1)因为String类是一个引用数据类型,变量中存储的是地址值
2)如果我们使用==进行比较,比较的是地址值,但是很多时候我们需要比较字符串里面的内容是否一致,不关心地址值
②怎么比较?
推荐使用String类提供的"equals"比较:只关心内容一样即可
1)public boolean equals(Object anObject) 将此字符串与指定对象进行比较,只关心字符内容是否一样
2)public boolean equalsIgnoreCase(String anotherString) 将此字符串与指定对象进行比较,忽略大小写比较字符串,只关心内容是否一致
③什么时候使用==比较?
基本数据类型使用==比较是否相等
4、String类的常用方法---遍历、替换、截取、分割操作等
①public int length() 获取字符串的长度返回(就是字符串的个数)
②public char charAt(int index) 获取某个索引位置处的字符返回
③public char[] toCharArray() 将当前字符串转换成字符数组返回
④public String substring(int beginIndex, int endIndex) 根据开始和结束索引进行截取,得到新的字符串(索引的值包括前面不包括后面)
⑤public String substring(int beginIndex) 从传入的索引处截取,截取到末尾,得到新的字符串返回
⑥public String replace(CharSequence targe, CharSequence replacement) 使用新值,将字符串中的旧值替换,得到新的字符串
⑦public boolean contains(CharSequence s) 判断字符串中是否包含了某个字符
⑧public boolean startswith(String prefix) 判断字符串是否以某个字符串内容开头,是的话返回true,不是返回false
⑨public String[] split(String regex) 把字符串按照某个字符串内容分割,并返回字符串数组回来
⑩public String trim() 删除字符串首尾空格,返回一个新字符串
11.public String toUpperCase() 将String所有英文字母字符转换为大写
5、String类对象在内存中的存储原理
①以""方式给出的字符串对象,在字符串常量池中,而且相同内容只会在其中存储一份
②通过构造器new对象,每new一次都会产生一个新对象,放在堆内存中
③String s1 = "abc";
String s2 = "abc";
System.out.println(s1==s2); // true
char[] chs = {'a', 'b', 'c'};
String s3 = new String(chs);
String s4 = new String(chs);
System.out.println(s3==s4); // false
6、字符串的不可变性
①String类的对象一旦被创建出来,就不可更改
②经过运算得到的字符串对象,在堆内存中(创建出来的字符串内容会存在堆内存的字符常量池中,运算得到的字符串对象会暂时存在字符串常量池外,堆内存内)
③String是不可变字符串的原因
1)String变量每次的修改其实都是产生并指向了新的字符串对象
2)原来的字符串对象都是没有改变的,所有称不可变字符串
7、String类常见示例类型
String s1 = "abc";
String s2 = "ab";
String s3 = s2 + "c";
System.out.println(s1==s3); // false
String s4 = "abc";
String s5 = "a" + "b" + "c";
System.out.println(s4==s5); // true
Java存在编译优化机制,程序在编译时:"a" + "b" + "c"会直接转成"abc",以提高程序的执行性能
四、ArrayList
1、集合概述
①集合是什么
集合是与数组类似,也是一种容器,用于装数据的
②集合的特点
1)集合的大小不固定,启动后可以动态变化,类型也可以选择不固定
2)集合非常适合做元素个数不确定,且要进行增删操作的业务场景
3)集合还提供了许多丰富好用的功能,相对来说数组的功能很单一
2、ArrayList集合
①怎么创建一个ArrayList对象
ArrayList list = new ArrayList();
②ArrayList集合的添加元素的方法
1)public boolean add(E e) 将指定的元素追加到此集合的末尾
2)public void add(int index,E element) 在此集合的指定位置插入指定的元素
3、ArrayList对于泛型的支持
①ArrayList<E>:其实就是一个泛型类,作用是可以在编译阶段约束集合对象只能操作某种数据类型
②所有集合类都是泛型类
③ArrayList<String> list = new ArrayList<>();
④ArrayList<Integer> list = new ArrayList<>();
⑤ArrayList<Character> list = new ArrayList<>();
⑥泛型只能支持引用数据类型,不支持基本类型数据
4、ArrayList常用方法、遍历
①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) 修改指定索引处的元素,返回被修改的元素
5、ArrayLis集合---存储自定义类型
①自定义类型:自己定义的类
②ArrayList<Student> list = new ArrayList<>();
③ArrayList<Car> list = new ArrayList<>();
6、元素查询示例
①需要把整个list对象和要搜索的字段传入方法中,在方法中遍历list集合,取到集合对象相应的字段值和我们传进来的要比较的值进行一个比较,如果相等,返回当前对象,如果list中所有元素都比较完了,没有相等的,返回null
②public static Student getStudentById(ArrayList<Student> students, int id){
for(int i = 0; i < students.size(); i++){
Student student = students.get(i);
if(students.getId() == id){
return student;
}
}
}