java数组
存储一批同种类型数据
静态初始化数组
数据类型[] 数组名 = new 数据类型[]{元素1, 元素2 , ...}; int[] ages = new int[]{12,24,26}; // 和 C 语言有区别
数据类型[] 数组名 ={元素1, 元素2 , ...}; int[] ages = {12,24,26};
数组是引用类型
访问数组
数组名[index];
获取数组长度
array.length;
注意点
- 数据类型[] 数组名 可以写成 数据类型 数组名[] --> 同C语言
- 数组一旦定义后,长度和类型就已经确定了
动态初始化数组
定义时只确定类型和长度
数据类型[] 数组名 = new 数据类型[长度];
元素默认值
两种初始化方式,不可以混用
数组遍历
for(int i = 0 ;i< array.length; i++ ){ // array[i]; }
java方法
- 程序逻辑清晰
- 代码的复用
方法定义
修饰符 返回值类型 方法名(形参列表){ // 方法体 }
- 方法的编写顺序无所谓
方法重载
同名方法, 形参列表不同
调用时,通过参数的不同来区分调用的方法
通过形参不同实现功能差异化的选择
修饰符,返回值类型不能作为重载的基础
形参列表不同指的是:形参的个数、类型、顺序不同,不关心形参的名称
static 关键字
- 静态, 可以修饰成员变量,成员方法
- 静态成员变量,静态方法
- static 修饰后的成员变量, 被类的所有对象共享(访问和修改) --> 属于类,内存中只有一份
类名.静态成员变量; 对象.静态成员变量; --> 也可以
- 静态成员方法,可以使用类名访问,可以使用对象访问
- 实例成员方法,只能使用对象访问
static 访问注意事项
- 静态方法只能访问静态成员,不可以直接访问实例成员
- 实例方法可以访问静态成员,也可以访问实例成员
- 静态访问中不可以使用this关键字, this 代表的是对象
工具类
类中的静态方法,每个方法都是以完成一个公用的功能为目的。
- 实例方法需要创建对象调用
- 静态的工具类无需创建对象,就可以直接调用方法 --> 将工具类的构造器进行私有
代码块
类的5大成分: 成员变量,构造器,方法,代码块,内部类
代码块定义在方法中
使用{} 括起来的代码称为代码块
- 静态代码块
- 格式 : static{}
- 需要通过static关键字修饰,随着类的加载而加载,并且自动触发、只执行一次
- 在类加载的时候做一些静态数据初始化的操作,以便后续使用
定义成员变量时不允许赋初值
- 在启动系统时对静态资源进行初始化
- 构造代码块
- 格式: {}
- 每次创建对象,调用构造器执行时,都会执行该代码块中的代码,并且在构造器执行前执行
单例设计模式
一个问题通常有n种解法的,但其中肯定有一种解法是最优的,这个最优的解法被人总结 出来了,称之为设计模式
- 单例模式
保证系统中,应用该模式的这个类永远只有一个实例,即一个类永远只能创建一个对象 - 单例实现方式
- 饿汉单例模式
- 懒汉单例模式
- …
饿汉单例模式
在用类获取对象的时候,对象已经提前为创建好
步骤
- 定义一个类,构造器私有
- 定义一个静态变量,存储一个对象
public class SingleInstance{ // 静态变量存储一个对象:属于类,与类一起加载一次 public static SingleInstace instance = new SingleInstance(); // 私有构造器 private SingleInstance(){ // ... } }
懒汉单例模式
真正需要该对象时,才去创建一个对象(延迟加载对象)
步骤
- 定义一个类,私有构造器
- 定义一个静态变量存储对象
- 提供一个返回单例对象的方法
public class SingleInstance{ // 静态变量存储一个对象:属于类,与类一起加载一次 public static SingleInstace instance; // 私有构造器 private SingleInstance(){ // ... } // 提供一个一个方法返回一个单例对象 public static SingleInstance getInstance(){ ... return ...; } }