常用API(String、ArrayList部分)
API
API是什么
API ( Application Programming Interface,应用程序编程接口)就是别人写好的一些程序,给程序员直接拿去调用即可解决问题。
API文档是什么
Java提供的API使用说明书。
包
包是什么
- 包是用来分门别类的管理各种不同程序的,类似于文件夹,建包有利于程序的管理和维护。
建包的语法格式
package 包名;
在自己程序中调用其他包下的程序的注意事项
- 如果当前程序中,要调用自己所在包下的其他程序,可以直接调用。(同一个包下的类,互相可以直接调用)
- 如果当前程序中,要调用其他包下的程序,则必须先在当前程序中导包才可以访问。导包格式:import 包名.类名;
- 如果当前程序中,要调用Java提供的程序,也需要先导包才可以使用。但是Java.lang包下的程序不需要我们导包,可以直接使用。
- 如果当前程序中,要调用多个不同包下的程序,而这些程序名正好一样,此时默认只能导入一个程序,另一个程序必须带包名访问。
String
String是什么
String代表字符串,可以用来创建对象封装字符串数据,并对其进行处理。
String创建对象的方式
方式一:Java 程序中的所有字符串文字(例如“abc”)都为此类的对象。
String 变量名 = "字符串";
方式二:调用String类的构造器初始化字符串对象。
构造器 | 说明 |
---|---|
public String() | 创建一个空白字符串对象,不含有任何内容 |
public String(String original) | 根据传入的字符串内容,来创建字符串对象 |
public String(char[] chars) | 根据字符数组的内容,来创建字符串对象 |
public String(byte[] bytes) | 根据字节数组的内容,来创建字符串对象 |
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) | 把字符串按照某个字符串内容分割,并返回字符串数组回来 |
- ==在8种基本数据类型的比较中的作用是比较对应变量的数值是否相等。
- ==在对象类型的比较中的作用是比较对应对象在堆内存中的地址是否相等。
String在使用时的注意事项
注意事项一
-
String对象的内容不可改变,被称为不可变字符串对象。
-
不可变数据类型:值改变,地址不变的数据类型。
-
每次试图改变字符串对象实际上是新产生了新的字符串对象了,变量每次都是指向了新的字符串对象,之前字符串对象的内容确实是没有改变的,因此说String的对象是不可变的。
注意事项二
- 以“...”方式写出的字符串对象,会存储到字符串常量池,且相同内容的字符串只存储一份。
- 通过new方式创建字符串对象,每new一次都会产生一个新的对象放在堆内存中。
注意事项三
Java存在编译优化机制,程序在编译时: “a” + “b” + “c” 会直接转成 “abc”,以提高程序的执行性能。
String s1 = "abc";
String s2 = "a" + "b" + "c";
System.out.println(s1 == s2);
输出为:
true
字符串常量池
- 以“...”方式写出的字符串对象,会存储到字符串常量池,且相同内容的字符串只存储一份,之后所有变量值为字符串常量池里有的变量都会指向该常量池里的变量。
- Java设计字符串常量池的目的是节约内存。
ArrayList
集合
集合是什么
集合是一种容器,用来装数据的,类似于数组,但是集合的大小可以动态变化。
集合有哪些种类
List、Map、Set、LinkedList、ArrayList、HashMap、TreeMap、HashSet、TreeSet、LinkedHashMap、LinkedHashSet等。
集合的特点
大小可变;类型可以不固定;功能比数组更强大;适合于元素个数不确定,同时存在增删改查的业务场景。
ArrayList是什么
是用的最多、最常见的一种集合,其元素存在索引且可以重复。
如何创建ArrayList对象
public ArrayList(); //ArrayList的构造器
ArrayList 变量名 = new ArrayList(); //创建ArrayList对象
泛型
-
集合都是支持泛型的,即可以存储任意类型的变量,并且可以指定实例化对象只能存储某一种类型的变量。
-
集合和泛型都不支持基本数据类型,只支持引用数据类型。
-
定义集合都应该采用泛型。
-
ArrayList是泛型类,可以约束存储的数据类型。格式为:
ArrayList<类名> 变量名 = new ArrayList<类名>(); //完整格式
ArrayList<类名> 变量名 = new ArrayList<>(); //从JDK1.7开始有的简化格式
- 不约束数据类型的格式为:
ArrayList 变量名 = new ArrayList();
ArrayList<Object> 变量名 = new ArrayList<>(); //推荐
- ArrayList可以存储自定义类型的对象:
ArrayList<自定义类型> 变量名 = new 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) | 修改指定索引处的元素,返回被修改的元素 |
从集合中遍历元素,并筛选出元素删除它,应该如何操作才能不出bug
- 方式一:每次删除一个数据后,索引-1。
- 方式二:从集合末尾开始遍历然后删除。