static
public class StaticDemo1 {
// 全局变量
int num1;
// 类变量
static int num2;
public void test1() {
System.out.println(1);
}
public static void test2() {
System.out.println(1);
}
public static void main(String[] args) {
num2 = 1000;
StaticDemo1.test2();
}
// static : 静态
/*
* 能修饰方法(静态方法),修饰的全局变量称为静态属性(变量)或类变量
* 不能修饰类,构造器,局部变量
*
* 特点:
* 静态属性和静态方法,可以直接通过类名调用
* 静态方法只能直接访问静态成员,不能直接访问非静态成员
* 静态属性归这个类的所有对象共享
*/
}
静态块
public class StaticDemo2 {
static int num;
// 构造器
public StaticDemo2() {
System.out.println("构造器1被调用");
}
public StaticDemo2(int num) {
System.out.println("构造器2被调用");
}
// 普通代码块 : 相当于构造器的第一句话
{
System.out.println("普通代码块被调用");
}
// 静态块 : 为静态属性初始化
// 执行时机:当类型信息加载到方法区就执行了
static {
System.out.println("静态块被调用");
}
public static void main(String[] args) {
// StaticDemo2 sd = new StaticDemo2(1);
}
}
单例模式
public class Singleton {
/*
* 单例模式 :保证一个类只能有一个实例(一个类只能创建一个对象)
* -- 饿汉模式
* -- 懒汉模式(懒加载)
*
* 问题1:怎么解决“多例”(不能让其他类随意的使用构造器)
* 解决方式 :构造器私有化
* private Singleton() {}
*
* 问题2:怎么解决提供一个实例
* 解决方式 :在单例类中创建一个实例
* Singleton singleton = new Singleton();
*
* 问题3:不能随意修改
* 解决方式 :将创建的实例也私有
* private static Singleton singleton = new Singleton();
*
* 问题4:如何获取这个实例
* 解决方式:提供一个public的方法将这个实例返出去
* public static Singleton getInstance() {
return singleton;
}
*
*/
// 饿汉模式
// private static Singleton singleton = new Singleton();
// private Singleton() {}
// public static Singleton getInstance() {
// return singleton;
// }
// 懒汉模式(懒加载)
private static Singleton singleton;
private Singleton() {}
public static Singleton getInstance() {
if(singleton == null) {
singleton = new Singleton();
}
return singleton;
}
public void test() {
System.out.println(123);
}
}
网友评论