4. static修饰符
一、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修饰符的更多相关文章
- static修饰符
static修饰符表示静态的,可修饰字段.方法.内部类,其修饰的成员属于类,也就是说static修饰的资源属于类级别,而不是对象级别. static的正真作用:用来区别字段,方法,内部类,初始化代码块 ...
- java final .static修饰符
static静态修饰符(使用static修饰符修饰的成员变量.常量.和成员方法成为静态变量.常量和方法,他们统称为静态成员,归整个类所有,不依赖于类的特定实例,被类的所有实例共享,只要这个类被加载,J ...
- 201671010127 2016-2017-8 回谈static修饰符
上周学了泛型程序程序设计技术,再一次接触到了静态方法,那么今天就来谈一下static修饰符. static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块, ...
- C# Static修饰符的作用
MSDN上的定义 Use the static modifier to declare a static member, which belongs to the type itself rather ...
- Java static修饰符
Java static修饰符 static修饰符是静态修饰符,大家写Java第一次接触static就是主函数中的pubic static void main的声明了. 那么static有什么用?本文来 ...
- java学习笔记12(final ,static修饰符)
final: 意思是最终的,是一个修饰符,有时候一个功能类被开发好了,不想被子类重写就用final定义, 用final修饰的最终数据成员:如果一个类的数据成员用final修饰符修饰,则这个数据成员就被 ...
- Java中的Static修饰符
static(静态.修饰符):static修饰成员变量时:static修饰成员变量时,那么该成员变量的数据就是一个共享的数据. 静态成员变量的访问方式:方式一: 使用对象进行访问. 对象.属性名 方式 ...
- static修饰符详解
static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...
- C语言中static修饰符的意义
在C语言中,static通常有2种含义:1)定义变量的生命周期:2)定义变量或者函数的作用域. 变量的生命周期是指,相对于程序运行的进程生命周期,变量存在的时间段.变量的生命周期由变量的存储类型(位置 ...
随机推荐
- Data Management Technology(2) -- Data Model
1.Data Model Model Is the abstraction of real world Reveal the essence of objects, help people to lo ...
- 【课件】git零基础快速入门实战--重点讲解,在实际生产中整合idea对版本、分支的管理等
1.git简单描述 git是重要的版本管理工具,几乎每个码农都有自己的git账号管理自己的代码,同时很多公司也是用git管理公司的代码, 因此掌握git在实际生产中的常规使用非常重要. 2.git学习 ...
- oracle表空间相关统计查询
部分转自 https://www.cnblogs.com/xwdreamer/p/3511047.html--查询表空间使用情况SELECT UPPER(F.TABLESPACE_NAME) &quo ...
- 2-3 远程管理命令-SSH工作方式简介
03.远程登录和复制文件 序号 命令 对应英文 作用 01 ssh 用户名@ip secure shell 关机/重启 02 scp 用户名@ip:用户名或路径 用户名@ip:文件名或路径 secur ...
- Druid-代码段-4-3
所属文章:池化技术(一)Druid是如何管理数据库连接的? 本代码段对应流程4.2,防止内存泄漏的连接关闭检测: //回收长期未归还的连接(再次说明:该方法仅在removeAbandoned设置为tr ...
- flask框架--设置配置文件的几种方式 与Flask两种配置路由的方式
设置配置文件的几种方式 ==========方式一:============ app.config['SESSION_COOKIE_NAME'] = 'session_lvning' #这种方式要把所 ...
- navicat使用教程-PJ
navicat使用教程-PJ Navicat Keygen Patch是一款专门针对Navicat系列软件出品的一款小巧实用,功能强大的破解辅助工具.它能够实现对Navicat全系列版本进行激活破解, ...
- Web自动化测试Selenium 学习笔记(一)
1.Web自动化测试简介自动化基础:自动化用例编写.Selenium优势及原理.自动化环境搭建Selenium基础:常见8大元素定位(表格).常见元素处理.下拉框元素处理.不同窗口切换.元素进阶.元素 ...
- php strlen和mb_strlen
结果: 结论:如果没有中文,尽量使用strlen
- leetcode一刷总结,明天二刷
1:基础的数据结构:图掌握极差,二叉树次之 2:常用的算法思想:dp,深度有先,广度优先等等. 3:优化以解决的题目,注意思想的总结 4:将约150道题都刷掉 5:优先解决设计算法思想的题目类别,其次 ...