文档章节

Java 局部变量和成员变量

Hellation
 Hellation
发布于 04/18 15:17
字数 502
阅读 8
收藏 0

引出:面向对象编程(Object-oriented)把很多的变量和方法都封装在类中,方便代码调用;这就存在一个问题,声明在类中不同位置的变量在调用时,有那些区别?

先看一个代码:

class Person {
    String name;            //成员变量
    public void eat(){
        int age ;           //局部变量
        age = 12;
        for(int i =  0 ; i< 5 ; i++){
            System.out.println("hello world"+ age);
        }
    }
}

如代码中所示,类中的变量分为成员变量和局部变量。

定义的位置上区别:    
        1. 成员变量是定义在方法之外,类之内的。
        2. 局部变量是定义在方法之内。
    
    作用上的区别:
        1. 成员变量的作用是用于描述一类事物的公共属性的。
        2. 局部变量的作用就是提供一个变量给方法内部使用而已。
    
    生命周期区别:
        1. 成员变量随着对象的创建而存在,随着对象的消失而消失。
        2. 局部变量在调用了对应的方法时执行到了创建该变量的语句时存在,局部变量一旦出了自己的作用域,马上从内存中消失。
    
    初始值的区别:
        1. 成员变量是有默认的初始值
                数据类型     默认的初始值
                int                0
                float              0.0f
                double              0.0
                boolean            false
                char                 ' '
                String(引用数据类型) null
        2. 局部变量是没有默认的初始值的,必须要先初始化才能使用。

内存分析:

对象的内存一般保存在"对象栈"内,栈内存中保存着对象中变量的地址,这些地址均指向堆内存中,真正的变量值其实存储在堆内存中。

 

© 著作权归作者所有

Hellation
粉丝 9
博文 57
码字总数 46586
作品 0
西安
私信 提问
加载中

评论(2)

Hellation
Hellation 博主
静态函数要注意的细节:
      1. 非静态函数只能由对象调用,静态函数可以由类名或者对象进行调用。
      2. 静态函数中不能直接访问非静态成员,可以直接访问静态的成员。
      3. 非静态函数可以直接访问非静态成员以及可以直接访问静态的成员。
      4. 静态函数中不能出现this或者super关键字。
Hellation
Hellation 博主
static 修饰不是为了访问方便,而是为了访问共享的函数变量。
构造函数、构造代码块、this关键字

构造函数、构造代码块、this关键字 一、构造函数 1.构造函数的作用 给对应的对象进行初始化。 2.构造函数的定义格式 3.构造函数要注意的细节 构造函数是没有返回值类型的。 构造函数的函数名...

JS_HCX
2018/12/07
0
0
一句话读懂Threadlocal

threadlocal是把ThreadLocal实例作为key,要保持的对象作为值,设置到当前线程的ThreadLocalMap 中。因此数据是保存在当前线程中的。 ThreadLocalMap实例是作为java.lang.Thread的成员变量存...

jeff_han
2015/11/18
101
0
ThreadLocal 那点事儿

ThreadLocal,直译为“线程本地”或“本地线程”,如果你真的这么认为,那就错了!其实,它就是一个容器,用于存放线程的局部变量,我认为应该叫做 ThreadLocalVariable(线程局部变量)才对...

黄勇
2013/09/05
24.7K
66
《Java从小白到大牛精简版》之第4章 Java语法基础

《Java从小白到大牛》纸质版已经上架了!! 本章主要为大家介绍Java的一些基本语法,其中包括标识符、关键字、保留字、常量、变量、表达式等内容。 4.1 标识符、关键字和保留字 任何一种计算...

tony关东升
2018/06/26
0
0
Java栈,PC寄存器,本地方法栈,堆,方法区和运行常量池

最近在看《深入理解Java虚拟机》,书中给了几个例子,比较好的说明了几种OOM(OutOfMemory)产生的过程,大部分的程序员在写程序时不会太关注Java运行时数据区域的结构: 感觉有必要通过几个...

天蚕宝衣
2016/07/13
9.9K
4

没有更多内容

加载失败,请刷新页面

加载更多

zk中ToBeAppliedRequestProcessor解析

ToBeAppliedRequestProcessor在Leader中 在已处理事务和最后处理事务处理器之间,处理器链上下一个是FinalRequestProcessor public void processRequest(Request request) throws RequestPro...

writeademo
13分钟前
2
0
Allegro快捷键设置-PCB环境

立题简介: 内容:简单介绍Allegro绘制的PCB环境下的快捷键; 来源:实际使用得出; 作用:对Allegro绘制PCB快捷键进行介绍; PCB环境:Cadence 16.6; 立题详解: 对“allegro”板而言,其在...

demyar
14分钟前
2
0
idea maven web项目启动build时报错java.lang.NullPointerException

之前还好好的,重启一下idea就报这个错了,大概率是tomcat没杀掉端口被占用了,在tomcat配置中更换一下sever端口就好了

宇辰OSC
17分钟前
2
0
weed3-2.3.1.查询之输出

Weed3 一个超轻量级ORM框架(只有0.1Mb哦) 源码:https://github.com/noear/weed3 源码:https://gitee.com/noear/weed3 查询可是个复杂的话题了,可能我们80%的数据库处理都在查询。 今天先...

刘之西东
17分钟前
2
0
【Android JetPack系列】数据绑定:DataBinding

参考MVVM

Agnes2017
26分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部