Java基础笔记(七)—— 成员变量、静态变量、局部变量
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基础笔记(七)—— 成员变量、静态变量、局部变量的更多相关文章
- 0013 Java学习笔记-面向对象-static、静态变量、静态方法、静态块、单例类
static可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静 ...
- Java 读书笔记 (七) 变量
Java语言中, 所有的变量在使用前必须声明.声明变量的基本格式: type identifier [ =value],[,identifier [=value]...]; 声明变量的实例,有些包含了 ...
- 【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错
原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-impor ...
- 内部类访问外部类的变量必须是final吗,java静态方法中不能引用非静态变量,静态方法中不能创建内部类的实例
内部类访问外部类的变量必须是final吗? 如下: package com.java.concurrent; class A { int i = 3; public void shout() { cl ...
- java常量,变量,静态变量的理解
最近考试出了一个很简单的题,看看他们对java常量,变量,静态变量的理解,代码如下: public class TestVar { /** * JAVA基础,常量,变量,静态变量 */ public ...
- java入门---变量类型&类变量&局部变量&实例变量&静态变量
在Java语言中,所有的变量在使用前必须声明.声明变量的基本格式如下: type identifier [ = value][, identifier [= value] ...] ; ...
- Objective-C 类,实例成员,静态变量,对象方法,类方法(静态方法),对象,
Objective-C 类,实例成员,静态变量,对象方法,类方法(静态方法),对象, 一.类 在ios中,类的声明和实现时分离的,也就是说不能写在同一个文件中,声明放在 .h文件中,实现放在 .m 文 ...
- Java基础笔记 – Annotation注解的介绍和使用 自定义注解
Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 | 被围观 25,969 views+ 1.Anno ...
- Java实习生常规技术面试题每日十题Java基础(七)
目录 1. Java设计模式有哪些? 2.GC是什么?为什么要有GC? 3. Java中是如何支持正则表达式. 4.比较一下Java和JavaSciprt. 5.Math.round(11.5) 等于 ...
随机推荐
- linux命令学习笔记(58):telnet命令
telnet命令通常用来远程登录.telnet程序是基于TELNET协议的远程登录客户端程序.Telnet协议是TCP/IP协议族 中的一员,是Internet远程登陆服务的标准协议和主要方式.它为用 ...
- 2017-2018-1 20179203 《Linux内核原理与分析》第三周作业
攥写人:李鹏举 学号:20179203 ( 原创作品转载请注明出处) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/US ...
- yeoman,grunt,bower
Yeoman主要有三部分组成:yo(脚手架工具).grunt(构建工具).bower(包管理器).这三个工具是分别独立开发的,但是需要配合使用,来实现我们高效的工作流模式. http://www.cn ...
- POJ 1503 Integer Inquiry(大数相加)
一.Description One of the first users of BIT's new supercomputer was Chip Diller. He extended his exp ...
- RPM包及其管理 rpm命令
一.什么是RPMRPM:RedHat Package Manager //红帽包管理如果Linux发行版本是redhat .redflag .centos .fedora .suse等或者衍生 ...
- "LPWSTR" 类型的实参与"const.char *"类型形参不兼容
CString csPlus; CString csSummand; m_PlusNumber.GetWindowTextW(csPlus); m_Summand.GetWindowTextW(csS ...
- Sql server 2008 R2 导出/导入数据报错之无法打开全局共享内存以与性能 DLL 通信
- stm32之UCOS-III
一.UCOS-III 学习UCOS-III,一般会学习以下内容: 任务创建.删除.挂起.恢复等: 临界区:独占CPU,尽量少用,否则会降低效率: 时间管理:时钟节拍(基于硬件定时器).软件定时器: 互 ...
- MS SQL 取分组后的几条数据
SELECT uploaddate ,ptnumber ,instcount FROM ( SELECT ROW_NUMBER() OVER( PARTITION BY uploaddate ORDE ...
- 杭电acm 1033题
Problem Description For products that are wrapped in small packings it is necessary that the sheet o ...