3.6static(静态)关键字 静态模式:23种 构造代码块写在类中,建立对象就运行一次,优先于构造函数 静态修饰的成员变量多了一种调用形式 静态可以调用静态的,静态的不能接收非静态的 方法区: 存储函数,静态也是放在方法区,但是在方法区的静态区. 静态数据进到内存的方法区后,堆中不一定有对象. 静态区优先于对象的存在 静态变量没有对象 静态不能访问非静态的原因: 原因在于静态随着类的加载进入静态区,非静态成员变量跟对象加载到堆内存,静态区的优先于对象存在 好处: 资源共享 类名直接调用,不用建立对象 弊处: 出现调用的局限性 随着类的消失而消失,生命周期最长 消耗资源 注意事项: 1)static不能修饰局部变量 2)被静态修饰的函数中不能写this和super 3)定义静态成员变量时,变量名全部大写 总结: 1) 共享数据,使用静态修饰 2)静态不能调用非静态 什么时候定义静态? 对象中的共享数据定义成静态 具体事情,具体分析 当类中的方法从来没有访问过类中的非静态成员变量,这个函数写成static 主函数详解: 主函数:独立入口,被虚拟机调用,保证一个类独立运行 public:保证权限足够大 static:静态,没有对象,也可以调用主函数 void:返回值类型,没有返回,谁调用的返回给谁 main:规定的固定格式,不能改 (String[]args):当JVM调用主函数的时候虚拟机传递一个字符类型的数组,args可以随便改名,但不建议更改! 3.7单例设计模式 单例设计模式赋值对象在内存中是唯一的 单例设计模式解决对象的唯一性,保证了内存中一个对象是唯一的发现,new对象就是新的 解决步骤: 1) 不能让new新对象 2) 但是我可以自己建立自己的对象 3) 对外界提供一个方法,返回自己建立的这个对象 4) 不能用new建立,但是我可以调用类中的一个对外方法,获取到该类的对象 代码实现: 1,私有化构造函数 2,自己可以访问自己的构造函数 3,提供公共函数返回自己建立的对象 4,不能建立对象,但方法可以被调用 5, 保证对象中的唯一性 两种方式实现 1) 安全的恶汉式(工作中使用) 2) 不太安全的懒汉式(面试中使用) 3.7.1静态代码块(开发中基本不用,面试的时候基本会用) 静态代码块定义在类中,当类加载到内存方法区中,运行一次,以后不会再运行了. 构造代码块建立对象就运行一次
有总结得不对的请大家帮忙指出,谢谢!
|