美文网首页
Java基础19-static关键字

Java基础19-static关键字

作者: Tian_Peng | 来源:发表于2019-10-18 17:11 被阅读0次

概述

在Java语言中,static表示“静态”的意思,使用场景可以用来修饰成员变量和成员方法,当然也可以是静态代码块。static的主要作用在于创建独立于具体对象的域变量或者方法。
原文连接:http://baijiahao.baidu.com/s?id=1601254463089390982&wfr=spider&for=pc

static解决什么问题

我们知道,当我们通过new关键字去创建对象的时候,那么数据的存储空间才会被分配,类中的成员方法才能被对象所使用。但是呢有两种特殊的情况:

  • 我们通过new关键字创建的对象共享同一个资源,而不是说每个对象都拥有自己的数据,或者说根本就不需要去创建对象,这个资源和对象之间是没有关系的。
  • 希望某个方法不与包含它的类的任何对象联系在一起。总结下来就是说:即使没有创建对象,也能使用属性和调用方法。

static目的就是在于解决这个问题。

格式

修饰变量:static 数据类型 变量名
修饰方法:[访问权限修饰符] static 方法返回值 方法名(参数列表)

特点

static可以修饰变量、方法。
被static修饰的变量或者方法是独立于该类的任何对象,也就是说,这些变量和方法不属于任何一个实例对象,而是被类的实例对象所共享。
在类被加载的时候,就会去加载被static修饰的部分。
被static修饰的变量或者方法是优先于对象存在的,也就是说当一个类加载完毕之后,即便没有创建对象,也可以去访问。

静态变量

被static修饰的成员变量叫做静态变量,也叫做类变量。
静态变量是属于这个类的,而不是属于某个具体的对象。
没有被static修饰的成员变量叫做实例变量,这个变量是属于某个具体的对象。

静态变量和实例变量的区别:

  • 实例变量:每次创建对象,都会为每个对象分配成员变量内存空间,实例变量是属于实例对象的,在内存中,创建几次对象,就有几份成员变量。
  • 静态变量:静态变量由于不属于任何实例对象,是属于类的,所以在内存中只会有一份,在类的加载过程中,JVM为静态变量分配一次内存空间。

静态方法

被static修饰的方法也叫做静态方法,因为对于静态方法来说是不属于任何实例对象的,那么就是说在静态方法内部是不能使用this的,因为既然不属于任何对象,那么就更谈不上this了。

static应用场景

如果某个成员变量是被所有对象所共享的,那么这个成员变量就应该定义为静态变量。

static如何去访问

  • 静态变量
    类名.静态变量
    对象.静态变量(不推荐的)
  • 静态方法
    类名.静态方法
    对象.静态方法(不推荐)

这里呢就啰嗦一句,由于被static修饰的变量和方法是不属于任何实例对象的,所以在这里,强烈建议不要通过对象的方式去访问静态的变量或者方法。
static使用注意事项

  • 在静态方法中没有this关键字因为静态是随着类的加载而加载,而this是随着对象的创建而存在的。静态比对象优先存在。
  • 静态可以访问静态的,但是静态不能访问非静态的。
  • 非静态的可以去访问静态的

相关文章

  • Java基础19-static关键字

    概述 在Java语言中,static表示“静态”的意思,使用场景可以用来修饰成员变量和成员方法,当然也可以是静态代...

  • Java基础系列-instanceof关键字

    原创文章,转载请标注出处:《Java基础系列-instanceof关键字》 instanceof关键字是在Java...

  • Java基础语法需要学习哪些知识?

    Java基础语法需要学习哪些知识?Java基础语法内容包含java运行环境、HelloWorld案例、关键字&[h...

  • Java 基础必会知识点

    更详细Java面试请点击这里 Java 基础必会知识点 Java 关键字及功能熟悉 Java 常用关键字的拼写及功...

  • java SE目录

    java SE目录 java基础(一)java基础(二)关键字面向对象(一)面向对象(二)面向对象(三)集合(一)...

  • Java笔记目录

    一、Java基础部分 Java基础部分:关键字汇总[https://www.jianshu.com/p/cc6...

  • Java基础-浅析解决并发的几种方式

    前言 在上一篇中,我们讨论了Java中的关键字volatile和synchronized Java基础-浅谈关键字...

  • Java基础系列-static关键字

    原创文章,转载请标注出处:《Java基础系列-static关键字》 一、概述 static关键字是Java诸多关键...

  • Java编程语言(新版)

    Java 基本语法 2.2 Java 关键字 "const"和"goto"无实际意义 Java 语言基础 2.4....

  • 安卓面试题

    面试题总结 Java基础 1. synchronized关键字 2. synchronized 关键字和 vol...

网友评论

      本文标题:Java基础19-static关键字

      本文链接:https://www.haomeiwen.com/subject/fraimctx.html