1. 共享,不属于对象,属于类,类成员变量,任何一个类的对象都有该属性,一旦被修改,则其他对象中的该属性也被更改。

2. 类中方法是static的,可以通过类名直接访问,不用new一个该类的对象。

3. 唯一,无论有多少类的对象,static属性在内存中只有一份。用于实现单例模式,连接池等问题。

简单单例模式

  1. package weiguoyuan.chainunicom.cn;
  2.  
  3. class Single{
  4. private static Single only = new Single();//private 封装 以免外界操作 static 只有一个
  5. private Single(){}//外界不可以new 来访问构造函数
  6. public static Single getOnly(){//public 外界访问口 static 才能由外界通过类名直接访问
  7. return only;
  8. }
  9. }
  10. public class TestSingle {
  11.  
  12. public static void main(String[] args) {
  13. Single s1 = Single.getOnly();
  14. Single s2 = Single.getOnly();
  15. System.out.println(s1==s2);
  16. }
  17. }

下面代码是为了获得jedis连接只操作一次的单例模式。

  1. import redis.clients.jedis.Jedis;
  2. import redis.clients.jedis.JedisPoolConfig;
  3.  
  4. import com.wandoulabs.jodis.JedisResourcePool;
  5. import com.wandoulabs.jodis.RoundRobinJedisPool;
  6.  
  7. public class GetJedis{
  8. private static JedisResourcePool jedisPool = new RoundRobinJedisPool("192.168.253.128:2181",
  9. 30000, "/zk/codis/db_test/proxy", new JedisPoolConfig());
  10. public static Jedis getJedis(){
  11. return jedisPool.getResource();
  12. }
  13. }
  1. //获得jedis连接
  2. Jedis jedis = GetJedis.getJedis();

4. 静态代码块只在类加载的时候执行一次,一般用于初始化,和new出的对象个数无关。静态代码块中可以new该类的对象,可以用该对象访问类中非静态的方法属性。

5. 动态代码块可以理解为多个构造函数形同的部分,把这部分提取出来,有new操作,动态代码块就会执行一次,没有对象生成不执行。

  1. package weiguoyuan.chainunicom.cn;
  2.  
  3. public class TestStatic {
  4. static {
  5. System.out.println("TestStatic static code1");
  6. }
  7. public TestStatic(){
  8. }
  9. public TestStatic(int i){
  10. System.out.println("TestStatic Constructor");
  11. }
  12. {
  13. System.out.println("TestStatic dynamic code");
  14. }
  15. static {
  16. System.out.println("TestStatic static code2");
  17. }
  18.  
  19. }
  20. class Test {
  21. static {
  22. System.out.println("Test static code1");
  23. }
  24. {
  25. System.out.println("Test dynamic code");
  26. }
  27. public static void main(String[] args){
  28. new TestStatic();
  29. new TestStatic();
  30. }
  31. static {
  32. System.out.println("Test static code2");
  33. }
  34. }

执行结果:

Test static code1
Test static code2
TestStatic static code1
TestStatic static code2
TestStatic dynamic code
TestStatic Constructor
TestStatic dynamic code
TestStatic Constructor

代码块先于构造方法执行

static 静态代码块 动态代码块 单例的更多相关文章

  1. 【代码笔记】iOS-登陆单例

    一,工程图. 二,代码. UserInfo.h #import <Foundation/Foundation.h> @interface UserInfo : NSObject + (id ...

  2. Java静态变量的用法:伪单例

    这几天遇到一个问题,一个Service里有一个map,但是这个Service有别的继承,于是每一个Service都会创建一个map,但是这个map应该是公用的,于是就有问题了...(按结构说Servi ...

  3. Unity3d Static 静态批处理和动态批处理

    表示物体时静态的,多用于静止不动的物体,此外static有多种,有的用于烘焙,有的用于遮挡剔除 物理效果是rigidbody组件,和这个没关系,用transform.Translate 无法移动,因为 ...

  4. 由阿里巴巴一道笔试题看Java静态代码块、静态函数、动态代码块、构造函数等的执行顺序

    一.阿里巴巴笔试题: public class Test { public static int k = 0; public static Test t1 = new Test("t1&qu ...

  5. Swift - 代码创建单例

    创建单例的方法 import UIKit //创建一个单例类 class SingleInstance: NSObject { //在单例类中,有一个用来共享数据的数组 var datas = [St ...

  6. Windows静态库和动态库的创建和使用

    偶们在实际的编程开发中,经常会遇到运行时无法找到某个DLL文件或者链接时无法找到某个LIB文件.然后,我们就开始乱GOOGLE一下,然后将VS2005的设置改变一下,或许就Ok了,我们将别人开发的DL ...

  7. Windows静态库和动态库的创建和使用(VS2005)

    偶们在实际的编程开发中,经常会遇到运行时无法找到某个DLL文件或者链接时无法找到某个LIB文件.然后,我们就开始乱GOOGLE一下,然后将VS2005的设置改变一下,或许就Ok了,我们将别人开发的DL ...

  8. 【Java学习笔记之三十】详解Java单例(Singleton)模式

    概念: Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例.饿汉式单例.登记式单例. 单例模式有以下特点: 1.单例类只能有一个实例. 2.单例类必须自己创建 ...

  9. Java 单例(Singleton)模式

    一.什么是单例模式: 单例模式是一种确保了一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.被实例化的类称为单例类. 二.单例模式的特点: 单例类只有一个实例. 单例类必须自行创建自己唯一的 ...

随机推荐

  1. PHP超级全局变量——Session 变量

    PHP session 变量用于存储有关用户会话的信息,或更改用户会话的设置.Session 变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用. PHP Session 变量 当您运行一个 ...

  2. linux 新增挂载新硬盘

    1. 添加磁盘,查看磁盘状况 [root@db1 /]# fdisk -l Disk /dev/sda: 10.7 GB, 10737418240 bytes 255 heads, 63 sector ...

  3. FusionCharts ajax 调用方式

    方式一:setJSONUrl function initChart() {                    var myChart = new FusionCharts("Fusion ...

  4. [Jquery]焦点图轮播效果

    $(function(){    var $next=$(".right");    var $prev=$(".left");    var $list_nu ...

  5. 文本信息“welcome to java programming!”

    import javax.swing.JOptionPanepublic class welcome {public static void main(string[] arg){JOptionPan ...

  6. GCJ 2015-Qualification-B Infinite House of Pancakes 枚举,思路,误区 难度:3

    https://code.google.com/codejam/contest/6224486/dashboard#s=p1 题目不难,教训记终生 题目给了我们两种操作:1 所有人都吃一个,简记为消除 ...

  7. convert2Mp4 code snippet

    #pragma mark - helper - (NSURL *)convert2Mp4:(NSURL *)movUrl { NSURL *mp4Url = nil; AVURLAsset *avAs ...

  8. C-union的使用

    union有两个作用: 1,节约空间,如果一个struct存在两个互斥的变量,则可以把这个struct变成union 2,将同一个内存作为多种解释 代码: #include <iostream& ...

  9. java static

    一. static代表着什么 在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个“伪全局”的概念,在Java中static表示“全局”或者“静态”的意思,用来修饰成员变量和成员 ...

  10. 大开眼界 游览Facebook香港办公室

    想加入Facebook 的话不一定要跑去美国,Facebook在香港也开了一个很赞的办公室.除了无敌海景外,更可享用按摩椅.乒乓球桌.跑步机.麻将桌.酒廊.育婴室及开放式厨房.