Java学习第十三天知识点
包装类: - 对应的就是8大基本数据类型
byte - Byte
short - Short
int - Integer
long - Long
float - Float
double - Double
char - Character
boolean - Boolean
1.创建方式:
a.直接赋值创建
Integer i = 10;
b.构造方法创建
new Integer(int i)
new Integer(String str)
2.装箱和拆箱:
自动拆箱: Integer -> int
i1.valueOf();
自动装箱: int -> Integer
3.常用API
Integer/int 和 String之间的转换
String -> Integer:
a. Integer.valueOf()
b. new Integer(str)
String -> int:
a. Integer.parseInt()
4.常量池:
String a="abc";//这个abc就存在于常量池
a.所有的包装类中只有Integer有常量池
b.常量池有取值范围:
-128 ~ 127
c.只要超过取值范围,全都是在new对象
数组: 数组的扩容/缩容 -> 最基本的数据结构
集合:可变长数组
1.概念:集合相当于是一个容器,主要用来存储任意类型的数据
2.分类:
Collection(I)
|- List(I)
|- Set(I)
|- Queue(I)
Map(I)
Iterable - 接口
1.API -> 只有一个方法 iterator() - 获取一个迭代器
2.迭代器:
a.作用:遍历/迭代集合(数组)所有元素
b.三个方法:
hashNext() - 询问有没有下一个元素
next() - 移动到下一个元素,并返回该位置上的元素
remove() - 删除集合元素
注意:如果迭代删除每一个元素,就必须使用迭代器方式进行删除否则会出现ConcurrentModificationException - 并发修改异常
例子:
package a;
import java.util.ArrayList;
import java.util.Iterator;
public class IteratorDemo0 {
public static void main(String[] args) {
ArrayList<String> all = new ArrayList<String>();
all.add("a");
all.add("b");
all.add("c");
Iterator iterator = all.iterator();//实例化迭代器
while(iterator.hasNext()){
String str= (String) iterator.next();//读取当前集合数据元素
if("b".equals(str)){
//all.remove(str);//使用集合当中的remove方法对当前迭代器当中的数据元素值进行删除操作(注:此操作将会破坏整个迭代器结构)使得迭代器在接下来将不会起作用
iterator.remove();
}else{
System.out.println( str+" ");
}
}
System.out.println("\n删除\"b\"之后的集合当中的数据为:"+all);
}
}
3.简易版迭代器 - foreach
a.作用: 获取集合/数组中所有的元素
b. 语法: for( : ){}
:前 -> 获取到的元素的临时变量
:后 -> 要遍历的集合/数组
c.缺点: 只能获取元素,不能做删除操作
例子:
public static void listTest3(ArrayList list,String a){
int count=0;
for (Object arr:list){
if (arr==a){
count++;
}
}
System.out.println(a+":"+count);
}
Colleti on集合:
1.创建方式:
Colletion col = new ArrayList();
2.常用API:
普通方法:
boolean add(E e)
void clear()
boolean contains(Object o)
boolean isEmpty()
boolean remove(Object o)
boolean remove(Object o)
和集合相关的API:
boolean addAll(Collection<? extends E> c)
boolean containsAll(Collection<?> c)
boolean removeAll(Collection<?> c)
boolean retainAll(Collection<?> c)
强类型 -> 指定类型 例如:String
弱类型 -> 没有指定类型(可以是所有类型)
泛型:
1.特点:
a.所有是类型的地方都可以使用泛型来代替,泛型表示所有类型(Object)
b.规定了泛型,就只是支持定义好的类型,只是在编译时有效,用来规范程序员写法
c.运行时,还是支持Object类型
2.定义泛型的步骤:
a.在类/接口上定义加上<E>
ps: Collection<E> col = new ArrayList();
b.在类/接口的方法中,具体类型就可以使用E来代替
3.作用:
泛型就是为了让代码的复用性更强,就可以不用实现重载操作
集合和数组的区别:
长度区别:
a.集合长度可变
b.数组长度不可变
内容区别:
a.集合可以存储引用类型数据
b.数组可以存储基本数据类型,引用数据类型
c.一个集合中可以存储任意类型
d.数组只能存储统一类型
JavaBean规范:
1.成员变量私有化,提供一对get()/set()
2.添加无参构造方法
3.重写toString()
4.重写equals()和hashCode()
5.建议基本数据类型使用包装类