局部变量和成员变量初始化的不同

1. 区别

值类型的 局部变量必须初始化,成员变量声明时默认初始化。

也就是说,局部变量使用前,必须赋值。而成员变量 会默认赋值,不必须。

2.默认值是什么? 

成员变量中里的,基本数值类型默认初始值为0,String等非基本类型初始化为null。

  Why?

值类型在栈中,值在是在栈中。而String等引用类型在堆中,不赋值表示没有指向,所谓为null。

3.this什么时候用?

当成员变量和局部变量(函数参数也可以看做局部变量)重名的时候,被看做局部变量,因此为了避免混乱,建议访问成员变量的时候加 上“this.”,this代表当前对象。

时间: 2024-10-29 00:23:44

局部变量和成员变量初始化的不同的相关文章

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

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

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

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

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

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

局部变量和成员变量

哪些变量是局部变量? 方法体中定义的 变量 和 方法的 形式参数(方法声明中) 局部变量和成员变量的比较: 1. 在类中定义的位置不同 2. 在内存中的位置不同 局部变量: 存储在,方法对应栈空间的栈帧中的 成员变量: 存储在,堆空间中的对象的存储空间中 3. 生命周期不同 局部变量: 随着栈帧的创建而创建,随着栈帧的销毁而销毁 成员变量: 随对象的创建而创建,当对象变成垃圾的时候,对象中的成员变量对应的存储空间就会被销毁 4. 初始化值不同 局部变量: 初值,必须由程序员在使用局部变量之前赋予

类内const static(static const)成员变量初始化问题

在查找const相关资料的过程中,又遇到了另外一个问题,就是C++类中const static(或者static const)成员变量应当如何初始化的问题. 查阅了许多资料,发现VC环境下,只允许const static成员变量在类外初始化,这个应该是编译器遗留下的bug(你也可以说是要求严格). 在其他编译器下,整型以及枚举类型的const static成员变量是允许在声明的同时进行初始的,其中整型包括int.short.long.char等,非整型是指浮点型 包括float.double等.

类的成员变量初始化总结

1. C++变量的初始化方式 首先把需要初始化的成员变量分为几类: ?  一般变量(int) ?  静态成员变量(static int) ?  常量(const int ) ?  静态常量(static const int) 对应的初始化方式是: ?  一般变量可以在初始化列表里或者构造函数里初始化,不能直接初始化或者类外初始化 ?  静态成员变量必须在类外初始化 ?  常量必须在初始化列表里初始化 ?  静态常量必须只能在定义的时候初始化(定义时直接初始化) 举一个简单的例子: [cpp] v

const map 成员变量初始化例子

Author:DriverMonkey Mail:[email protected] Phone:13410905075 QQ:196568501 #include <string.h> #include <iostream> #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <map> using namespace std; class a_t

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

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

Java构造方法、成员变量初始化以及静态成员变量初始化三者的先后顺序是什么样的?

[Java笔试真题]:构造方法.成员变量初始化以及静态成员变量初始化三者的先后顺序是什么样的? [解答]:当类第一次被加载的时候,静态变量会首先初始化,接着编译器会把实例变量初始化为默认值,然后执行构造方法. Java程序的初始化一般遵循以下三个原则(以下三原则优先级依次递减): ① 静态对象(变量)优先于非静态对象(变量)初始化,其中,静态对象(变量)只初始化一次,而非静态对象(变量)可能会初始化多次: ② 父类优先于子类进行初始化: ③ 按照成员变量定义顺序进行初始化,即使变量定义散布于方法