在类中定义的数据成为类的数据成员,例如字段,常量等。而函数的成员方法则提供操作类的数据的功能,函数成员方法、属性、构造函数等。对象中的数据成员和方法一般都是对象私有的,即只有对象本身才能访问,其他对象不能直接对其操作。但是,如果在多个地方调用就需要产生多个实例。有些时候被调用的方法与实例的多少没有任何关系,该方法可能只是帮助方法。在这种情况下,不需要多个实例, java 引入了static,先看一个实例:

  1. public static void main(String[] args) {
  2. System.out.println(Math.random());
  3. }

在jdk中Math的random方法的作用是提供一个产生随机数的功能,它只是一个帮助方法,与Math中的实例变量没有任何关系,所以不需要调用一次产生一个实例,只通过类直接调用就可以了,在此JDK中就提供了random这static(静态)方法。

Static 不仅可以修饰方法还可以修饰属性,由于Static 修饰的方法或者属性与实例的多少没有任何的关系,可以理解为static 的方法和属性是可以在多个实例之间共享的。
看以下实例:
  1. public class Text {
  2. static int count=0;
  3. public StaticCount(){
  4. count ++;
  5. }
  6. public static void main(String[] args) {
  7. StaticCount count1 = new StaticCount ();
  8. StaticCount count2 = new StaticCount ();
  9. System.out.println("count="+ count);
  10. }
  11. }

运行结果:count=2

从以上实例可以看出,count1所指向的对象和 count2指向的对象共享了static变量。实际上我们经常提到的入口函数也是个static静态方法,静态方法与实例没有任何的关系,它可以直接调用静态变量。 也可以通过实例的引用调用静态属性或者方法,效果是相同,只是不需要而已。

可以把某段代码直接通过static修饰,看以下实例:

  1. public class Text{
  2. int count;
  3. static {
  4. System.out.println("in the static segment...");
  5. }
  6. public Text (){
  7. System.out.println("in the constuctor segment...");
  8. }
  9. public static void main(String[] args) {
  10. Text sd0 = new Text();
  11. }
  12. }

运行结果:

in the static segment...
in the constuctor segment...
大家注意到,通过static修饰的代码块在构造函数之前就执行了,实际上静态代码块是在程序加载(load)的时候执行的,而构造函数是在运行的时候执行的。静态代码块只加载一次,看以下实例:
  1. public class Text {
  2. static {
  3. System.out.println("in the static segment...");
  4. public Text (){
  5. System.out.println("in the constuctor segment...");
  6. }
  7. public static void main(String[] args) {
  8. Text sd0 = new Text ();
  9. Text sd1 = new Text ();
  10. Text sd2 = new Text ();
  11. }
  12. }
运行结果:
in the static segment...
in the constuctor segment...
in the constuctor segment...
in the constuctor segment...
从运行结果可以看出static 代码只执行了一次,构造函数执行了三次,也就是静态代码块会
在加载的时候执行,而且只执行一次。
本文转自HDDevTeam 51CTO博客,原文链接:http://blog.51cto.com/hddev/629259,如需转载请自行联系原作者

static用法解析---java语言相关推荐

  1. java音频解析_wav音频文件头动态解析--java语言

    之前有处理过一些相对较为不常见的音频格式,也睬过很多坑,这里做一下简单记录.后面可能随着接触音频类型的增多做进一步更新,像之前有记录过包含LIST数据块的wav格式录音就是调试过程中发现遗漏点. 在此 ...

  2. 四种Java线程池用法解析

    四种Java线程池用法解析 本文为大家分析四种Java线程池用法,供大家参考,具体内容如下 http://www.jb51.net/article/81843.htm 1.new Thread的弊端 ...

  3. Java语言Socket接口用法详解

    Socket接口用法详解   在Java中,基于TCP协议实现网络通信的类有两个,在客户端的Socket类和在服务器端的ServerSocket类,ServerSocket类的功能是建立一个Serve ...

  4. java字符替换函数示例_Java字符串替换函数replace()用法解析

    Java字符串替换函数replace()用法解析 这篇文章主要介绍了Java字符串替换函数replace()用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的 ...

  5. Java进阶--static完全解析

    前言 现在深深的感觉到写一篇好的博客十分不容易,static关键字的考点在各种笔试面试中会经常遇到,在写这篇博客之前我也是大量的阅读了相关的文献,争取从全局上对static做一个分析,这里的全局包括J ...

  6. java入门学习笔记(二)—— Eclipse入门学习之快捷键、java语言基础知识之各类关键字及其用法简析

    一.Eclipse入门学习 1. 快捷键 对于一个编辑器,快捷键必不可少,是十分好用且有效的工具. 对于一个初学者,首先掌握了如下快捷键. (很多通用的快捷键不多说) Ctrl + / -- 注释当前 ...

  7. 解析java当中switch语句的作用和break、continue关键字的用法

    解析java当中switch语句的作用和break.continue关键字的用法 A. switch语句 1.含义 是分支结构,使程序按照条件的判断结果去执行相应的程序代码. 2.语法 switch( ...

  8. Java中的static关键字解析 转载

    原文链接:http://www.cnblogs.com/dolphin0520/p/3799052.html Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到 ...

  9. C语言关于static的解析

    C语言关于static的解析 #include<stdio.h> static int j; void fun1(void) { int i = 0; i ++; } void fun2( ...

最新文章

  1. 扁平化职能管理三部曲
  2. 超越halcon速度的二值图像的腐蚀和膨胀,实现目前最快的半径相关类算法(附核心源码)。...
  3. Matplotlib实例教程 | 配色表 colors
  4. 关于RTP和SRT之间的互操作性,你需要了解什么?
  5. Mac OS X 10.10如何打开虚拟内存
  6. JS判断字符串变量是否含有某个字串的方法
  7. 解决asterisk sip呼叫 488 no acceptable here
  8. 深圳市南山区学计算机的视频课程,新手学电脑全套视频教程(1-27集)
  9. mysql where is_MySQL——Where条件子句
  10. 桥接设计模式(Bridge)
  11. 李志民:只修长城不会有真正的安全
  12. EnableViewState详细分析
  13. android 问题-----Please execute 'adb uninstall com.newland.securityclient' in a shell.
  14. java模拟器电脑版怎么安装教程_电脑Java模拟器安装使用教程
  15. 试题2-12:数据库设计与操作
  16. vim的替换字符串的命令
  17. 惠民工程(最小生成树裸题)
  18. 在Home Assistant 添加MariaDB数据库
  19. 基于PHP+小程序(MINA框架)+Mysql数据库的篮球、足球、羽毛球等校园运动场地预约小程序系统设计与实现
  20. AcWing 913. 排队打水 (排序不等式)

热门文章

  1. C++异常实现与longjmp, setjmp,栈指针EBP, Active Record
  2. redis 用setbit(bitmap)统计活跃用户
  3. ZABBIX安装官方指南
  4. maven 强制更新_Android App内部更新Library的方法
  5. java ssh文件下载_Java使用SSH从远程服务器下载文件
  6. python列表元素修改_python – 如何修改列表中列表中的元素
  7. 手机连接服务器传文件在哪里,手机云服务器传文件在哪里
  8. oracle表增加自增主键,Oracle中给已存在的表增加自增主键
  9. oracle 10g搭建dg,oracle 10g dg环境的搭建
  10. 广义hough变换matlab,matlab – 广义Hough R表