第四章常用apI(String类)
一.API
写java代码的帮助文档
- 在java.lang包下的类,在使用的时候,不需要导包
- 其他包下的类,在使用的时候,都先需要写一个导包声明(先导包);
导包声明: import java.包名.类名;(写在代码最上方(类的外部));
二.String类
1.String类的特点;
- java中所用的字符串自变量(如"abc")都作为此类的实例来实现的;
- 程序中只要是双引号括起来的字符串,都可以作为String类的对象(对象可以调用方法)
- 字符串是常量,他们的值在创建之后不能更改
- 虽然String字符串的值不能更改,但是它们可以共享
如:String s1 = “abc”, s2 =“abc”; //其实s1和s2指向的是一个字符串常量池中的同一个字符串
2.String字符串的比较
1.通过比较字符串(引用数据类型)是否相等,来区分直接复制与构造方法赋值的区别
- 基本数据类型, 比较是否相等, 使用
==
- 引用数据类型, 比较是否相等
==
: 比较的是地址值- equals() : 比较字符串中的内容是否相等
String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2); // 比较的是地址值,也就是哈希值 //返回true
System.out.pring(s1.equals(s2));//比较的是内容
String s3 = "abc";
String s4 = new String("abc");
System.out.println(s3 == s4);//返回false
System.out.pring(s3.equals(s4));//比较的是内容//返回true
String s5 = new String("abc");
String s6 = new String("abc");
System.out.println(s5 == s6);//返回false
System.out.pring(s5.equals(s6));//比较的是内容//返回true
总结
- 通过直接赋值的方式创建字符串, 指向字符串常量池中的地址
- 通过构造方法的方式创建字符串, 指向的是堆内存中的地址
2.equals方法
引用数据类型通过equals方法来比较内容是否相同;
equals方法
public boolean equals(Object anObject) : 比较两个字符串中的内容是否相同
equalsIgnoreCase
public boolean equalsIgnoreCase(String anotherString)
: 比较两个字符串中的内容是否相同(不考虑大小写)
总结
- 比较字符串内容是否相同的时候, 千万不要使用
==
, 一定要使用equals()
方法
3.String类的常用方法
(1)length
public int length() : 返回此字符串的长度.
(2) concat
public String concat(String str) : 字符串的拼接, 返回拼接之后的结果
concat: 只能拼接字符串(String)类型
`+`: 可以拼接任意类型(建议使用)
(3) charAt
public char charAt(int index) : 返回指定索引处的字符
String字符串是有索引的, [第一个字符的索引为0 , 第二个字符的索引为1 ... ]
(4) indexOf
public int indexOf(String str) :
返回指定子字符串在此字符串中第一次出现处的索引, 如果没有出现就返回-1
// s1.indexOf(s2)
// 指定子字符串 -> s2
// 此字符串 -> s1
// 在s1中, 找s2第一次出现的索引
(5) substring
public String substring(int beginIndex) // beginIndex: 开始索引
截取字符串的一部分, 从beginIndex开始一直到结尾
public String substring(int beginIndex,// beginIndex: 开始索引
int endIndex) // endIndex : 结束索引
截取字符串中的一部分, 从beginIndex(包含)开始, 截取到endIndex(不包含)结束,包头不包尾
键盘录入方法的扩展
键盘录入字符串
public String nextLine() : 获取键盘录入的一行内容, 以字符串的形式返回
4. StringBuilder 和StringBuffer
StringBuffer:
用法同StringBuilder , 此类设计用作简易替换为StringBuilder在正在使用由多线程字符串缓冲区的地方
StringBuilder:
-
字符串缓冲区;
-
支持可变的字符串;
-
String: 是一个不可变的字符序列
-
StringBuilder: 是一个可变的字符序列
String字符串的拼接经历如下的几个步骤
- 创建StringBuilder
- 通过append()方法完成拼接
- 通过toString()方法转换成字符串
stringBuilder:就是字符串缓冲区
用于存储数据的荣区
特点:
1.长度是可变的
2.可以存储不同类型数据
3.最终要转成字符串使用
4.可以对字符串进行修改
1. StringBuilder的构造方法
- 无参构造
public StringBuilder() : 创建了一个不带任何字符的字符串缓冲区, ""
- 有参构造
public StringBuilder(String str) : 创建了一个字符串缓冲区,
字符串缓冲区中的内容和参数中的字符串是一样的.
2. StringBuilder的常用方法
(1) append
public StringBuilder append(String str) :
将参数中的内容, 进行拼接, 返回StringBuilder本身
拼接: 就是在本身的基础上进行拼接
(2) reverse
public StringBuilder reverse() :
反转该字符串缓冲区, 返回本身(反转之后)
(3) toString
public String toString() :
将字符串缓冲区StringBuilder中的内容, 转换成字符串并返回
String转换成StringBuilder
// StringBuilder sb = "abc"; // StringBuilder不允许这种操作
// public StringBuilder(String s)
String s = "Hello";
StringBuilder sb = new StringBuilder(s);
ArrayList集合
ArrayList集合的概述【理解】
ArrayList是Java给我们提供的一个类, 类中一定会有方法.
1. 集合和数组的特点
数组 | 是一个容器 | 可以存放一种数据类型 | 存放的元素既可以是基本数据类型 又可以是引用数据类型 | 长度固定 |
---|---|---|---|---|
集合 | 是一个容器 | 可以存放多种数据类型 (但是使用的时候还是存放一种) | 只能存放引用数据类型 | 长度可变 |
2. ArrayList集合的使用
查看API
- 在java.util 包下, 所以使用前需要先导包
ArrayList<E>
: E代表一种引用数据类型, 叫做泛型; 作用是用来限定集合中元素的数据类型ArrayList<String>
, 那么这个集合中只能存放String类型
- ArrayList是由大小可变数组的实现
- 创建ArrayList集合的时候, 底层会创建一个长度为0的数组
- 当我们存放元素的时候, 重新创建一个长度为10的数组
- 如果添加的元素超过10, 再创建一个长度1.5倍的新数组, 将原数组中的内容拷贝到新数组中, 再添加新元素
构造方法
ArrayList() : 创建ArrayList集合
// 类名 对象名 = new 类名();
// 创建了一个用来存放String类型元素的ArrayList集合
ArrayList<String> list = new ArrayList<String>(); // 前后的泛型必须一致
// jdk1.7 出了一个特性(菱形泛型)
ArrayList<String> list2 = new ArrayList<>(); // 后面的泛型可以不写, 只写<> , 默认和前面一样
3. ArrayList集合的常用方法
增加
// E, 就是创建集合的时候泛型中定义的引用数据类型
public boolean add(E e) : 将指定元素添加到集合中(末尾), 并返回是否添加成功
public void add(int index,E element)// (索引 ,元素)
将指定元素添加到指定索引位置.(插入)
删除
public E remove(int index) : 删除指定索引位置的元素, 返回被删除的元素
public boolean remove(Object o) : 删除指定元素, 返回是否删除成功
修改
public E set(int index,E element)// (索引 ,元素)
修改指定索引位置的元素, 返回被修改的元素
查询
public E get(int index) : 获取指定索引位置的元素
public int size() : 返回集合的长度(集合中元素的个数)
int indexOf(Object o)
返回此列表中指定元素的第一次出现的索引,如果此列表不包含元素,则返回-1。
数组的长度: arr.length
字符串的长度: s.length()
集合的长度: list.size()