1 静态:static

  1.1 用法

    是一个修饰符;用于修饰成员(成员变量和成员函数)

  1.2 好处

    当成员变量被静态static修饰后,就多了一种调用方式,除了可以被对象调用外,还可以直接被类名调用格式:类名.静态成员,也就变成了类变量

2 静态的特点  

  2.1 随着类的加载而加载,也就是,说静态会随着类的消失而消失,说明静态的生命周期最长
  2.2 优先于对象的存在
    明确一点:静态是先存在的对象是后存在的
  2.3 被所有对象共享
  2.4 可以直接用 类名. 调用

3 实例变量和类变量的区别

  3.1 存放位置
    类变量随着类的加载存在于方法区中;实例变量随着对象的对象的建立存在于堆内存里
  3.2 生命周期
    类变量生命周期最长,随着“类”的加载而加载,随着类的消失而消失;
    实例变量随着“对象”的消失而消失
4 静态的使用注意事项  

  4.1 静态方法只能访问静态成员(包括成员变量和成员方法)
  4.2 非静态方法可以访问静态也可以访问非静态
  4.3 静态方法中不可以定义this,super关键字

    因为静态优先于对象存在,所以静态方法中不可以出现this,super关键字

  4.4 主函数是静态的。

  4.5 B类中的静态方法可以通过A类的对象来调用A类中的静态方法
  
5 静态的利弊
  5.1 利:对 对象的共享数据进行单独空间的存储,节省空间,没有必要没一个对象中都存储一份,可以直接被类名所调用
  5.2 弊:生命周期过长,访问出现局限性(只能访问静态)

6 public static void main(String[] args)
  主函数是一个特殊的函数,作为程序的入口,可以被jvm调用。
  6.1主函数的定义:
    public:代表着该函数的访问权限是最大的。
    static:代表主函数随着类的加载就已经存在了
    void:主函数没有具体的返回值
    main:不是关键字,但是是一个特殊的单词,可以被jvm识别
    (String[] args):函数的参数,参数类型是一个数组,该数组中的元素是字符串,字符串类型的数组
  6.2 主函数是固定格式的:jvm识别 ,
  6.3 jvm在调用主函数时,传入的是 new String[0];

7 什么时候使用静态?
  7.1 什么时候定义静态变量(类变量)呢?
    当对象中出现共享数据时,该数据被静态所修饰,对象中的特有数据要定义成非静态存在于堆内存中
  7.2 什么时候定义静态函数?
    当功能内部没有访问到非静态数据(或者称为对象的特有数据)那么该功能可以定义成静态的。

static、静态变量、静态方法的更多相关文章

  1. android 尽量不要使用static静态变量

    使用静态static静态变量潜在性问题: 1.占用内存,并且内存一般不会释放: 2.在系统不够内存情况下会自动回收静态内存,这样就会引起访问全局静态错误. 3.不能将activity作为static静 ...

  2. PHP之static静态变量详解(一)

    什么是static静态变量?(以下为在C语言中的理解) 静态变量 类型说明符是static. 静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在静态存储区内分配存储单元),该 区域中的数据在 ...

  3. C#中static静态变量的用法

    使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员static修饰符可用于类.字段.方法.属性.运算符.事件和构造函数,但不能用于索引器.析构函数或类以外的类型 静态全局变量 定义 ...

  4. [转] C# 中的static静态变量

    logitechyan原文关于C#中static静态变量 C#静态变量使用static 修饰符进行声明,在类被实例化时创建,通过类进行访问不带有 static 修饰符声明的变量称做非静态变量,在对象被 ...

  5. 关于C#中static静态变量

    C#静态变量使用static 修饰符进行声明,在类被实例化时创建,通过类进行访问不带有 static 修饰符声明的变量称做非静态变量,在对象被实例化时创建,通过对象进行访问一个类的所有实例的同一C#静 ...

  6. C#中的static静态变量的用法

    静态全局变量 定义:在全局变量前,加上关键字 static 该变量就被定义成为了一个静态全局变量. 特点: A.该变量在全局数据区分配内存. B.初始化:如果不显式初始化,那么将被隐式初始化为0. 静 ...

  7. php中的static静态变量

    今天碰到了一个php的小试题,一直没有明白为什么第三次循环是static静态变量没有起作用呢?想了好久才明白原理. <?php class MyClass{ function add($b){ ...

  8. C语言 static静态变量

    静态变量类型说明符是static. 静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在 静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间 ...

  9. Static静态变量和非静态变量

    Static静态变量:   不同的对象共享这个变量的存储空间 而不是静态变量   每个对象具有可变的存储器空间 public class StaticDemo { private int count= ...

  10. jvm源码解读--09 创建oop对象,将static静态变量放置在oop的96 offset处 第二篇

    先打断点systemDictionary.cpp 1915行 Universe::fixup_mirrors(CHECK); 进入 void Universe::fixup_mirrors(TRAPS ...

随机推荐

  1. Linux tar命令总结

    压缩 tar –cvf jpg.tar *.jpg  将目录里所有jpg文件打包成tar.jpg tar –czf jpg.tar.gz *.jpg   将目录里所有jpg文件打包成jpg.tar后, ...

  2. BEC listen and translation exercise 12

    More than 220 cities now have air quality monitoring systems and 42 others will have systems in plac ...

  3. 在OpenCV2.2后的版本中没有CvvImage类的解决方法(及出现错误:IntelliSense: 未定义标识符 "CvvImage" )

    首先在你的解决方案资源管理器中的头文件和源文件下分别添加 CvvImage.cpp 如下图: view类头上加个#include "CvvImage.h"  头文件,应该就可以解决 ...

  4. loj #6247. 九个太阳

    求 $\sum\limits_{i=1}^n [k | i] \times C_n^i$ 膜 $998244353$ $n \leq 10^{15},k \leq 2^{20}$ $k$ 是 $2$ ...

  5. [基本操作] Mobius 反演, Dirichlet 卷积和杜教筛

    Dirichlet 卷积是两个定义域在正整数上的函数的如下运算,符号为 $*$ $(f * g)(n) = \sum_{d|n}f(d)g(\frac{n}{d})$ 如果不强调 $n$ 可简写为 $ ...

  6. CodeChef - SQRGOOD:Simplify the Square Root (求第N个含平方因子数)

    Tiny Wong the chef used to be a mathematics teacher in a senior high school. At that time, he always ...

  7. 开启MySQL的sql语句记录

    在开发的时候经常会想看一下MySQL最终执行的sql或者想保存sql记录,所以我们可以启用MySQL的sql记录功能. 开启方法:Linux下编辑MySQL的my.cnf文件,windows下编辑my ...

  8. phoneGap入门教程

    地址: http://mobile.51cto.com/hot-273792.htm

  9. 2.Linux下安装Jenkins

    1.安装jenkins的前提是安装好jdk环境,自行安装jdk,若安装成功后,使用一下命令即可成功安装jenkins: wget -O /etc/yum.repos.d/jenkins.repo ht ...

  10. Installing Redis more properly

    Installing Redis more properly Running Redis from the command line is fine just to hack a bit with i ...