public class Test {
int c; //成员变量(实例变量)
static int s1; //静态变量(类变量)(全局变量)
public static void main(String[] args){
//static int s2; //局部变量不允许static定义
int b; //局部变量
Test t=new Test();
System.out.println(t.c); //成员变量系统会提供默认初始值,随着对象创建而存在(实例变量) b=1;
System.out.println(b); //局部变量使用前必须得赋值,系统不会默认初始化 // 静态变量随着类的加载而存在,所有对象共享
System.out.println(t.s1);
Test t1=new Test();
t1.s1=2; //其中一个对象将其值改变,即共享数据改变了。
System.out.println(t1.s1);
System.out.println(s1);
System.out.println(Test.s1);
}
}

(1)作用域

成员变量:有4种修饰符决定成员变量的可见性。如表1所示。

局部变量:它所在的花括号内。

静态变量:同成员变量。

public:表明该成员变量或方法对所有类或对象都是可见的,所有类或对象都可以直接访问。

private:表明该成员变量或方法是私有的,只有当前类对其具有访问权限,除此之外的其它类或对象都没有访问权限。

protected:表明成员变量或方法对该类自身、与它在同一个包中的其它类、在其它包中的该类的子类都可见。

default:表明该成员变量或方法只有自己和与其位于同一包内的类可见。若父类与子类位于同一个包内,则子类对父类的default成员变量或方法都有访问权限;若父类与子类位于不同的package内,则没有访问权限。

这些修饰符只能修饰成员变量,不能用来修饰局部变量。private与protected不能用来修饰类(只有public、abstract、final 能用来修饰类)。

(2)存储位置

成员变量:存储在堆内存中。

局部变量:存储在栈内存中。

静态变量:存储在方法区中。

(3)初始值

成员变量:有默认初始值。

局部变量:没有默认初始值,使用前必须赋值。

静态变量:有默认初始值。

(4)调用方式

成员变量:对象.实例变量

静态变量:类.静态变量    或者    对象.静态变量

局部变量:直接用。

(5)生命周期

成员变量:与类的实例化对象作用范围相同,当类被实例化时,成员变量就会在内存中分配空间并初始化,直到这个被实例化对象的生命周期结束,成员变量的生命周期才结束。

静态变量:只要类被加载,JVM就会给类的静态变量分配存储空间。

局部变量:在方法被调用,或者语句被执行的时候存在,当方法调用完,或者语句结束后,就自动释放。

(6)与对象的相关性

静态变量不依赖于特定的实例,是所有对象共享的数据。静态变量属于类,在内存中只有一个复制(所有实例都指向同一个内存地址),只要静态变量所在的类被加载,这个静态变量就会被分配空间,即可被使用了。

成员变量是每个对象所特有的数据。成员变量属于对象,只有对象被创建后,成员变量才会被分配空间,才能被使用,它在内存中存在多个复制。

最新文章

  1. pymol installation
  2. csharp: ODP.NET,System.Data.OracleClient(.net 4.0) and System.Data.OleDb读取Oracle g 11.2.0的区别
  3. NSString 的常用操作
  4. python 列表 总结
  5. Oracle Recommended Patches -- "Oracle JavaVM Component Database PSU" (OJVM PSU) Patches (文档 ID 1929745.1)
  6. 十五个常用的jquery代码段
  7. 电商CRM的痛点在哪里?
  8. Arch Linux sudo: PAM authentication error: Module is unknown [Solved!]
  9. iOS 面试题及答案
  10. Shell脚本———— /dev/null 2>&1详解
  11. HDU 3001 Traveling(状压DP)
  12. ARM map(Program size)
  13. HTML5 canvas文本属性与方法
  14. 【集训笔记】博弈论相关知识【HDOJ 1850【HDOJ2147
  15. java RC4加密和解码
  16. ASP.NET core1.0 EF MYSQL搭建中碰到几个问题记录
  17. openssl几个加密算法使用介绍
  18. 周一02.3运行python程序的两种方式
  19. Session与Cookie(自定义Session)
  20. java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils

热门文章

  1. MySQL_西安11月销售昨日未上架的产品_20161212
  2. bzoj 4103: 异或运算 可持久化Trie
  3. 汇编题目:在屏幕中间显示a-z的所有字母,按ESC键改变字符颜色
  4. SQL 常用语句收集
  5. 【转】 Pro Android学习笔记(四十):Fragment(5):适应不同屏幕或排版
  6. 1 slow requests are blocked > 32 sec解决方法
  7. k8s基础 etcd参数
  8. shell入门-wc
  9. Intent的简单概述
  10. eclipse中使用Maven插件报错:-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match.