1、修饰成员变量

  在一个person类中,一个成员变量例如 String name,当new2个person()对象时候,这2个对象在堆的位置是不同的,给name赋值张三、李四,这两个对象的name是互相不影响的。

  当用static修饰时,例如static String name,这个变量是存在静态区,被堆中的对象所共享。如果依次赋值给2个对象name张三、李四。最终2个对象的name为李四(因为后一次的赋值在静态区中将前一次的赋值覆盖);


该修饰只会在特定情况下使用,例如给一个数量统计count一个初始化值0,后续根据代码逻辑增加。可以修饰为例如:private static int count=0;

2、修饰成员方法

  static修饰方法后,最大的作用就是可以"类名.方法名"调用该方法。但是在实际开发中也少用到该方式,因为一是static修饰后的方法资源共享,在多线程场景不安全。二是静态资源常驻内存,很难被回收;

  static方法也是没有this的方法,this代表当前对象。而static方法不需要对象;
  主要用在没有创建对象的时候调用方法/变量;

  扩展:
  构造器是静态方法么?
  构造器中可以有"this",并且当创建对象时必须new Person();此时用到了构造器。而static方法没有this,也不属于任何对象,并且构造器也不是方法。所以构造器不是静态方法;

3、静态块

  static修饰静态块后,将要修饰的成员同一放在一个static中。该静态化会在第一次使用类时,最先初始化static修饰的静态块。并且在程序运行过程中,只需要初始化一次,不会进行多次初始化;



  输出结果:
  animal staticcat staticanimal constructor
  cat constructor
  加载顺序:首先运行main方法,但是在运行main方法之前会先加载类,发现Test继承Base类,所有先加载Base类,再加载Test类。加载类的时候运行静态代码块,所以依次输出animal static、cat static。加载完类后执行main方法,创建对象new Cat(),执行构造器,先执行父类,再执行子类,则依次输出animal constructor、cat constructor。(构造器在new对象后才会去初始化)

4、静态导包

  静态导包指在导入包前用static修饰,作用是当使用静态导包后,引用导入类的方法(变量)时,可以不用XXX=类名.方法,直接XXX=方法();(变量也是一样);
但是有一个缺点,如果频繁使用静态导包,会降低代码可读性。并且如果导入的不同类有相同方法名(或变量名),可能会冲突。

参考文章:https://www.cnblogs.com/dolphin0520/p/3799052.html

       https://www.cnblogs.com/dotgua/p/6354151.html?utm_source=itdadao&utm_medium=referral
       http://blog.csdn.net/qq_17864929/article/details/48006835

浅谈static关键字的四种用法的更多相关文章

  1. 【转载】java static 关键字的四种用法

    原文链接点这里,感谢博主分享 在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构 ...

  2. [java]static关键字的四种用法

    在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们先来了解一下stat ...

  3. Static 关键字的 5 种用法,你会几种?

    );                      System.out.println(Thread.currentThread().getName()                         ...

  4. 浅谈Static关键字

    1.使用static关键字声明的属性为全局属性 未使用static关键字指定city之前,如果需要将Tom,Jack,Mary三人的城市均改成Beijing,需要再次声明三次对象的city为Beiji ...

  5. C# this关键字的四种用法

    Go to below URL to find more details and example. http://blog.csdn.net/longlong821/article/details/7 ...

  6. C# this关键字的四种用法(转)

    用法一  this代表当前类的实例对象 namespace Demo { public class Test { private string scope = "全局变量"; pu ...

  7. C#中 this关键字 四种用法

    /// <summary> /// 主程序入口 /// </summary> /// <param name="args"></param ...

  8. 【转载】java final 关键字的几种用法

    原文链接点这里,感谢博主分享 在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构 ...

  9. [java]final关键字的几种用法

    在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们来了解一下final ...

随机推荐

  1. 7A - Max Sum

    Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum of a sub-sequence. F ...

  2. 博客七----tensorflow-gpu安装满满填坑

    具体内容见我的开源中国教程:https://my.oschina.net/u/3770644/blog/3043073 因为编写习惯原因,我的大多数详细教程在开源中国中.有兴趣的大家打开连接就好 强调 ...

  3. HTML与盒模型

    EC前端 - HTML教程 HTML与盒模型 HTML结构 <!doctype html> <html> <head> <meta charset=" ...

  4. 安装jdk1.8导致eclipse显示问题

    安装jdk1.8后新建workspace(mars)后eclipse的toolbar和主题显示有问题 例如: 修改步骤 1.设置主题window->Preferences->General ...

  5. Python中logging日志模块的使用

    参考https://www.cnblogs.com/CJOKER/p/8295272.html

  6. SQL视图命名规则:一般以V_xxx_xxxxxx

  7. 字典 Dictionary

    字典 Dictionary {Key-Value} 1.字典是无序的,没有下标(因为有key,取值直接用key值) Key尽量不要用中文编写,以防止编码不同导致取不出来 2.字典常用方法: 查找: ① ...

  8. 1 - IO

    IO流第二天 今日内容 字节流 字符流 字节流 在前面的学习过程中,我们一直都是在操作文件或者文件夹,并没有给文件中写任何数据.现在我们就要开始给文件中写数据,或者读取文件中的数据 字节输出流Outp ...

  9. 初入pygame——贪吃蛇

    一.问题利用pygame进行游戏的编写,做一些简单的游戏比如贪吃蛇,连连看等,后期做完会把代码托管. 二.解决 1.环境配置 python提供一个pygame的库来进行游戏的编写.首先是安装pygam ...

  10. windows 多网卡路由设置

    1.问题 windows操作系统,双网卡连接内外网,配置路由使内网请求走内网网卡,外网请求走外网网卡 2.网络参数 内网网卡 IP:172.22.25.152 mask: 255.255.255.0 ...