static关键字

基本概念使用static关键字修饰成员变量表示静态的含义, 此时成员变量由对象层级提升为类层级, 也就是整个类只有一份并被所有对象共享. 该成员变量随着类的加载准备就绪, 与是否创建对象无关

static关键字修饰的成员可以使用引用.的方式访问,但推荐类名.的方式

使用方式在非静态成员方法中, 既能访问非静态的成员又能访问静态的成员

(成员: 成员变量 + 成员方法. 静态成员被所有对象共享)

在静态成员方法中, 只能访问静态成员不能访问非静态成员

(成员: 成员变量 + 成员方法. 因为此时可能还没有创建对象)

在以后的开发中, 只有隶属类层级并被所有对象共享的内容才可以使用static关键字修饰(不能滥用static关键字)

构造块和静态代码块构造块: 在类体中直接使用{}括起来的代码块

每创建一个对象都会执行一次构造块

静态代码块: 使用static关键字修饰的构造块

静态代码块随着类加载时执行一次

案例题目编程实现Singleton类的封装

编程实现SingletonTest类对Singleton类进行测试, 要求main方法中能得到且只能得到该类的一个对象public class Singleton {

// 2.声明本类类型的引用, 指向本类类型对象

// 在类中创建好对象, 然后送到类外

/* 只看等号左边,就相当于是类的成员变量, 且该成员变量隶属对象层级

// 若类外想要访问这个变量, 就需要使用对象 也就是的方式

// 但是现在类外是无法创建对象的, 所以就需要将该成员变量提升为类层级的

//Singleton sin = new Singleton();

*/

// 为了防止Singleton sin = null 使引用变量无效,所以私有化,类外就不能直接访问

// 使用private static共同修饰

private static Singleton sin = new Singleton();

// 1.私有化构造方法, 使用private关键字修饰

private Singleton() {}

// 3.提供公有的get方法负责将对象返回

// 使用static关键字修饰, 将该方法提升为类层级

public static Singleton getInstance(){ // 通过该方法能得到且只能得到这个类的一个对象

return sin;

}

/**

* 自己写了构造方法 , 就不会再调用系统默认的构造方法

* 因为私有化构造方法后, 类外就一个对象都不能创建

*

*/

}

接下来创建SingletonTest类进行测试public class SingletonTest{

public static void main(String[] args) {

// 声明Singleton类型的引用, 指向Singleton类型的对象

// 类名 引用变量名 = new 类名();

// Singleton st1 = new Singleton();

// Singleton st2 = new Singleton();

// System.out.println(st1 == st2); // false

/**

* 只要可以调用构造方法, 就可惜创建一个新对象, 也就不满足题目中的“得到且只能得到一个对象”的要求

* 所以将构造方法私有化后, 在类外就不能使用, 也就是不能使用new方法创建对象

*/

// Singleton st1 = Singleton.sin; // Singleton.sin就是类内创建的对象

// Singleton.sin = null; // 使得引用变量无效

Singleton s1 = Singleton.getInstance();

Singleton s2 = Singleton.getInstance();

System.out.println(s1 == s2); // true

/**

* 无论.getInstance()调用多少次, 都指向类内同一个创建对象的语句, 所以也就是只一个对象

* 另, 类内创建对象的语句是类层级, 是随类的创建而加载, 所以只要这个类整体只运行一次, 那么也就只创建一个对象

*/

}

}

单例设计模式

概念

在某些特殊场合中, 一个类对外提供且只提供一个对象时, 这样的类叫做单例类. 而设计单例的流程和思想叫做单例设计模式

实现流程私有化构造方法, 使用private关键字修饰

声明本类类型的引用指向本类类型的对象, 并使用private static关键字共同修饰

提供公有的get方法负责将对象返回出动,并使用public static关键字共同修饰

