Java中静态变量与实例变量
知识回顾
上一篇总结了java中成员变量和局部变量的区别,这一篇将总结静态变量和实例变量的一些特性和区别。
示例代码
package Variable;
public class VariableDemo {
//实例变量
int a;
//静态变量
static int b;
public static void main(String[] args) {
System.out.println(VariableDemo.b);//静态变量可以直接被类调用,实例变量不可以
//新建一个对象 variableDemo
VariableDemo variableDemo = new VariableDemo();
//实例变量和静态变量都可以被对象调用,默认值为0或null
System.out.println(variableDemo.a);//0
System.out.println(variableDemo.b);//0
//再新建两个对象 variableDemo1 、variableDemo2
VariableDemo variableDemo1 = new VariableDemo();
VariableDemo variableDemo2 = new VariableDemo();
//对象variableDemo将静态变量b的值改变
variableDemo.b=10;
//静态变量实质上是全局变量,其中一个变量将其值改变,其他对象得到的都是改变后的结果
System.out.println(VariableDemo.b);//10
System.out.println(variableDemo.b);//10
System.out.println(variableDemo1.b);//10
System.out.println(variableDemo2.b);//10
//对象variableDemo将实例对象a的值改变
variableDemo.a = 15;
//实例变量属于对象私有,某一个对象将其值改变,不影响其他对象
System.out.println(variableDemo.a);//15
System.out.println(variableDemo1.a);//0
System.out.println(variableDemo2.a);//0
}
}
静态变量和实例变量的区别
1、生命周期不同
实例变量随着对象的创建而存在,随着对象的回收而释放。
静态变量随着类的加载而存在,随着类的消失而消失。
2、调用方式不同
实例变量只能被对象调用。
静态变量可以被对象调用,还可以被类名调用。
3、数据存储位置不同
实例变量存储在堆内存的对象中,所以也叫对象的特有数据。
静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。
总结
1.成员变量分为静态变量与实例变量。用 static修饰的变量是静态变量,不用 static 修饰的是实例变量。
2. 实例变量和静态变量都可以被对象调用,数值类型的默认值为0,字符为null
3. 静态变量实质上是全局变量,其中一个变量将其值改变,其他对象得到的都是改变后的结果
4. 实例变量属于对象私有,某一个对象将其值改变,不影响其他对象
Java中静态变量与实例变量的更多相关文章
- Java中的类变量、实例变量、类方法、实例方法的区别
类变量:形如static int a; 顾名思义,类变量可以理解为类的变量,类变量在类加载的时候就已经给它分配了内存空间,不同于实例变量(int a; ),实例变量是在该类创建对象的时候分配内存的.并 ...
- 解析Java中静态变量与实例变量的区别
java类的成员变量有俩种:一种是被static关键字修饰的变量,叫类变量或者静态变量:另一种没有static修饰,为实例变量. 在语法定义上的区别:静态变量前要加static关键字,而实例 ...
- Java 中静态变量和实例变量区别
Java 中静态变量和实例变量区别 静态变量属于类,该类不生产对象,通过类名就可以调用静态变量. 实例变量属于该类的对象,必须产生该类对象,才能调用实例变量. 在程序运行时的区别: 实例变量属于某个对 ...
- Java父类与子类中静态代码块 实例代码块 静态变量 实例变量 构造函数执行顺序
实例化子类时,父类与子类中的静态代码块.实例代码块.静态变量.实例变量.构造函数的执行顺序是怎样的? 代码执行的优先级为: firest:静态部分 second:实例化过程 详细顺序为: 1.父类静态 ...
- (转)java线程安全问题之静态变量、实例变量、局部变量
java多线程编程中,存在很多线程安全问题,至于什么是线程安全呢,给出一个通俗易懂的概念还是蛮难的,如同<java并发编程实践>中所说: 写道 给线程安全下定义比较困难.存在很多种定义,如 ...
- java线程安全问题之静态变量、实例变量、局部变量
java多线程编程中,存在很多线程安全问题,至于什么是线程安全呢,给出一个通俗易懂的概念还是蛮难的,如同<java并发编程实践>中所说: 写道 给线程安全下定义比较困难.存在很多种定义,如 ...
- Java笔记_静态变量和实例变量的区别
这里简单做一下笔记,区分Java全局变量里的静态变量与实例变量. 1.Java里的全局变量 首先了解Java里的全局变量,也叫成员变量. 特点: (1).一个类中既不在方法体内,也不在程序块内定义的变 ...
- Java中静态变量与非静态变量的区别
感谢大佬:https://www.cnblogs.com/liuhuijie/p/9175167.html ①java类的成员变量有俩种: 一种是被static关键字修饰的变量,叫类变量或者静态变量 ...
- Java中静态变量的声明位置
Java中静态变量只能是成员变量,局部方法中的局部变量除final外不能有任何其他修饰符,例如: public class Test { static String x = "1" ...
随机推荐
- std unorder_map insert 和 emplace的区别
std::unordered_map<int, int > map; map.insert(std::make_pair(, )); map.insert(std::make_pair(, ...
- flask基础一
一:flask认知 flask 短小精悍,可扩展强 flask 所有扩展的网址,flask.pocoo.org/externsions 有别于其他的web框架的地方:flask做了一个上下文管理机制 ...
- Convert List<Entity> to Json String.
public static string ToJson(this object obj, string datetimeformats) { var timeConverter = new I ...
- Jmeter学习之--dubbo接口测试
背景:公司的h5和APP都需要调用许多非http的服务,需要对服务的性能和自动化测试 工具:IDEA ,maven,Jmeter 参考文档: https://testerhome.com/topics ...
- Linux如何实现进程监控和守护
最近新搭建的亚马逊EC2服务器, 上面部署了一个静态的WEB, 启动了一个nginx做代理.最近发现一个问题: Nginx进程隔一段时间就莫名的挂掉了, 然后就出现了网站无法打开的窘境.. 为了防止这 ...
- C++实验二——函数重载、函数模板、简单类的定义和实现
一.实验过程 函数重载编程练习 实验要求:编写重载函数add(),实现对int型,double型,complex型数据的加法.在main函数中定义不同类型的数据,调用测试. 代码实现: 先是简单的体验 ...
- go 语言环境搭建(Ubuntu + Sublime Text3 + GoSublime + gocode)
1. 首先安装go http://code.google.com/p/golang-china/wiki/Install 或者http://golang.org/doc/install这里有详细介绍. ...
- appium 3 跑起来
1. 代码如下: from appium import webdriver capabilitise = { "platformName": "Android" ...
- python数据类型之元组类型
#为何要有元组,存放多个值,元组不可变,更多的是用来做查询 t=(1,[1,2,3],'a',(1,2)) #t=tuple((1,[1,2,3],'a',(1,2))) # print(type(t ...
- django请求接收及文件上传
在写后端交互页面的时候常常会遇到接收来自前端页面请求的情况,例如 在写注册页面的时候,会提交一些页面信息,这时需要分三种情况讨论 第一种,接收单项信息: v = request.POST.getlis ...