容器,集合
之前学过的容器 数组
弊端:只能存指定数据类型 数组长度不可改变
List 接口
实现类:ArrayList Linkedlist Vestor
List list = new ArrayList();
List中常用的方法:
添加元素
list.add("A");
获取元素
Object obj=list.get(2);
在指定位置插入元素
list.add(1,44);//插入后面元素往后移
将元素替换指定位置的元素
list.set(2,22);
是否包含某一对象
boolean bool=list.contains(22);
判断是否包含另外一个集合中的所有元素
list.addAll(lista);
依次添加lista中元素
list.add(lista);
将lista加入list中[A, 44, 22, null, 33.33, 343, [33.33, null, sdfw]]
删除元素
list.remove("A");
删除掉找到的第一个元素
参数传对象 删除这个对象 返回boolean
参数传下标 删除这个下标位置对象,返回这个对象
打印出每个元素
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}//打印出每个元素
for(Object item:list){}
ArrayList 扩容方式
初始容量 10
扩容 1.5倍
LinkedList 链表
LinkedList 和ArrayList 性能比较
ArrayList 是通过数组存储数据的,查找数据提别快 插入和删除慢
LinkedList 查找速度慢一些,插入删除快一些,因为查找慢一些,通过双向检索加快
1、父类静态代码块
2、子类静态代码块
3、父类成员代码块
4、父类构造方法
5、子类的成员代码块
6、子类的构造方法
public class EasyBlock {
static {
//静态代码块 一个类的静态代码块只会执行一次
//加载类对象时执行
System.out.println("这是静态代码块");
}
{
//成员代码块 每一次new对象时执行
//成员代码块在构造方法之前运行
System.out.println("成员代码块");
}
EasyBlock(){
System.out.println("无参构造方法");
}
EasyBlock(int num){
System.out.println("带参构造方法");
}
public static void main(String[] args) {
//new EasyBlock();
// new EasyBlock(1);
new EasySon();
}
}
class EasySon extends EasyBlock {
static {
//静态代码块 一个类的静态代码块只会执行一次
//加载类对象时执行
System.out.println("子类----这是静态代码块");
}
{
//成员代码块 每一次new对象时执行
//成员代码块在构造方法之前运行
System.out.println("子类-----成员代码块");
}
EasySon(){
System.out.println("子类------无参构造方法");
}
EasySon(int num){
System.out.println("子类------带参构造方法");
}
}
1. 静态内部类
静态内部类是用 static 修饰的类,属于外部类的一部分,但不可以访问外部类的实例变量和实例方法,只能访问外部类的静态变量和静态方法。静态内部类可以直接通过外部类的名称进行访问。
2. 成员内部类)
成员内部类是定义在外部类的成员位置的类,不用 `static` 修饰。成员内部类可以访问外部类的所有成员(包括私有成员),也可以访问外部类的实例变量和方法。
class OuterClass {
private int outerInstanceVariable = 20;
class MemberInnerClass {
void display() {
System.out.println("Member Inner Class, outerInstanceVariable: " + outerInstanceVariable);
}
}
}
3. 局部内部类
局部内部类是在方法或代码块内定义的类。它只能在这个方法或代码块内使用,并且可以访问外部类的成员、方法以及方法中的局部变量(如果这些变量是 `final` 或者是有效的最终变量)。
class OuterClass {
void outerMethod() {
final int localVariable = 30;
class LocalInnerClass {
void display() {
System.out.println("Local Inner Class, localVariable: " + localVariable);
}
}
LocalInnerClass localInner = new LocalInnerClass();
localInner.display();
}
}
4. 匿名内部类
匿名内部类是一种没有名字的内部类,通常用于实例化接口或抽象类。它在创建对象的同时定义了类,因此没有类名。匿名内部类通常用于处理事件或实现回调。
class OuterClass {
void outerMethod() {
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("Anonymous Inner Class");
}
};
new Thread(runnable).start();
}
}
- 静态内部类:使用 static关键字,可以访问外部类的静态成员。
- 成员内部类:没有 static关键字,可以访问外部类的所有成员。
- 局部内部类:在方法中定义,只能在其所在的方法中使用。
- 匿名内部类:没有类名,通常用于单次使用的类实例化,常用于事件处理和回调接口。