JAVA_SE基础——26.[深入解析]局部变量与成员变量的区别

黑马程序员入学blog ...

如果这章节很难懂的话应该返回去先看  JAVA_SE基础——10.变量的作用域

定义的位置上区别:

1. 成员变量是定义在方法之外,类之内的。

2. 局部变量是定义在方法之内。

作用上的区别:

1. 成员变量的作用是用于描述一类事物的公共 属性的。

2. 局部变量的作用就是提供一个变量给方法内部使用而已。

生命周期区别:

1. 随着对象 的创建而存在,随着对象的消失而消失。

2. 局部变量在调用了对应的方法时执行到了创建该变量的语句时存在,局部变量一旦出了自己的作用域

那么马上从内存中消失。

初始值的区别:

1. 成员变量是有默认的初始值。

数据类型     默认的初始值

int                0

float              0.0f

double              0.0

boolean            false

char                 ‘ ‘

String(引用数据类型) null

2. 局部变量是没有默认的初始值的,必须要先初始化才能使用。

下面来看个例子:

//人类
class Person {

	String name; //成员变量

	public void eat(){
		int age ;

		age = 12;
		for(int i =  0 ; i< 5 ; i++){
			System.out.println("hello world"+ age);
		}
	}

}

class Demo3
{
	public static void main(String[] args)
	{
		Person p1 =  new Person();
		p1.eat();

	}
}

结果:

hello world12

hello world12

hello world12

hello world12

hello world12

下面是内存中代码的执行图

首先内存总体分为了五个部分,包括 stack segment(栈内存)、heap segmentheap segment(堆内存)、code segment(方法区)、data segment(静态代码块)、运行时常量池(Runtime Constant Pool)是方法区的一部分。

其中我们程序中用关键字new出来的东西都是存放在heap segment(堆内存)。

程序中的局部变量存放在stack segment(栈内存),这些局部变量是在具体方法执行结束之后,系统自动释放内存资源(而heap segment中的资源需要java垃圾回收机制来处理)。

程序中的方法,是内存中的code segment(方法区)中的,而且是多个对象 共享一个代码空间区域。

static静态变量,需要放在内存中的data segment(静态代码块)中。

运行时常量池,储存常量。

关于内存机制 ,等我弄懂些再发表文章。都怪我太菜

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-26 02:11:34

JAVA_SE基础——26.[深入解析]局部变量与成员变量的区别的相关文章

局部变量和成员变量的区别

变量的种类 根据定义位置的不同,我们给变量起了不同的名字.如下图所示: ? 在类中的位置不同  成员变量:类中,方法外 局部变量:方法中或者方法声明上(形式参数) 作用范围不一样  成员变量:类中 局部变量:方法中 初始化值的不同  成员变量:有默认值 局部变量:没有默认值.必须先定义,赋值,最后使用 在内存中的位置不同  成员变量:堆内存 局部变量:栈内存 生命周期不同  成员变量:随着对象的创建而存在,随着对象的消失而消失 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失 代码举例

《java中局部变量和成员变量的区别》

