一、static定义

  static是静态修饰符意思,什么叫静态修饰符呢?大家都知道,在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序退出内存才会释放这个空间,也就是只要程序在运行,那么这块内存就会一直存在。这样做有什么意义呢?
在Java程序里面,万物皆对象,而对象的抽象就是类,对于一个类而言,如果要使用他的成员,那么普通情况下必须先实例化对象后,通过对象的引用才能够访问这些成员,但是有种情况例外,就是该成员是用static声明的。

static声明的静态变量可以直接通过类名调用!

 class Demo{
public static void main(String[] args)
{
Person p = new Person();
System.out.println(p.country); //1、新建对象调用
System.out.println(Person.country); //2、通过类名直接调用
}
}
class Person{
static String country = "china";
}

二、static特点

由此我们得出static的特点。

a、static是一个修饰符,用于修饰成员。

b、static修饰的成员被所有的对象共享。

c、static优先于对象存在,static成员随着类的加载就已经存在。

d、static修饰成员多一种调用方式--通过类名调用。

三、成员变量和静态变量区别?

1.两个变量的生命周期同

  成员变量随对象创建存在,随对象回收而释放。

  静态变量随类的加载而存在,同样也随着类而消失。

2、调用方式

  成员变量只能被对象调用。

  静态变量能被对象调用,还可以被类名调用。

3、内存中存储位置不同。

  成员变量存储在堆内存中。

  静态变量存储在方法区(共享数据区)的静态区。

四、静态使用注意事项

1、静态方法只能访问静态成员。

2、静态方法中不可以用this或super关键字。

3、主函数都是静态的。

class Demo{
public static void main(String[] args)
{
Person.show();
}
}
class Person{
static String country = "china";
  String name = "jinfulin";
public static void show()
{
System.out.print(country); //正确
//System.out.print(name); //错误
}
}

五、什么时候使用静态?

1、静态成员

  分析对象中所有的成员变量的值都是相同的。

2、静态函数

  不需要初始化就能直接访问(该函数没有访问到类的特有数据)。

  还是上面那个人的例子,下面这个show方法没有调用特有数据,所以定义成静态的更好。

class Demo{
public static void main(String[] args)
{
Person.show();
}
}
class Person{
static String country = "china";
String name = "jinfulin";
public static void show()
{
System.out.print("哈哈~");
}
}

六、特殊用法--静态代码块

随着类的加载而执行,而且只执行一次。

作用:用于类的初始化。

class Demo{
public static void main(String[] args)
{
new Person().show();
new Person().show();
}
}
class Person{
static
{
System.out.println("haha....");
}
void show()
{
System.out.println("哈哈~");
}
}

如上:结果为一次haha,两次哈哈

ps:在执行顺序上,静态代码块>构造代码块>构造函数

最后,以上就是java中static的用法,static不仅上编程时候难理解的地方,也是面试爱考的地方,以后我们的学习必定要更加的细化,不仅要明白如何做出,还要知道如何做好。

