`
scarlettli
  • 浏览: 57359 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

面向对象--静态,单例设计

    博客分类:
  • java
阅读更多
构造代码块
构造代码块如果写在函数中,仅仅只是节约内存而已
构造代码块如果写在类中,那么代码块优先于构造方法运行
每建立一个新的对象,构造代码块就会先运行一次


静态的由来
给对象提供共享的数据
被static修饰的成员变量,变成所有对象的共享数据
被static修饰的成员变量,多了一种调用方式,类名.变量名
当数据被所有对象共享的时候,变量修饰为静态
如果数据是对像特有的话,不能使用静态修饰
静态修饰的成员变量可以被类名调用,也可以被对象调用
非静态成员变量,只能被对象调用

  静态的内存
  被静态修饰内容存储在方法区的静态区中,有自己的所属,就是类
  优先于对象存在于内存中
  使用类名进行调用,不需要使用对象调用
  静态区存储的内容生存时间最长
  静态区存储的静态变量,也有默认值

  static关键字
  只能修饰成员,不能修饰局部
  静态不能直接调用非静态,因为静态进入内存的时候堆中还没有对象
  先进内存的,不能访问后进内存的,后进内存的,可以访问先进内存的
  被静态修饰的方法中,不能写this,也不能写super
  非静态方法中,可以直接访问静态变量

  静态变量和实例变量的区别
  存储位置不一样
  静态变量存储在方法区的静态区
  实例变量跟对对象存储在堆内存中

  调用方法不一样
  静态变量直接被类名调用
  实例变量,只能被对象调用

  生命周期不一样
  静态变量跟着类的加载而加载,随着类的消失而消失,生命最长
  实例变量,跟随对象的加载而加载,跟对对像的消失而消失,生命相对较短

  作用范围不一样
  静态变量属于类,被所有对象共享
  实例变量属于对象,是对象的特有数据


main方法
  public
   |-- 权限修饰符,最大权限,JVM调用main方法,必须保证main方法的权限足够大
  static
   |-- 调用main的时候,直接被类名调用
  void
   |-- 没有返回值 ,如果有返回值,返回给JVM
  main
   |-- 不是关键字,但是被java占用,程序员不能再用这个名字了
  String[] args
   |-- main方法的参数,是一个字符串类型的数组

   成员变量及成员方法什么时候使用静态?
   静态变量,就是对象中的共享数据
  |-- 当需要完成一个功能的时候,发现有的数据,是这些功能共享的内容,使用static进行修饰
   成员方法,什么时候用静态修饰呢
    |-- 当方法没有调用过或者是访问过特有数据的时候,建议将方法定义成静态


   单例设计模式
   设计模式:建筑上来的
   用于解决现实问题而出现的设计模式,23种设计模式
   基础班的设计模式:单例,模板方法,装饰,适配器,简单工厂,工厂方法,观察者等等
 
   单例设计模式,解决了对象在内存中的唯一性,保证了对象在存储中是一个唯一的

    如何实现单例模式
    私有构造方法
    私有构造以后,外类不能在new对象了,但是在本类内部是可以访问的
    在本类的内部,建立自己的对象
    在类的外部,获取在内部建立的对象的引用
    需要在类的内部,定义个方法,返回这个对象的引用

    单例设计模式有两种:饿汉式和懒汉式
    饿汉式:在类创建的同时就已经创建好一个静态的对象供系统使用
    饿汉式安全性高,一般推荐使用饿汉式
    懒汉式:在创建类的时候先不创建对象,等到要用的时候再创建,延迟加载了
    懒汉式安全性低,一般不推荐保用懒汉式


    静态代码块
    静态代码块优先于构造代码块运行
    如果一个类中有多个静态代码块,就按从上到下的顺序执行
    静态代码块在程序中只运行一次
    静态代码块出现的原因在于只要程序运行,会先执行静态代码块,且只运行一次,可以调用方法的

分享到:
评论

相关推荐

    大话设计模式--Singleton(单例模式)

    在Java、C#等面向对象编程语言中,单例模式有着广泛的实践。 单例模式的实现通常有以下几种方法: 1. 饿汉式(静态常量): 这种方式在类加载时就完成了实例化,线程安全。代码如下: ```java public class ...

    设计模式源代码--工厂模式与单例

    3. 面向对象的设计原则推荐“开闭原则”,而单例模式违反了这一原则,因为它不允许对实例化过程进行扩展。 在学习和使用这些设计模式时,理解其背后的意图和应用场景至关重要。工厂模式用于解耦对象的创建和使用,...

    Java面向对象(高级)- 单例(Singleton)设计模式

    单例设计模式是面向对象编程中的一种常见设计模式,它的主要目的是确保一个类在整个程序运行期间只有一个实例,并提供全局访问点。这种模式在Java中被广泛应用,尤其是在需要控制资源的共享,如数据库连接池,线程池...

    第04章 面向对象(上) 13 单例设计模式

    单例设计模式是一种在软件设计中广泛使用的设计模式,它保证了一个类只有一个实例,并提供一个全局访问点。这种模式在需要频繁创建和销毁对象,或者对象的创建代价高昂时特别有用,例如数据库连接、线程池、缓存管理...

    340.338.JAVA基础教程_面向对象(下)-复习:单例模式(340).rar

    单例模式是面向对象编程中一个非常重要的设计模式,它保证了一个类只有一个实例,并提供一个全局访问点。这种模式在Java中广泛应用于配置管理、线程池、缓存管理等场景,因为它能确保系统资源的有效利用,防止无限制...

    C++设计模式-工厂和单例

    C++中的设计模式是面向对象编程的重要组成部分,它们提供了一种可重用的结构化方式来处理复杂的系统设计。本篇将深入探讨两种重要的设计模式:工厂模式和单例模式,以及如何在VC(Visual C++)环境下实现它们。 ###...

    面向对象设计UML实践课后答案

    在UML实践中,还会遇到一些设计模式,如工厂模式、单例模式、观察者模式等,这些都是面向对象设计中常用的解决方案模板,有助于解决常见的设计问题。理解并能灵活运用这些模式是提升设计能力的关键。 总之,面向...

    《Java面向对象程序设计(第2版)》课件

    Java面向对象程序设计是计算机科学中的一个重要领域,尤其在软件开发中占据核心地位。第二版的《Java面向对象程序设计》课件旨在深入浅出地介绍这一关键概念,帮助学习者掌握Java语言的基础以及面向对象编程的核心...

    面向对象系统设计循序渐进

    面向对象系统设计是一种广泛应用在软件工程中的方法论,它基于对象和类的概念,通过封装、继承和多态等机制来构建复杂系统。本教程“面向对象系统设计循序渐进”旨在为初学者提供一个易懂的学习路径,帮助他们逐步...

    Java语言与面向对象程序设计-印旻ppt

    5. **设计模式**:面向对象设计模式是解决特定问题的最佳实践,如单例模式、工厂模式、观察者模式等,这些模式在Java编程中广泛应用。 印旻的PPT将详细解释这些概念,并通过实例和练习帮助学习者理解和应用。通过...

    javascript 经典面向对象设计

    ### JavaScript经典面向对象设计 #### 标题与描述解析 标题“JavaScript经典面向对象设计”指出了本书的主要内容是关于如何使用面向对象编程(OOP)原则和技术来编写高质量、可扩展且可重用的JavaScript应用程序及...

    深入浅出面向对象分析与设计.pdf

    ### 面向对象分析与设计概述 #### 一、面向对象的基本概念 面向对象(Object-Oriented,简称OO)是一种软件开发方法,它基于“对象”这一基本概念进行程序设计。在面向对象的世界里,对象是构成系统的基本单元,...

    C#面向对象设计模式纵横谈 12种设计模式

    C#作为面向对象的语言,设计模式的应用对于开发高效、可维护的软件至关重要。本篇将深入探讨12种核心的设计模式,它们是:单例模式、工厂模式、抽象工厂模式、建造者模式、原型模式、适配器模式、装饰器模式、代理...

    面向对象程序设计教案

    10. **设计模式**:面向对象设计模式是解决常见问题的模板,如单例模式、工厂模式、观察者模式等,它们是经验的总结,可以帮助开发者编写出高质量的代码。 马石安老师的教案会详细讲解这些概念,并通过实例和练习...

    java面向对象的设计方法

    在实际开发中,面向对象设计方法还包括了一些设计模式的应用,如工厂模式、单例模式、观察者模式等。这些模式是前人经验的总结,它们为解决特定问题提供了标准的解决方案,提高了代码的可读性和可维护性。 总的来说...

    C#基于面向对象的计算器源代码,学习面向对象的好资料

    10. 设计模式:虽然这是更高级的话题,但面向对象设计模式如工厂模式(用于创建对象)、单例模式(确保类只有一个实例)等可以在更复杂的计算器实现中发挥作用。 通过分析这个C#面向对象的计算器源代码,你可以深入...

    matlab面向对象的程序设计.pdf

    在MATLAB中,面向对象的编程(Object-Oriented Programming, OOP)允许用户利用类、对象和继承等概念来组织和设计复杂的代码结构。MATLAB自R2008a版本开始正式支持OOP特性,使得其在工程和科研领域的应用更加灵活和...

    面向对象技术的课件-西安交大内部资料

    面向对象技术是现代软件开发中的核心概念,尤其在大型复杂系统的设计与实现中扮演着重要角色。这份"面向对象技术的课件-西安交大内部资料"提供了深度和全面的面向对象知识,对于学习和理解这一主题至关重要。下面将...

    面向对象技术课件-New

    5. **设计模式**:面向对象设计模式是解决常见问题的最佳实践,如单例模式、工厂模式、观察者模式等。这些模式在实际项目开发中广泛应用,理解并掌握它们有助于提高代码质量。 6. **异常处理**:面向对象编程中,...

Global site tag (gtag.js) - Google Analytics