java中的几个易混变量名和内存分配问题

今天看java资料时,被几个变量名字搞晕了,现整理思路如下。

1.类变量,对象变量:

类变量又称静态变量,就是用static修饰的,它们存在于类中,但在类的方法体之外,它的任何值得改变是属于大家共有的。而对象变量,又称实列变量,它的改变则只会影响它自身。

2.全局变量,局部变量:

全局变量又称成员变量,是作用于全局的,它随着程序的结束而销毁。局部变量定义在类的方法体中,它的作用域只限于与之最近的由{ }包裹的代码块,并且作用完后自动销毁了。当在局部变量和全局变量共同作用的地方,以局部变量的值为主。

3.静态存储方式,动态存储方式:

静态存储方式是指它是在编译时就被分配了内存空间,在整个程序的运行中,这块内存空间都不会消失。而静态变量,全局变量都是通过这种方式存储的,这里有一个地方要注意,貌似静态变量和全局变量好像是一个概念,感觉都是在一个地方声明的----“类中,但方法体之外”。但这里有混淆的地方,我们在类中,方法体外声明一个变量时,这个变量可以用static修饰,也可以不用。如果用static修饰,则是静态变量,如果不用,则它就是一个全局变量。当然,除了上面提到的地方,也可以新建一个类,在类中不写方法,而是全部来声明变量,然后直接调用这个类中的变量,这时也可以根据是否有static来判断是静态还是全局变量。

其实这两者之间感觉分界线本身不是特别明显,毕竟都是随着程序结束才销毁内存空间的。

动态存储方式是指是随着程序运行时的需要才去动态的分配空间给需要的对象,比较显著的列子是,方法中的形参,它一开始并没有内存空间,但当我们传递参数过去时,此时会动态分配空间给这个参数,但等到这个参数作用完,它的内存空间便会立即销毁。

4.堆(heap),栈(stack)


java的内存空间只有两种,一种是栈内存,一种是堆内存。栈内存主要来存储临时数据,当程序进入一个方法时,它会分配给这个方法一个栈内存,用来存储相应的数据,但当方法结束时,这块内存会被销毁。而堆内存则是存放一些比较长久或稳固的数据,就是不会随着方法的结束而消失的数据,比如new一个对象。注意,注意,注意,由final修饰的变量是不管是不是存在于方法中,在内存中都是放在堆中的,貌似这就是上面提到的堆中存放长久稳固性的数据。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值