java static是单例_JAVA基础-static关键字及单例设计模式相关推荐

  1. java static 修饰变量吗_Java面试 - static 修饰的变量和方法有哪些特点?

    1.static修饰的变量和方法,在类加载时即被初始化,可直接通过类名.变量名和类型.方法名进行调用. 2.static修饰的变量,在类加载时会被分配到数据区的方法区.类的实例可共享方法区中的变量.如 ...

  2. java继承原理内存角度_Java基础知识巩固

    最近发现自己的Java基础知识还是有点薄弱,刚好有点空闲时间进行再补一补,然后进行整理一下,方便自己以后复习.其实个人认为Java基础还是很重要的,不管从事Java后端开发还是Android开发,Ja ...

  3. java 的对象类用_java基础(第零篇)对象与类

    前言: 本文讲述java中对象与类的一些概念.包括对象与类的有关概念,类间五种关系,类的访问权限等. 在java中,一切都可以用对象来描述,操作对象的标识符只不过是对象的一个引用,一个对象可以有多个引 ...

  4. java的时间日期类_Java基础学习:日期时间类

    Date 类 所在的包:java.util.Date Date 类表示特定的瞬间,精确到毫秒.创建对象的值为从1970年1月1日00:00:00 到当前系统显示时间所经历的毫秒数. 例如:public ...

  5. java商场购物幸运客户练习题_JAVA基础语法练习(一)

    一.基础案例 1.训练案例1 1.1.训练描述 键盘录入一个int类型的数据,使用三元运算符判断这个数是奇数还是偶数 import java.util.Scanner; public class X2 ...

  6. java怎么访问静态属性_Java基础——java静态变量面试题

    Java面试中主要考察的就是应聘者的基础知识的掌握情况,静态变量是属于静态存储方式,是java中基础性的内容.下面就为大家准备了10道java静态变量面试题,希望可以帮助到有面试需要的朋友们. 1.s ...

  7. java中volatile的含义_java中volatile关键字的含义

    (支持原创)本篇文章非原创,原文章地址: http://www.cnblogs.com/aigongsi/archive/2012/04/01/2429166.html 在java线程并发处理中,有一 ...

  8. java 静态变量的使用_java的static静态变量是不是不安全的?应该如何正确的使用他呢...

    类中的静态变量在程序运行期间,其内存空间对所有该类的对象实例而言是共享的,为了节省系统内存开销.共享资源,应该将一些变量声明为静态变量. 代码一: public class MemoryTest { ...

  9. java与c内存管理_Java基础--Java内存管理与垃圾回收

    Java自动内存管理 在讲解内存管理之前,首先需要了解对象和对象引用的区别 对象是类的一个实例,以人这个类为例,Person是我们定义的一个类 public class Person{} public ...

最新文章

  1. delphi 串口通信发送_STM32第五章串口通讯详解
  2. php解析html类库simple_html_dom
  3. php双分支语句【三个数排序】
  4. linux设置静态IP及克隆后修改IP和hostname
  5. 标志寄存器EFLAGES
  6. hive学习08天-一次hvie面试题
  7. C#如何测量字符串的高度宽度和精确取得字符串的高度宽度
  8. [笔记]MySQL 配置优化
  9. 前端开源项目周报0221
  10. 智慧路灯解决方案-最新全套文件
  11. 记一款价廉物美的小型DAC+耳放----Dr.DAC
  12. n位整数去掉m位后求最大值问题
  13. 数据库中COMMENT关键字的使用
  14. html设置首缩选进两字符,首行缩进2字符怎么设置 css
  15. 深度学习【使用pytorch实现基础模型、优化算法介绍、数据集的加载】
  16. Kafka安装(windows)
  17. 认证模式之Digest模式
  18. 一次探索:基于香农熵预测DNA中编码序列,python实现。
  19. 使用虚拟主机安装cyberpanel面板并创建wordpress站点
  20. 滴滴出行为什么要推一个“全民拼车日”?

热门文章

  1. request 获取url
  2. HDOJ 2074 叠筐
  3. OpenCV-人像—酷感冷艳滤镜
  4. php网站怎么对接微信群,PHP对接微信公众平台消息接口开发流程教程
  5. 通达信波段王指标公式主图_通达信波段王主图指标公式
  6. mysql config type_mysql_config_editor用法举例
  7. dbvisualizer报错No JVM
  8. linux正则表达式脚本实例,Shell下的正则表达式及实例
  9. mysql双主启停_Mysql 多实例配置与启停
  10. python字符串_(Python基础教程之七)Python字符串操作