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

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

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

简单单例模式

package weiguoyuan.chainunicom.cn;

class Single{
private static Single only = new Single();//private 封装 以免外界操作 static 只有一个
private Single(){}//外界不可以new 来访问构造函数
public static Single getOnly(){//public 外界访问口 static 才能由外界通过类名直接访问
return only;
}
}
public class TestSingle { public static void main(String[] args) {
Single s1 = Single.getOnly();
Single s2 = Single.getOnly();
System.out.println(s1==s2);
}
}

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

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPoolConfig; import com.wandoulabs.jodis.JedisResourcePool;
import com.wandoulabs.jodis.RoundRobinJedisPool; public class GetJedis{
private static JedisResourcePool jedisPool = new RoundRobinJedisPool("192.168.253.128:2181",
30000, "/zk/codis/db_test/proxy", new JedisPoolConfig());
public static Jedis getJedis(){
return jedisPool.getResource();
}
}
   //获得jedis连接
Jedis jedis = GetJedis.getJedis();

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

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

package weiguoyuan.chainunicom.cn;

public class TestStatic {
static {
System.out.println("TestStatic static code1");
}
public TestStatic(){
}
public TestStatic(int i){
System.out.println("TestStatic Constructor");
}
{
System.out.println("TestStatic dynamic code");
}
static {
System.out.println("TestStatic static code2");
} }
class Test {
static {
System.out.println("Test static code1");
}
{
System.out.println("Test dynamic code");
}
public static void main(String[] args){
new TestStatic();
new TestStatic();
}
static {
System.out.println("Test static code2");
}
}

执行结果:

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. Huffman树与编码的简单实现

    好久没写代码了,这个是一个朋友问的要C实现,由于不会C,就用JAVA写了个简单的.注释掉的代码属性按照原来朋友发的题里带的参数,发现没什么用就给注释掉了. package other; import ...

  2. java入门第一步之完成jdk的安装(window)【转】

    为了面向更多的人类,我决定重温我的java起步: 要进行java开发第一步就是进行java环境的安装,也就是jdk的按装: 1.由于java被oracle收购了,我们下载jdk也就去oracle的官网 ...

  3. 关于php用simplexml_load_string解析xml出现乱码的小结

    最近在做项目时需要通过xml接口读取合作伙伴数据到数据库,在xml解析环节出现有些特殊中文字符乱码的现象.后采取下面的办法终于解决. 1.curl 抓取过来的字符是unicode编码,需要先转换为ut ...

  4. Graphical installers are not supported by the vm

    http://www-01.ibm.com/support/docview.wss?uid=swg21462180 Technote (troubleshooting) Problem(Abstrac ...

  5. 百度上传android包:应用名解析失败!

    manifest 里面<application增加android:label="@string/app_name"

  6. 警卫安排(dp好题)

    警卫安排(guard)[题目描述]一个重要的基地被分为 n 个连通的区域.出于某种神秘的原因,这些区域以一个区域为核心,呈一颗树形分布.在每个区域安排警卫所需要的费用是不同的,而每个区域的警卫都可以望 ...

  7. js字符转换成整型 parseInt()函数规程Number()函数

    今天在做一个js加法的时候,忘记将字符转换成整型,导致将加号认为是连接符,  在运算前要先对字符井行类型转换,使用parseInt()函数   使用Number()将字符转换成int型效果更好

  8. Xlistview的values下的界面

    <!-- 下拉刷新,上拉加载更多 -->    <string name="xlistview_header_hint_normal">下拉刷新</s ...

  9. C语言中输入输出函数

    1.1.1 格式化输入输出函数Turbo C2.0 标准库提供了两个控制台格式化输入. 输出函数printf() 和scanf(), 这两个函数可以在标准输入输出设备上以各种不同的格式读写数据.pri ...

  10. Apache Qpid Python 1.35.0 发布

    Apache Qpid Python 1.35.0 发布了,Apache Qpid (Open Source AMQP Messaging) 是一个跨平台的企业通讯解决方案,实现了高级消息队列协议.提 ...