Java集合和字符串
问题引用
为什么要使用集合?
集合和数组的对比:
长度:数组长度是固定的;集合的长度是可变的,如果删除一个长度自动减一,增加一个元素长度自动加一。
存储类型:数组可以存基本数据类型也可以存引用数据类型;集合只能存引用数据类型,如果需要存入基本数据类型就要把他们变成对应的包装类。
JAVA规定了很多种不同的集合,每种集合都有各自的特点,现在我们来学习最常见的也是最常用的ArrayList集合。
ArrayList集合
举例:
因为ArrayList这个类在底层做了一些处理,所以输出的是[],而不是地址值。
ArrayList成员方法
增:boolean add(E e) 添加元素,返回值表示是否添加成功
删:boolean remove(E e) 删除指定元素,返回值表示是否删除成功
E remove(int index) 删除指定索引的元素,返回被删除的元素
改:E set(int index,E e) 修改指定索引的元素,返回原来的元素
查:E get(int index) 获取指定索引的元素
int size() 集合的长度
代码举例:
集合的遍历:
for(int i = 0;i < list.size();i++){System.out.println(list.get(i)); }注意:这个输出的时候没有[ , ,...,]这样的格式,只输出这个索引对应的元素。(没看懂的话,可以再看一遍上边的代码)
基本数据类型所对应的包装类:
byte------------------>Byte
short------------------>Short
char------------------>Character
int--------------------->Integer
long------------------->Long
float-------------------->Float
double------------------>Double
boolean----------------->Boolean
如果要添加整数进行遍历,就把ArrayList<包装类/引用数据类型> 变量名 = new ArrayList()中的<>里面的内容改成如上左边的就可以。
添加自定义对象,用集合来遍历:
定义对象Firend这里我就不演示了,上一篇文章中讲了。
如果在一个方法中要返回多个类型:(如图)
字符串
通过构造方法创建一个新的对象来接收,打印时打印的是内容而不是地址值。
String
java.lang.String代表字符串(java.lang是java的核心包,所以不需要导入这个包),Java程序中的所有字符串文字都为此类的对象。
字符串的内容不能发生改变,它的对象在创建后不能被更改。(两个字符串拼接会产生一个新的字符串,对原来的字符串没有任何影响)
创建String对象的方式:
1、直接赋值(串池内开辟空间,若两个字符串一样则复用):例:String name = “abc”;
2、构造方法(堆内new一个新空间):1)public String()创建空白字符串,不含任何内容。(空格也不含)
2)public String(String original)根据传入的字符串创建字符串对象。
3)public String(char[] chs)根据字符数组,创建字符串对象。
4)public String(byte[] chs)根据字节数组(在ASCLL表里查数字对应字母),创建字符串对象。
一般常用第一种。
字符串的比较:
==号比的是什么?
基本数据类型比较的是具体的数据值;引用数据类型比较的是地址值。
boolean equals(要比较的字符串)完全一样结果为true。
boolean equalsgnoreCase(要比较的字符串)忽略大小写的比较。
遍历字符串:
public char charAt(int index):根据索引返回字符。
public int length():返回此字符串的长度。
数组长度:数组名.length。
字符串长度:字符串对象.length()。
例题:
补充方法:
String substring(int beginIndex,int endIndex)截取(包左不包右,截取后对原来字符串没有任何影响)
String substring(int beginIndex)截取到末尾。
String replace(旧值,新值):替换(截取后对原来字符串没有任何影响)
StringBuilder
StringBuilder可以看成一个容器,创建之后里面的内容是可变的。(提高字符串的操作效率)
构造方法:public StringBuilder():创建一个空白可变的字符串对象,不含任何内容。
public StringBuilder(String str):根据字符串内容,来创建可变字符串对象。
常用的成员方法:public StringBuilder append(任意类型):添加数据,并返回对象本身。
public StringBuilder reverse():反转容器中的内容。
public int length():返回长度。
public String toString():通过toString()就可以实现把StringBuilder转换为String。
容量分析:
原本的容量为16,当StringBuilder装入的字符超过这个容量时,容量又会变为16*2+2=34,当又超过34时就以实际长度为准。capacity()方法是获取容量;length()是获取长度。
StringJonier
StringJoiner跟StringBuilder一样,也可以看成是一个容器,创建之后里面的内容是可变的。
构造方法:public StringJoiner(间隔符号):创建StringJoiner对象,指定拼接时的间隔符号。
public StringJoiner(间隔符号,开始符号,结束符号):创建StringJoiner对象,指定拼接时的间隔符号,开始符号,结束符号。
成员方法:public StringJoiner add(添加的内容):添加数据,并返回对象本身。
public int length():返回长度。
public String toString():返回一个字符串。
补充
字符转成数字:char c = charAt(i)
int num = c - '0'或int num = c - 48;48是0的ASCLL值
获取一个字符串的第一位:1)str.charAt(0);2)str.startwith("开始的一个字符"):如果str字符串开始的第一个字符等于括号里的字符则返回true,否则返回false。