ArrayList
-
会提供创建容器对象的方式
-
会提供相应的方法对容器进行操作
- 添加数据
- 删除某个数据
- 修改某个数据
- 获取某个数据
- 创建对象
- 增删改查的方法
- 容器的其他特点
Public class Test2 {
public static void main() {
String s2 = new String("abc"); // 这句话实际上创建了两个对象,(一个在字符串常量池中,一个在堆内存中),s2指向堆内存中的"abc"
String s1 = "abc" // 没有创建对象,s1指向了字符串常量池的"abc"
System.out.println("s1==s2") // false
}
}
ArrayList是使用最多,最常见的一种集合
构造器 | 说明 |
---|---|
Public 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) | 修改指定索引处的元素,返回被修改的元素 |
注意:集合和泛型都不支持基本数据类型,只能支持引用数据类型
Static修饰成员变量
Static叫静态,可以修饰成员变量、成员方法
成员变量按照有无Static修饰,分为两种:
- 类变量:有Static修饰,属于类,在计算机里有一份,会被类的全部对象共享
- 实例变量(对象的变量):无Static修饰,属于每个对象的
Public class Student {
//类变量
Static String name; // 类名.类变量(推荐) 对象.类变量(不推荐)
//实例变量
int age; // 对象.实例变量
}
类变量的应用场景
在开发中,如果某个数据只需要一份,且希望能够被共享(访问、修改),则该数据可以定义成类变量来记住
案例:要求用户类可以记住自己创建了多少个对象
Public class User {
//类变量
public static int number;
//构造器
public User() {
User.number++;
}
}
总结
-
访问自己类中的类变量,可以省略类名不写
-
注意:在某个类中访问其他类里的类变量,必须带类名访问
Static修饰成员方法
成员方法的分类
类方法:有Static修饰的成员方法,属于类
Public Static void printHelloWorld() { // 类名.类方法(推荐)
Syste,.out.println("Hello World"); // 对象名.类方法(推荐)
}
实例方法:无Static修饰的成员方法,属于对象
Public void PrintPass() {
... // 对象.实例方法
}
类方法的常见应用场景
类方法最常见的应用场景是做工具类
- 工具类中的方法都是一些类方法,每个方法都是用来完成一个功能的,工具类是给来发人员使用的
- 使用类方法来设计工具类提高了代码复用,调用方便,提高了开发效率
为什么工具类中的方法要用类方法,而不用实例方法?
-
实例方法需要创建对象来调用,此时对象只是为了调用方法,对象占内存,这样会浪费内存
-
类方法,直接用类名调用即可,调用方便,也能节省空间
多学一招
工具类没有创建对象的需求,建议将工具类的构造器进行私有
使用类方法、实例方法的注意事项
- 类方法中可以直接访问类的成员,不可以直接访问实例成员(属于对象),注意同一个类中,访问类成员,可以省略类名不写
- 实例方法中,既可以直接访问类成员,也可以直接访问实例成员
- 实例方法中可以出现this关键字,类方法中不可以出现this关键字
代码块概述
代码块是类的5大成分之一(成员变量、构造器、方法、代码块、内部类)
代码块分两种
静态代码块
格式:static{ }
特点: 类加载时自动执行,由于类只会加载一次,所以静态代码块也只会执行一次
作用:完成类的初始化,例如:对类变量的初始化赋值
实例代码块
格式:{ }
特点:每次创建对象时,执行实例代码块,并在构造器前执行
作用:和构造器一样,都是用来完成对象的初始化的,对实例成员进行初始化赋值
什么是设计模式?
一个问题通常有n种解法,其中肯定有一种解法是最优的,这个最优的解法被人总结出来,称之为设计模式
设计模式有20多种,对应20多种软件开发中会遇到的问题
- 解决什么问题?
- 怎么写?
单例设计模式
确保一个类只有一个对象
写法:
- 把类的构造器私有
- 定义一个类变量记住类的一个对象
- 定义一个类方法,返回对象
// 饿汉式单例设计模式
Public class A {
// 2. 定义一个类变量记住类的一个对象
private static A a = new A();
// 1. 私有构造器
private A() {
}
// 3. 定义一个类方法返回对象
public static A getObject() {
return a;
}
}
单例设计模式的实现方式有很多
饿汉式单例:拿对象时,对象早就创建好了
懒汉式单例:拿对象时,才开始创建对象(延迟加载对象)
懒汉式单例设计模式
写法:
-
把类的构造器私有
-
定义一个类变量用于存储对象
-
提供一个类方法,保证返回的是同一个对象
// 懒汉式单例设计模式
Public class B {
// 2. 定义一个类变量,用于存储这个类的一个对象
private static B b;
// 1. 把类的构造器私有
private B() {
}
// 3. 定义一个类方法,这个方法要保证第一次调用时才创建一个对象,
后面调用时都会用这同一个对象返回
public static B getInstance() {
if(b == null) {
b = new B();
}
return b;
}
}