一、说明

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. 采用自定义协议代替OCX组件

    事情起源:公司视频播放一直是采用的嵌入浏览器组件实现视频的预览回放等功能.这种实现方式要求客户使用IE浏览器. 最近上线项目使用Html 5开发,要求IE11.项目中使用了视频播放功能,如果全部升级到 ...

  2. mysql双机热备的实现

    转:http://blog.csdn.net/qq394829044/article/details/53203645 Mysql数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题.还好 ...

  3. Java垃圾回收(整理)

    Java垃圾回收 Garbage Collection:GC: 什么样的对象才是垃圾?怎样判断一个对象引用是不是垃圾? 垃圾回收算法:Mark-Sweep(标记-清除)算法,Copying(复制)算法 ...

  4. Postman 设置全局变量和环境变量设置(之 图形界面设置变量)

    在Postman中有两种方法添加变量:1.图形界面操作添加   2.执行代码添加 1.图形界面操作添加,点击右上角齿轮按钮手动添加所需测试环境:   2.点击右上角的小眼睛可以编辑.添加“全局变量”和 ...

  5. Nginx 负载配置

    简版的,详细参数需要自己微调. nginx.conf http{ upstream name { server 127.0.0.1:8777; server 127.0.0.1:8778; serve ...

  6. 【Appium自学】Appium [安装包] Appium 官方文档(转发)

    转发地址:https://blog.csdn.net/panyu881024/article/details/80149190 Appium国内下载地址 : http://pan.baidu.com/ ...

  7. C# Func与Action

    Func与Action是C#的内置委托,在使用委托时,可不必再定义. (1)Func:有返回类型的委托. Func类型的委托,肯定有一个返回类型,如果Func只有一个参数,那么它就是代表没有参数但是有 ...

  8. 超简单(两步)-微信怎么实现打开外部浏览器,下载app,打开网页URL

    现在微信渠道可以说是拉新最快的渠道,因为微信具备强裂变性.但是目前微信对第三方下载链接的拦截是越来越严格了,那么想要在微信内肆无忌惮地推广链接就需要用到微信跳转浏览器的接口,那如何获取该接口呢?   ...

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

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

  10. js 监听手机端键盘弹出和收起事件

    //这里区分不同系统,可以参考之前的文档记录 https://www.cnblogs.com/wind-wang/p/10737110.html const ua = typeof window == ...