博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中成员变量和局部变量的区别
阅读量:5994 次
发布时间:2019-06-20

本文共 1692 字,大约阅读时间需要 5 分钟。

hot3.png

先看下面两段程序:

程序一:

public class Variable
{
int i;
void test()
{
   int j=8;
   if(j==i)
    System.out.println("相等");
   else
    System.out.println("不相等");
}
public static void main(String[] args)
{
   Variable v=new Variable();
   v.test();
}
}

程序二:

public class Variable
{
   void test()
{
   int i;
   int j=8;
   if(j==i)
    System.out.println("相等");
   else
    System.out.println("不相等");
}
public static void main(String[] args)
{
   Variable v=new Variable();
   v.test();
}
}

----------------------------------------------------------------------------------------------------------

第一个程序很正常,编译时不会出错。第二个程序编译时会提示如下错误:

D:\Program\java\test>javac Variable.java

Variable.java:9: 可能尚未初始化变量 i
                if(j==i)
                      ^
1 错误

之所以会出现这样的错误是因为:成员变量有默认值,(被final修饰且没有static的必须显式赋值),局部变量不会自动赋值

===========================================================

类体分为两部分。变量定义部分所定义的变量被称为类的成员变量,在方法体中定义的变量和方法的参数都被称为局部变量

java中成员变量和局部变量的区别
1.成员变量可以被public,protect,private,static等修饰符修饰,而局部变量不能被控制修饰符及static修饰;两者都可以定义成final型
2.成员变量存储在堆,局部变量存储在栈
3.存在时间不同
4.成员变量有默认值,(被final修饰且没有static的必须显式赋值),局部变量不会自动赋值
-------------------------------------------------------------------------------------------------------------
顾名思意了
什么是局部,方法内部,块内部都是局部,执行指令退出那个局部,局部变量自动清除
比如方法中,不用说
块中
{
  int i=0; //这是一个局部变量,它的作用范围就在其中 
}
成员变量就会涉及到谁的成员,类的成员?实例的成员?
class A{
int i=0; //实例的成员
static j=1;//类的成员
}
static 的差别,是否依赖于实例而存在
----------------------------------------------------------------------------------------------------------

成员变量:作为类的成员而存在,直接存在于类中。

局部变量:作为方法或语句块的成员而存在,存在于方法的参数列表和方法定义中。

局部变量在使用前必须被程序员主动的初始化,和此形成对比,系统中的成员变量则会被系统提供一个默认的初始值。所以在语法上,类的成员变量能够定义后直接使用,而局部变量在定义后先要赋初值,然后才能使用。

 

所有类的成员变量可以通过this来引用。成员变量又分成俩中类型:实例变量和静态变量。静态变量在定义时要使用static关键字。

转载于:https://my.oschina.net/u/1427708/blog/710685

你可能感兴趣的文章
资源收藏
查看>>
晨读打卡(2018.2)
查看>>
shell 信号列表
查看>>
深入浅出之正则表达式(一)
查看>>
数据库知识笔记
查看>>
企业级备份方案系列PART1:SCDPM 2012安装和配置
查看>>
小蚂蚁学习Redis笔记(1)——Redis简介、适用场景、对比
查看>>
我的友情链接
查看>>
ESXI支持linux远程命令管理
查看>>
linux内核动态加载模块
查看>>
ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view)
查看>>
java垃圾回收算法之-标记清除
查看>>
压缩工具及bash脚本编程
查看>>
学习SpringMVC——你们要的REST风格的CRUD来了
查看>>
在EditPlus中使用代码格式化插件
查看>>
MYSQL主从复制部署流程
查看>>
Java中的增强 for 循环 foreach
查看>>
Webpack 资源管理
查看>>
JSP原理与脚本元素
查看>>
关于cisco2911/k9
查看>>