包和访问权限+单例
- 包的概念
- 包的本质就是一系列嵌套的文件夹。
- 在程序中的体现:org.lanqiao.pet.entity (公司域名的反写+项目+功能,全部小写。)
- 包的作用
- 整理代码
- 区分同名类
- 进行权限控制
- 常见用包
- java.util 工具类 (java.util.Scanner)
- java.io io操作
- java.net 网络开发
- java.lang 默认包 java.lang.String / java.lang.Math
- 包的关键字
- package : 描述当前类所处的包的名称。
- import :引入其他包中的类。本包中的类不需要引用。
- 权限修饰符Java 中一共有四种访问权限控制,其权限控制的大小情况是这样的:public > protected > default(包访问权限) > private ,具体的权限控制看下面表格,列所指定的类是否有权限允许访问行的权限控制下的内容:
| 访问权限 | 同类 | 同包的类 | 子类 | 非子类的外包类 |
|---|---|---|---|---|
| public | 是 | 是 | 是 | 是 |
| protected | 是 | 是 | 是 | 否 |
| default | 是 | 是 | 否 | 否 |
| private | 是 | 否 | 否 | 否 |
- static静态
- 属性 -> 类属性
- 方法 -> 类方法
- 块 -> 静态块:静态属性初始化操作。
- 工具类 | 单例模式(static)
- 调用时机:类加载的时候,初始化类属性和类方法。
- static 只加载一次,常驻内存(属性,方法,静态块)
- 成员,初始化块执行多次
- 非static可以用static,static不能用非static
- 单例模式有以下特点:
- 单例类只能有一个实例。
- 单例类必须自己创建自己的唯一实例。
- 单例类必须给所有其他对象提供这一实例。
单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。单例模式可以分为懒汉式和饿汉式等多种形式。
饿汉式:不论是否需要都创建对象。
懒汉式:需要时创建,不需要不创建。
饿汉式在类创建的同时就已经创建好一个静态的对象供系统使用,以后不再改变,所以天生是线程安全的。
//饿汉式单例类.在类初始化时,已经自行实例化
public class Singleton {
private Singleton() {}
private static Singleton single = new Singleton();
//静态工厂方法
public static Singleton getInstance() {
return single;
}
}
//懒汉式单例类.在第一次调用的时候实例化自己
public class Singleton {
private Singleton() {}
private static Singleton single = null;
//静态工厂方法
public static Singleton getInstance() {
if (single == null) {
single = new Singleton();
}
return single;
}
}