详解java中staitc关键字的更多相关文章

  1. 干货——详解Java中的关键字

    在平时编码中,我们可能只注意了这些static,final,volatile等关键字的使用,忽略了他们的细节,更深层次的意义. 本文总结了Java中所有常见的关键字以及一些例子. static 关键字 ...

  2. 详解详解Java中static关键字和final关键字的功能

    摘要:static关键字和final关键字是Java语言的核心,深入理解他们的功能非常重要. 本文分享自华为云社区<Java: static关键字与final关键字>,原文作者:唐里 . ...

  3. 详解Java中的clone方法

    详解Java中的clone方法 参考:http://blog.csdn.net/zhangjg_blog/article/details/18369201/ 所谓的复制对象,首先要分配一个和源对象同样 ...

  4. 详解Java中的final关键字

    本文原文地址:https://jiang-hao.com/articles/2019/coding-java-final-keyword.html1 final 简介2 final关键字可用于多个场景 ...

  5. 从缓存入门到并发编程三要素详解 Java中 volatile 、final 等关键字解析案例

    引入高速缓存概念 在计算机在执行程序时,以指令为单位来执行,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入. 由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这 ...

  6. 【Java学习笔记之三十三】详解Java中try,catch,finally的用法及分析

    这一篇我们将会介绍java中try,catch,finally的用法 以下先给出try,catch用法: try { //需要被检测的异常代码 } catch(Exception e) { //异常处 ...

  7. 详解Java中的字符串

    字符串常量池详解 在深入学习字符串类之前, 我们先搞懂JVM是怎样处理新生字符串的. 当你知道字符串的初始化细节后, 再去写String s = "hello"或String s ...

  8. 详解Java中的Object.getClass()方法

    详解Object.getClass()方法,这个方法的返回值是Class类型,Class c = obj.getClass(); 通过对象c,我们可以获取该对象的所有成员方法,每个成员方法都是一个Me ...

  9. 详解Java中的访问控制修饰符(public, protected, default, private)

    Java中的访问控制修饰符已经困惑笔者多时,其中较复杂的情况一直不能理解透彻.今天下定决心,系统.全面地研究Java中的访问控制修饰符的所有方面,并整理成这篇文章,希望有同样疑惑的读者读完后能有所收获 ...

随机推荐

  1. Django初识二

    1,在django中用于提交的form表单中的三要素: 1.1>form标签要有action和method,上传文件需要额外指定的enctype 1.2>获取用户输入的标签要有name属性 ...

  2. hdu-4118 Holiday's Accommodation(树形dp+树的重心)

    题目链接: Holiday's Accommodation Time Limit: 8000/4000 MS (Java/Others)     Memory Limit: 200000/200000 ...

  3. 并不对劲的bzoj2820:p2257:YY的GCD

    题目大意 \(t\)(\(t\leq10^4\))组数据,给定\(n,m\)(\(n,m\leq10^6\))求 \[\sum_{x=1}^{n}\sum_{y=1}^{m}[gcd(x,y)=1]\ ...

  4. softmax regression in c++

    #include <iostream>#include <vector>#include <cmath>#include <algorithm>#inc ...

  5. P5068 [Ynoi2015]我回来了

    传送门 解锁成就:ynoi的题目都做到过原题 因为\(n\)很小,我们可以用\(sss[u][i]\)表示到点\(u\)的距离不超过\(i\)的点的集合,这个可以用bitset存,然后先一遍bfs,再 ...

  6. jquery的validate的用法

    //引入js文件 //jquery 文件 <script src="__PUBLIC__/static/wap/js/jquery.min.js?v=2.1.4">&l ...

  7. WFS1.1.0协议(增删改查)+openlayers4.3.1前端构建+geoserver2.15.1安装部署+shpfile数据源配置

    WFS简介 1.WFS即,Web要素服务,全称WebFeatureService.GIS下,支持对地理要素的插入,更新,删除,检索和发现服务. 2.属于OGC标准下的通信协议.OGC标准下的GIS服务 ...

  8. 采购发票检验MIRO差异科目设置

    采购订单发票检验时,最终的金额可能跟采购订单的价格不一样,对于这部分差异,系统提供了后台配置科目的方式. 配置科目可通过OBYC,在BSX存货差异配置相关评估类型对应科目. 当库存商品少于采购订单数量 ...

  9. 【同步工具类】CountDownLatch

    闭锁是一种同步工具类,可以延迟线程的进度直到其达到终止状态. 作用:相当于一扇门,在到达结束状态之前,这扇门一直是关闭的,并且没有任务线程能够通过,当到达结束状态时,这扇门会打开并允许所有的线程通过, ...

  10. java 继承还是组合

    1.我真的需要上溯转型(upcasting)吗? 如果是,才会用到继承. 2.