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)与对象的相关性

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

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

Java基础笔记(七)—— 成员变量、静态变量、局部变量的更多相关文章

  1. 0013 Java学习笔记-面向对象-static、静态变量、静态方法、静态块、单例类

    static可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静 ...

  2. Java 读书笔记 (七) 变量

    Java语言中, 所有的变量在使用前必须声明.声明变量的基本格式: type identifier [ =value],[,identifier [=value]...]; 声明变量的实例,有些包含了 ...

  3. 【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错

    原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-impor ...

  4. 内部类访问外部类的变量必须是final吗,java静态方法中不能引用非静态变量,静态方法中不能创建内部类的实例

    内部类访问外部类的变量必须是final吗? 如下: package com.java.concurrent; class A { int i = 3; public void shout() { cl ...

  5. java常量,变量,静态变量的理解

    最近考试出了一个很简单的题,看看他们对java常量,变量,静态变量的理解,代码如下: public class TestVar { /** * JAVA基础,常量,变量,静态变量 */ public ...

  6. java入门---变量类型&类变量&局部变量&实例变量&静态变量

        在Java语言中,所有的变量在使用前必须声明.声明变量的基本格式如下:     type identifier [ = value][, identifier [= value] ...] ; ...

  7. Objective-C 类,实例成员,静态变量,对象方法,类方法(静态方法),对象,

    Objective-C 类,实例成员,静态变量,对象方法,类方法(静态方法),对象, 一.类 在ios中,类的声明和实现时分离的,也就是说不能写在同一个文件中,声明放在 .h文件中,实现放在 .m 文 ...

  8. Java基础笔记 – Annotation注解的介绍和使用 自定义注解

    Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 |  被围观 25,969 views+ 1.Anno ...

  9. Java实习生常规技术面试题每日十题Java基础(七)

    目录 1. Java设计模式有哪些? 2.GC是什么?为什么要有GC? 3. Java中是如何支持正则表达式. 4.比较一下Java和JavaSciprt. 5.Math.round(11.5) 等于 ...

随机推荐

  1. Mybatis generator配置文件及说明

    项目采用sring mvc + mybatis 组合,这里简单介绍下mybatis的应用: 我的IDE是STS(Spring + Tool + Suite), 安装Mybatis Generator插 ...

  2. log4net初探

    /// <summary> /// Static constructor that initializes logging by reading /// settings from the ...

  3. URI is not registered (Settings | Languages & Frameworks | Schemas and DTDs)

    解决:鼠标悬于上方Alt + Enter 选择Ignore

  4. 【转】 Pro Android学习笔记(五九):Preferences(3):EditText和Ringtone Preference

    目录(?)[-] EditText Preferences xml文件 设备的存贮文件 Ringtone Preferences EditText Preferences xml文件 在res/xml ...

  5. pycharm安装 package报错:module 'pip' has no attribute 'main'

    转自: <pycharm安装 package报错:module 'pip' has no attribute 'main'> https://www.cnblogs.com/Fordest ...

  6. 加固mysql服务器

    实验环境:CentOS7 [root@~ localhost]#yum -y install mariadb-server [root@~ localhost]#mysql_secure_instal ...

  7. k8s 基础 pod创建流程

    Pod是Kubernetes中最基本的部署调度单元,可以包含container,逻辑上表示某种应用的一个实例.例如一个web站点应用由前端.后端及数据库构建而成,这三个组件将运行在各自的容器中,那么我 ...

  8. 字符编码ANSI、ASCII、GB2312、GBK、GB18030、UNICODE、UTF-8小结

    编码和解码可以理解成二进制和字符(广义的字符,包括汉字等)的映射表,编码即从字符映射至二进制,解码则为逆过程. 1.英语字符编码ASCII 开始计算机只在美国用.8字节一共可以组合出256(2的8次方 ...

  9. 10、scala模式匹配

    一.模式匹配1 1.介绍 模式匹配是Scala中非常有特色,非常强大的一种功能.模式匹配,其实类似于Java中的swich case语法,即对一个值进行条件判断,然后针对不同的条件, 进行不同的处理. ...

  10. 第5季-小试牛刀-项目开发\阶段2-新手上路\项目-移动物体监控系统\Sprint0-产品设计与规划

    lesson1---产品功能展示 先完成准备阶段,准备阶段要做的事情: a.项目经理选择团队, b.根据项目用户需求以及同类型的实物,制定产品功能列表 c.根据功能的难易程度,制定迭代周期以及在每周期 ...