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
以下是内存中代码的运行图
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
首先内存整体分为了五个部分,包含 stack segment(栈内存)、heap segmentheap segment(堆内存)、code segment(方法区)、data segment(静态代码块)、执行时常量池(Runtime Constant Pool)是方法区的一部分。
当中我们程序中用keywordnew出来的东西都是存放在heap segment(堆内存)。
程序中的局部变量存放在stack segment(栈内存),这些局部变量是在详细方法运行结束之后,系统自己主动释放内存资源(而heap segment中的资源须要java垃圾回收机制来处理)。
程序中的方法。是内存中的code segment(方法区)中的,并且是多个对象 共享一个代码空间区域。
static静态变量。须要放在内存中的data segment(静态代码块)中。
执行时常量池。储存常量。
关于内存机制 ,等我弄懂些再发表文章。都怪我太菜
JAVA_SE基础——26.[深入解析]局部变量与成员变量的差别的更多相关文章
- JAVA_SE基础——26.[深入解析]局部变量与成员变量的区别
黑马程序员入学blog ... 如果这章节很难懂的话应该返回去先看 JAVA_SE基础--10.变量的作用域 定义的位置上区别: 1. 成员变量是定义在方法之外,类之内的. 2. 局部变量是定义在方 ...
- java基础学习总结三(jdk7新特性、变量(局部变量和成员变量)、常量以及运算符)
一:jdk7新特性 可以表示二进制数值,以0b开头,中间可以使用下划线_分隔符.如下: @Test /** * 测试jdk新特性 */ public void testJdk7(){ int a=0b ...
- java类(Class)的概念;对象的概念,声明类的属性 和方法,局部变量和成员变量,面向对象编程思维,抽象的概念
类(Class)的概念 类是对一组具有相同特征和行为的对象的抽象描述. 理解: [1] 类包含了两个要素:特性和行为 => 同一类事物具有相同的特征和行为. [2] 类是一个群体性概念.例如:网 ...
- JAVA中局部变量 和 成员变量有哪些区别
JAVA中局部变量 和 成员变量有哪些区别 1.定义的位置不一样<重点>***局部变量:在方法的内部成员变量:在方法的外部,直接写在类当中 2.作用范围不一样<重点>***局部 ...
- java的局部变量和成员变量以及区别
一.局部变量 存在某个方法中的变量就叫局部变量,局部变量一旦声明就必须赋值 否则不能使用 代码如下: class Person { String name; char sex; int age; pu ...
- C#面向过程之局部变量、成员变量、变量作用域、可变参数
局部变量与成员变量: 局部变量:定义在方法里面的变量就叫做局部变量:没有默认的初始值,使用变量之前必须给它赋值成员变量:定义在类下面的变量叫做成员变量:如果是数值类型默认初始值为0 如果是引用类型默 ...
- Java面向对象的局部变量和成员变量
package cn.itcast.day06.demo03; /* 局部变量和成员变量 1. 定义的位置不一样[重点] 局部变量:在方法的内部,类的方法内部 成员变量:在方法的外部,直接写在类当中 ...
- iOS 局部变量 全局变量 成员变量
一.成员变量 : 写在类声明的大括号中的变量叫成员变量 (也叫属性/实例变量) 成员变量不可离开类 离开了类就不是成员变量 成员变量不能再定义的同事初始化 成员量只能通过对象来访问 成员变量存储在堆中 ...
- Java 的局部变量和成员变量
在Java语言中没有全局变量 分析各种变量的作用域的最简单方法是以花括号为界, 1.在类体中定义的是成员变量,成员变量会被默认初始化 2.在方法中定义的是局部变量,局部变量不会被默认初始化
随机推荐
- 打电话时InCallScreen的具体流程 之 来电不锁屏
打电话时InCallScreen的具体流程 前面说到OutgoingCallReceiver解析号码并启动incallscreen类,第一次启动时首先进入了其oncreate方法 (1)初始化Phon ...
- 用drawRect以及CAReplicatorLayer绘制动态水波纹
用drawRect以及CAReplicatorLayer绘制动态水波纹 大大简化了写水波纹效果的难度,你可以根据示例自己组装水波纹效果,本设计是几个工具组合在一起完成的效果, DrawRectObje ...
- android应用推荐
脱单宝典: http://file.bmob.cn/M00/D5/1E/oYYBAFR27BOAPu1JACq_bnF_6-E971.apk
- 如何打开google,facebok等网站
用记事本打开 C:\WINDOWS\System32\drivers\etc\hosts 文件,粘贴如下蓝色内容到文件里,然后输入 例如 https://www.google.com https: ...
- jQuery.data() 的实现方式,jQuery16018518865841457738的由来,jQuery后边一串数字的由来
原文地址: http://xxing22657-yahoo-com-cn.iteye.com/blog/1042440 jQuery.data() 的实现方式 jQuery.data() 的作用是为普 ...
- OpenCV教程(45) harris角的检测(3)
在前面一篇教程中,我们通过取局部最大值的方法来处理检测结果,但是从图像中可以看到harris角的分布并不均匀,在纹理颜色比较深的地方检测的harris角结果更密集一些.本章中,我们使用一个 ...
- Maven 入门指南
为什么要用 Maven? Maven 主要帮助用户完成以下 3 个方面的工作: 生命周期管理,便捷的构建过程: 依赖管理,方便引入所需依赖 Jar 包: 仓库管理,提供统一管理所有 Jar 包的工具: ...
- Windows7安装CodeTyphon
WARNING 1: On windows (XP, Vista and Win7), you must install this software as user with administrato ...
- postgresql数据库用户名密码验证失败
问题分析 (1)检查环境变量中是否指定了相关参数,比如: #export PGUSER=highgo#export PGDATABASE=highgo#export PGHOST=localhost# ...
- c#利用SWIG调用c++dll学习总结【转】
开发环境: 操作系统:windows 7 IDE:Microsoft Visual Studio Professional 2015 SWIG: 3.0.12 swig的介绍 详细介绍可看官网,一下贴 ...