一、说明

static属于一种修饰符,可以用于修饰 属性、方法、初始化块、内部类
用static修饰的成员,称为静态成员
不用static修饰的成员,称为普通成员

二、静态属性的特点

1、生命周期

静态属性随着类的加载而加载,随着类的消亡而消亡。生命周期较长
普通属性随着对象的创建而加载,随着对象的消亡而消亡。生命周期较短

2、加载次数

静态属性只加载一次!在内存中只有一份!
普通属性可以加载多次!在内存中可以有多份!

3、存储位置

静态属性存储在方法区
普通属性存储在堆

4、【应用】

静态属性被所有对象共享的,其中一个对象对其更改,影响另一个对象。
普通属性被对象所独享的,其中一个对象对其更改,不影响另一个对象。

5、调用

静态属性和对象无关,所以又称为类属性,可以通过类名直接调用的
普通属性和对象有关,所以又称为实例属性,只能通过对象调用

6、什么时候将属性设计成静态属性?

当所有对象共享该属性,则可以将属性设计成静态的
比如:圆周率、利率

三、静态方法的特点

1、静态方法和普通方法一样都是当类加载时,将方法信息加载到方法区。

静态方法中没有this参数
普通方法中需要有this参数

2、谁能调用?

静态方法可以直接通过类名调用
普通方法必须通过对象调用,因为需要隐式的将对象传递给this

3、方法内可以调用谁?

静态方法中只能直接调用静态成员,不能直接调用普通成员
普通方法中可以直接调用静态成员和普通成员

4、静态方法中不能使用this和super

5、静态方法没有重写之说

四、总结

1、静态成员都是随着类的加载而加载,而且只加载一次
2、静态成员在内存中只有一份
3、静态成员都和对象无关,可以直接通过类名调用
4、静态成员中只能直接访问静态成员,不能直接访问普通成员!(静态属性除外)
5、调用静态成员时,会触发类的加载

【补充】类的加载时机:

1、创建对象
2、调用静态成员
3、加载子类时
4、反射

JavaSE基础知识(5)—面向对象(5.6 static关键字)的更多相关文章

  1. JavaSE基础知识总结

    最近回顾了一下Java的基础知识,决定写成博客梳理一遍,主要是JavaSE部分最基础的知识,适合考前突击,学后回顾,不适合作为初学材料. 简单的列个目录吧: 一.数据类型和运算符 二.流程控制与数组 ...

  2. C#基础知识之面向对象以及面向对象的三大特性

    在C#基础知识之类和结构体中我详细记录了类.类成员.重载.重写.继承等知识总结.这里就记录一下对面向对象和面向对象三大特性的广义理解. 一.理解面向对象 类是面向对象编程的基本单元,面向对象思想其实就 ...

  3. JavaSE 基础知识(常识概念 + 基础语法)问答总结/面试题 —— 讲给应届生的 Java 开源知识项目

    写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...

  4. javascript的基础知识及面向对象和原型属性

    自己总结一下javascript的基础知识,希望对大家有用,也希望大家来拍砖,毕竟是个人的理解啊 1.1 类型检查:typeof(验证数据类型是:string) var num = 123; cons ...

  5. C# 篇基础知识3——面向对象编程

    面向过程的结构化编程,例如1972年美国贝尔研究所推出的C语言,这类编程方式重点放在在定函数上,将较大任务分解成若干小任务,每个小任务由函数实现,分而治之的思想,然而随着软件规模的不断扩张,软件的复杂 ...

  6. JAVA基础知识之面向对象编程知识汇总

    JAVA基础课程部分面向对象已经学习完成,知识结构如下: 总体知识框架: 类的结构: 面向对象编程三大特征: 关键字和抽象类接口等: 常见知识汇总: 成员变量和局部变量比较 有无返回值方法比较: 权限 ...

  7. 面向对象编程(七)——Static关键字

    Static变量

  8. Java基础学习总结(10)——static关键字

    一.static关键字 原来一个类里面的成员变量,每new一个对象,这个对象就有一份自己的成员变量,因为这些成员变量都不是静态成员变量.对于static成员变量来说,这个成员变量只有一份,而且这一份是 ...

  9. JavaSE基础知识(5)—面向对象(抽象类和接口)

    一.抽象类 1.理解 用abstract关键字定义的类,称为抽象类用abstract关键字定义的方法,称为抽象方法意义:当设计父类时,发现该父类根本不需要创建对象,并且里面有不好描述的方法.这个时候往 ...

随机推荐

  1. kubenetes服务发现

    一.基于 iptables 的 Service 实现 Pod的ip地址不是固定了.Service通过selector属性和后端Pod关联,被selector选中的Pod被称为Service的Endpo ...

  2. 将自己的SpringBoot应用打包发布到Linux下Docker中

    目录 将自己的SpringBoot应用打包发布到Linux下Docker中 1. 环境介绍 2. 开始前的准备 2.1 开启docker远程连接 2.2 新建SpringBoot项目 3. 开始构建我 ...

  3. 彻底搞懂Scrapy的中间件(二)

    在上一篇文章中介绍了下载器中间件的一些简单应用,现在再来通过案例说说如何使用下载器中间件集成Selenium.重试和处理请求异常. 在中间件中集成Selenium 对于一些很麻烦的异步加载页面,手动寻 ...

  4. eclipse启动tomcat访问http://localhost:8080 报404错误

    eclipse正常启动tomcat,但是 访问http://localhost:8080 却报404错误 修改下配置 就好操作如下图 打开eclipse的server视图,双击配置好的那个tomcat ...

  5. xml模块学习

    import xml.etree.ElementTree as ET tree = ET.parse("xmltest.xml") root = tree.getroot() pr ...

  6. jsonp现实跨域Ajax CORS

    浏览器有一个很重要的概念——同源策略(Same-Origin Policy).所谓同源是指,域名,协议,端口相同.不同源的客户端脚本(javascript.ActionScript)在没明确授权的情况 ...

  7. Django 请求类型

    // GET请求request.GET // POST请求request.POST // 处理文件上传请求request.FILES // 处理如checkbox等多选 接受列表request.get ...

  8. 统计不同渠道的的UV,再合计渠道总计UV

    ( SELECT `统计时间`, `贷款公司名称`, `推广员姓名`, UV FROM ac_statistics WHERE `贷款公司名称` = "金腰袋" AND `统计时间 ...

  9. VC使用双缓冲制作绘图控件

    最近用VC做了一个画图的控件.控件在使用的时候遇到点问题.在控件里画了图之后切换到其他页面,等再切换回来的时候,发现控件里画的图都不见了.这是因为VC里面,当缩小.遮挡页面后客户区域就会失效,当再次显 ...

  10. Java学习--数组--判断数组中是否包含某个元素的方法

    package zaLearnpackage; import org.apache.commons.lang3.ArrayUtils; import java.util.Arrays; import ...