1 class Car 2 { 3 String color; 4 int number; 5 6 void run() 7 { 8 System.out.println(color+"::"+number); 9 } 10 } 11 12 class CarDemo 13 { 14 public static void main(String[] agrs) 15 { 16 Car c = new Car();//c是类类型的变量. 17 //c.color = "blue

java中局部变量和成员变量的区别?

在类中的位置不同 成员变量:成员位置---在类中,方法外定义的变量 局部变量:在方法定义中,或者方法声明上的变量 在内存中的位置也不同 成员变量:在堆内存中 局部变量:在栈内存中 生命周期不同 成员变量:随着对象的创建而存在,随着对象的回收而消失 局部变量:随着方法调用而存在,随着方法的调用完毕而消失 初始化不同 成员变量:跟对象相关的,描述一个对象的属性(成员变量存在一个系统 默认初始化),当然也可以直接赋值 局部变量: 在使用之前,必须初始化,否则编译不通过 原文地址:https://blo

Java基础——成员变量、局部变量和静态变量的区别

之前在刚开始学习Java的时候,就谈了谈Java基础中的变量,虽然知道这货以后会经常用到,但没想到了基本语法这里,竟然有冒出来了成员变量.局部变量和静态变量.变来变去太容易让人搞晕了,挑拣出来梳理一下喽! 要想区分这哥仨,首先,我们得知道它们分别是什么.先从成员变量下刀. 成员变量 我们来研究一个事物: 属性:外在特征:例如人的身高,体重 行为:能够做什么:例如人有说话,打球等行为. 而在Java语言中,最基本的单位是类,类就是用来体现事物的. 用类class来描述事物也是如此: 属性:对应类中

JAVA基础之局部变量与全局变量以及成员变量的区别

局部变量 定义:在方法内定义的变量称为"局部变量"或"临时变量",方法结束后局部变量占用的内存将被释放. 全局变量 定义:全局变量,又称"外部变量",它不是属于哪个方法,作用域从定义的地址开始到源文件结束. 注意事项: 当局部变量与全局变量重名时,起作用的是局部变量. 成员变量 定义:在类体的变量部分中定义的变量,也称为字段. 区别: java中没有全局变量的定义,这是C中的例: class Demo{ int x;// 非静态成员变量,又称为属

记录JAVA学习的历程之关于局部变量与成员变量

最近一段时间开始学习JAVA,遇到了不少问题. 写下这些东西,纯粹为了记录自己的学习历程,借此激励自己,希望能在程序员的路上越走越远. 在JAVA中, 我们会遇到局部变量与成员变量这两个变量的分类, 这是按声明位置划分的,下面是对这两个变量的简单定义. 局部变量:方法或语句块内部定义的变量. 成员变量:方法外部,类的内部定义的变量. 更重要的一点是在局部变量中,JAVA不会默认初始化,必须自行初始化. 而在成员变量中,JAVA可自行初始化,初始化变量的值 我以图片的形式给大家浏览学习 以上只是我

成员变量、局部变量、静态变量的区别及

成员变量在堆区,因为成员属于对象的一部分,而对象分配在对中 局部变量分配在占中,对象的引用也分配在栈中 静态变量分配在方法区的静态区中 1:成员变量和局部变量的区别 (1)在类中的位置不同 成员变量:类中方法外 局部变量:方法定义中或者方法声明上 (2)在内存中的位置不同 成员变量:在堆中 局部变量:在栈中 (3)生命周期不同 成员变量:随着对象的创建而存在,随着对象的消失而消失 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失 (4)初始化值不同 成员变量:有默认值 局部变量:没有默认

java局部变量与成员变量相关问题总结

java局部变量与成员变量相关问题总结 2013-02-03 12:39 156人阅读 评论(0) 收藏 举报 一.Java中的所有变量可以分成局部变量和成员变量.他们的区别: 1. 定义 成员变量:在类体里面定义的变量称为成员变量: 局部变量:形参.方法.代码块中定义的变量,都属于局部变量. (注:局部变量定义必须在方法里面!) 2. 详细分类 成员变量:1)类变量(静态变量)——有static修饰: 2)实例变量(非静态变量)——没有static修饰. 局部变量:1)形参——方法签名中定义的

C#面向过程之局部变量、成员变量、变量作用域、可变参数

局部变量与成员变量:  局部变量:定义在方法里面的变量就叫做局部变量:没有默认的初始值,使用变量之前必须给它赋值成员变量:定义在类下面的变量叫做成员变量:如果是数值类型默认初始值为0 如果是引用类型默认初始值为空 变量作用域: 范围 变量在那些范围可以访问到 在对应的大括号里面能访问 Console.WriteLine() Console.Out.WriteLine() 可变参数: params int [] arr arr为一个可变数组 可以给多个元素 也可以只给一个 也可以不给,若一个参数都