java 声明和变量

目录

声明和变量

声明

变量

  1、为什么要初始化

  2、系统初始化和手动初始化

  3、变量的类别

         局部变量

         成员变量

         类变量

          成员和局部变量的区别

       参考材料


声明和变量

声明

1.变量的声明

      因为不声明的变量被编译器识别的代价高于声明后识别的代价。 从编译速度来看,声明即有利于统一管理,也有利于编程人检查代码。

2.函数的声明

     当你和你的小伙伴们写一个工程的时候,往往会出现,我已经写完而你却还没写完,然而我写的部分要调用你写的函数,这就造成我无法测试我写的部分的正确性。现在,我可以用函数调用声明假装你的函数已经写好,这样我就可以测试我的代码了。

感悟:

      程序的代码书写需要结构化,程序的思想与逻辑更需要结构化。

      结构而成体系,协作而不搅乱全局,简化繁琐的工作,便于决策和思考核心,开拓广度和研究深度。

3.声明提升

       var a=1和 var a ,a = 1 都有两个阶段,第一个是编译阶段的任务,而第二个则是执行阶段的任务。编译阶段对整个文件的声明部分做完整的分析(包括局部变量),从而确定变量的作用域。在当前作用域中的声明出现在什么地方,都将在代码本身被执行前首先进行处理。 可以将这个过程形象地想象成所有的声明(变量和函数)都会被“移动”到各自作用域的最顶端,这个过程被称为声明提升。而所赋的值留在原地。

变量

  1、为什么要初始化

                操作系统虽然回收了该内存空间,但它并不清空该内存空间中遗留下来的数据。

               如果没有经过java虚拟机赋初值的变量。分配给变量的储存空间可能被使用过,会有一些垃圾信息。

  2、系统初始化和手动初始化

      首先纠正一个观点,全局变量和局部变量都是需要初始化的。这是因为使用没有初始化的变量是不安全的。只不过全局变量的初始化工作可以交给JVM。而局部变量需要赋初值进行初始化。

       为什么局部变量不可以呢?我认为是出于性能等多方面的考虑。

      成员变量的值存放于中,JVM在分配内存时将整块区域置为零即完成了初始化,方便快捷。而局部变量运行时被分配于中,量大,生命周期短,如果由JVM完成初始化,将是一笔很大的性能开销。所以java明文规定局部变量必须显性初始化。

  3、变量的类别

局部变量

局部变量:方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。

成员变量

成员变量:是定义在类中、方法体之外的变量。这种变量在创建对象的时候实例化(分配内存)。成员变量可以被类中的方法和特定类的语句访问。

类变量

类变量(静态变量):类变量也声明在类中,方法体之外,但必须声明为static类型。static 也是修饰符的一种。

局部变量的值覆盖全局变量的情况成立的条件

1、全局变量和局部变量重名。

2、全局变量和局部变量都进行了声明。

实例:

\#include <iostream> using namespace std;  
// 全局变量声明 int g = 20;  
int main () {  
// 局部变量声明  int g = 10;   
cout << g;   
return 0; }

当上面的代码被编译和执行时,它会产生下列结果:

10

成员和局部变量的区别

作用域:

  • 成员变量定义在类中,在整个类中都可以被访问。

  • 局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。

生存周期:

  • 成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。

  • 局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。

初始化:

  • 成员变量系统默认初始化值。

  • 局部变量系统不能默认初始化值,使用时需要赋值初始化。


参考材料

(32条消息) 成员变量、类变量、局部变量的区别du_minchao的专栏-CSDN博客成员变量 成员变量、类变量、局部变量的区别_du_minchao的专栏-CSDN博客_成员变量

(32条消息) 解答关于--变量重复声明的问题_拎着蜗牛跑的壳儿-CSDN博客 解答关于--变量重复声明的问题_拎着蜗牛跑的壳儿-CSDN博客

C语言变量初始化是必须的吗?不初始化会怎样?  http://m.biancheng.net/view/156.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值