Java中Static关键字详解以及静态变量和成员变量的区别

时间:2022-10-14 18:13:41

一、static关键字的特点

(1)修饰成员变量、成员方法
(2)随着类的加载而加载
(3)优先于对象存在
(4)被所有对象共享
(5)可以通过类名调用
它本身也可以通过对象名调用
例如:main()方法由java虚拟机调用,不需要创建对象,他是一个静态方法

二、什么时候使用静态?

如果某个成员变量是被所有对象共享的,那么它应该被定义为静态的。

三、类成员和对象成员

静态修饰的内容一般我们称其为:与类相关的,类成员
非静态修饰的内容一般我们称其为:与对象相关的,对象成员

Java中Static关键字详解以及静态变量和成员变量的区别

四、注意事项

(1)静态方法没有this关键字
(2)静态方法只能访问静态成员变量和静态成员方法

五、静态变量和成员变量的区别

(1)所属不同:静态变量属于类,成为类变量;
成员变量属于对象,称为对象变量
(2)内存中位置不同:静态变量位于方法区中的静态区
成员变量存储于堆内存
(3)内存出现时间不同:静态变量随着类的加载而加载,随着类的小说而消失
成员变量随着对象的创建而存在
(4)调用不同:静态变量可以通过类名调用,也可以通过对象名调用
成员变量只能通过对象名调用

Java中Static关键字详解以及静态变量和成员变量的区别的更多相关文章

  1. C/C++中static关键字详解

    静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值. 静态变量或静态函数只有本文件内的代码才能访问它,它的名字在其它文件中不可见.用法1:函数内部声明 ...

  2. C/C++中static关键字详解-zz

    静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值. 静态变量或静态函数只有本文件内的代码才能访问它,它的名字在其它文件中不可见.用法1:函数内部声明 ...

  3. Java中Volatile关键字详解 (转自郑州的文武)

    java中volatile关键字的含义:http://www.cnblogs.com/aigongsi/archive/2012/04/01/2429166.html 一.基本概念 先补充一下概念:J ...

  4. java中static作用详解

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

  5. Java中Volatile关键字详解

    一.基本概念 先补充一下概念:Java并发中的可见性与原子性 可见性: 可见性是一种复杂的属性,因为可见性中的错误总是会违背我们的直觉.通常,我们无法确保执行读操作的线程能适时地看到其他线程写入的值, ...

  6. Java中Volatile关键字详解(转载)

    转载自:https://www.cnblogs.com/zhengbin/p/5654805.html 一.基本概念 先补充一下概念:Java 内存模型中的可见性.原子性和有序性. 可见性: 可见性是 ...

  7. Java中abstract关键字详解

    abstract只能修饰类(class) 和 方法.而不能修饰成员变量.这是由于抽象的概念确定的.只有类和方法可以抽象出来,而成员变量不需要抽象. abstract修饰类 abstract之所以出现, ...

  8. Java Static关键字详解

    提起static关键字,相信大家绝对不会陌生,但是,想要完全说明白,猛的一想,发现自己好像又说不太明白... ...比方说,昨天被一个同学问起的时候... ... 当然,不是所有人都像我一样学艺不精的 ...

  9. 【转载】C/C++中extern关键字详解

    1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义.此外extern也可用来进行链接指定. 也就是说extern ...

随机推荐

  1. Install Ansible on Mac OSX

    from: https://devopsu.com/guides/ansible-mac-osx.html and : https://devopsu.com/guides/ansible-post- ...

  2. iOS越狱程序开发

    iOS越狱程序开发http://www.docin.com/p-760246852.html

  3. SQL Server数据库PIVOT函数的使用详解(一)

    http://database.51cto.com/art/201108/285250.htm SQL Server数据库中,PIVOT在帮助中这样描述滴:可以使用 PIVOT 和UNPIVOT 关系 ...

  4. 【转】Linux I2C设备驱动编写(三)-实例分析AM3359

    原文网址:http://www.cnblogs.com/biglucky/p/4059586.html TI-AM3359 I2C适配器实例分析 I2C Spec简述 特性: 兼容飞利浦I2C 2.1 ...

  5. javaWEB总结(5):GET与POST请求

    前言:get和post请求无论在项目中还是在面试中都会经常遇到,这次主要写一个小页面测试一下他们的区别,本人知识有限理解和说的简陋就全当给自己留个备份,日后再补充. 1.项目的目录结构 2.web.x ...

  6. javascript学习笔记-4

    document.getElementByTagName返回的是一个NodeList,这个NodeList和js数组很类似,都可以使用下标读取,如:array[0],但他们也有不同,不同在于不能对No ...

  7. suds库使用说明官方文档

    OVERVIEW The Suds web services client is a lightweight soap-based client for python the is licensed ...

  8. Confluence 6 数据库表-空间(Spaces)

    这个表格与空间的管理有关. spaces 有关空间使用的信息:key,空间的名称和数字 ID. https://www.cwiki.us/display/CONF6ZH/Confluence+Data ...

  9. Python学习-24.Python中的算术运算

    加法:+,与C#中并无区别,并且一样可以作用于字符串. 但Python中不支持字符串与数值类型的相加. i = 1 s = ' print(s + i) 这样是会在运行时报错的,正确写法如下: i = ...

  10. 《杜增强讲Unity之Tanks坦克大战》3-添加坦克

    3 添加坦克 3.1 本节效果预览   3.2 另存新场景 首先打开上次的场景s1,另存为s2,放到同一个文件夹下面.   3.3 添加坦克模型 在Model文件夹下面找到Tank模型   将Tank ...