一、static修饰符概述

1. static修饰的成员表明它属于这个类本身,而不属于该类的单个实例

  • 把static修饰的成员变量和方法称为类变量、类方法

2. 不使用static修饰的成员则属于该类的单个实例,而不属于该类

  • 把不使用static修饰的成员变量和方法称为实例变量、实例方法

笔记:static的真正作用就是区分成员变量、方法、内部类、初始化块这四种成员到底属于类本身还是属于实例。

二、调用static成员

1. 不使用static修饰的成员,只可通过实例来调用

2. static修饰的成员,既可通过类来调用,也可通过实例来调用,但应尽量使用类来调用static成员

  • static修饰的成员属于类本身(而不属于该类的实例),那么就不应该允许使用实例来调用static成员(实际上允许)
  • 使用该类的任何实例来调用同一个static成员都将得到相同的执行结果,这是因为static成员属于类本身,那么底层依然是使用这些实例所属的类作为调用者
  • 如果看到使用实例来调用static成员的情形,则完全可以把这种用法当成假象,将其替换成用类来调用static成员的代码

三、静态成员不能直接访问非静态成员

  静态方法中不能使用this,因为静态方法是由类来调用的,所以在静态方法中,this将无法指向合适的对象。所以静态方法不能访问非静态(不使用static修饰的)成员,即静态成员不能直接访问非静态成员。

  类成员(包括方法、初始化块、内部类和枚举类)不能访问实例成员(包括成员变量、方法、、初始化块、内部类和枚举类),因为类成员是属于类的,类成员的作用域比实例成员的作用域更大,完全可能出现类成员已经初始化,但实例成员还不曾初始化的情况,如果允许类成员访问实例成员将会引起大量错误。

4. static修饰符的更多相关文章

  1. static修饰符

    static修饰符表示静态的,可修饰字段.方法.内部类,其修饰的成员属于类,也就是说static修饰的资源属于类级别,而不是对象级别. static的正真作用:用来区别字段,方法,内部类,初始化代码块 ...

  2. java final .static修饰符

    static静态修饰符(使用static修饰符修饰的成员变量.常量.和成员方法成为静态变量.常量和方法,他们统称为静态成员,归整个类所有,不依赖于类的特定实例,被类的所有实例共享,只要这个类被加载,J ...

  3. 201671010127 2016-2017-8 回谈static修饰符

    上周学了泛型程序程序设计技术,再一次接触到了静态方法,那么今天就来谈一下static修饰符. static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块, ...

  4. C# Static修饰符的作用

    MSDN上的定义 Use the static modifier to declare a static member, which belongs to the type itself rather ...

  5. Java static修饰符

    Java static修饰符 static修饰符是静态修饰符,大家写Java第一次接触static就是主函数中的pubic static void main的声明了. 那么static有什么用?本文来 ...

  6. java学习笔记12(final ,static修饰符)

    final: 意思是最终的,是一个修饰符,有时候一个功能类被开发好了,不想被子类重写就用final定义, 用final修饰的最终数据成员:如果一个类的数据成员用final修饰符修饰,则这个数据成员就被 ...

  7. Java中的Static修饰符

    static(静态.修饰符):static修饰成员变量时:static修饰成员变量时,那么该成员变量的数据就是一个共享的数据. 静态成员变量的访问方式:方式一: 使用对象进行访问. 对象.属性名 方式 ...

  8. static修饰符详解

    static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...

  9. C语言中static修饰符的意义

    在C语言中,static通常有2种含义:1)定义变量的生命周期:2)定义变量或者函数的作用域. 变量的生命周期是指,相对于程序运行的进程生命周期,变量存在的时间段.变量的生命周期由变量的存储类型(位置 ...

随机推荐

  1. 中间人攻击,HTTPS也可以被碾压

    摘要: 当年12306竟然要自己安装证书... 原文:知道所有道理,真的可以为所欲为 公众号:可乐 Fundebug经授权转载,版权归原作者所有. 一.什么是MITM 中间人攻击(man-in-the ...

  2. 图像处理&计算机视觉中upscale,downscale的翻译理解

    最近在看SAN网络(Second-order Attention Network for Single Image Super-Resolution)的论文,其中的Upscale module理解的不 ...

  3. FFT/NTT初探

    做了全家桶然后写了几道入门题. FFT.ref NTT.ref Luogu4238 [模板]多项式求逆 Link 套牛顿迭代完事.有一个细节问题是:这次运算多项式有几项就只赋几项的值,其他位置(次数大 ...

  4. day_93_11_25爬虫一requests,项目框架

    总结 nginx反向代理与正向代理. 正向带里就是,客户端通过中转服务器,访问其它他服务器的数据. 反向代理就是用户访问中转服务器,看起来就像和这台服务器交互一样. nginx动静分离. 当客户端访问 ...

  5. javaee和javase的区别

    JavaEE是指Java Enterprise Edition,Java企业版,多用于企业级开发,包括web开发等等.也叫J2EE. JavaSE通常是指Java Standard Edition,J ...

  6. 使用VMware Workstation Player虚拟机安装Linux系统

    下载安装 VMware Workstation Player 首先下载并安装 VMware Workstation Player, VMware Workstation是一款非常强大的虚拟机软件,有p ...

  7. SQL查询--内连接、外连接、自连接查询

    先创建2个表:学生表和教师表   1.内连接: 在每个表中找出符合条件的共有记录.[x inner join y on...] 第一种写法:只用where SELECT t.TEACHER_NAME, ...

  8. SQL查询--索引

    索引概念和作用 索引是建立在表上的可选对象,目的是为了提高查询速度. 如果要在表中查询指定的记录,在没有索引的情况下,必须遍历整个表,而有了索引之后,只需要在索引中找到符合查询条件的索引字段值,就可以 ...

  9. 【ECNU71】一个游戏(水题)

    点此看题面 大致题意: \(n\)种元素,有若干组将\(x\)元素转化为\(y\)元素的操作.问对于所有可能的元素拥有状况,改变转化操作的顺序,是否会影响转化后最终的结果. 水题 虽说是这么水的题,但 ...

  10. HTTP系列之Referer和Referrer policy简介

    目录 @ 1.前言摘要 在csdn网站随便抓个链接来看看: Referer参数: referrer policy是unsafe url的,ok,下面介绍一下Referer和referrer polic ...