全局变量和局部变量变为全局变量在内存中是否有区别

Java基础——成员变量、局部变量和静态变量的区别_Linux编程_Linux公社-Linux系统门户网站
你好,游客
Java基础——成员变量、局部变量和静态变量的区别
来源:Linux社区&
作者:郝贵宝
之前在刚开始学习Java的时候,就谈了谈Java基础中的变量(见 ),虽然知道这货以后会经常用到,但没想到了基本语法这里,竟然有冒出来了成员变量、局部变量和静态变量。变来变去太容易让人搞晕了,挑拣出来梳理一下喽!
要想区分这哥仨,首先,我们得知道它们分别是什么。先从成员变量下刀。
& & & &我们来研究一个事物:
& & & & & & & &属性:外在特征;例如人的身高,体重
& & & & & & & &行为:能够做什么;例如人有说话,打球等行为。
& & & &而在Java语言中,最基本的单位是类,类就是用来体现事物的。
& & & &用类class来描述事物也是如此:
& & & & & & & &属性:对应类中的成员变量
& & & & & & & &行为:对应类中的成员函数
& & & &定义类其实就是在定义类中的成员(成员变量和成员函数)
& & & 拓展:类是一个抽象的概念,而对象就是类的具体的存在,体现。例如:生活中的汽车,可以看做一个类,我们称之为汽车类,每一台车都有颜色和轮胎数(可以定义为属性,即成员变量),每一台车都可以跑(即车的行为,对应类总的成员函数),我们把汽车实例化一下,即会产生一个对象,比如奔驰、宝马(BMW)。
public class Car {& & & &
private S // 定义汽车颜色,全局变量& & & &
private int numL // 定义汽车轮胎数,全局变量&& & & &
public Car(String color, int numLuntai){& & & & & & & & &
super();& & & & & & & & &
this.color =& & & & & & & & &
this.numLuntai = numL& & & &
}& & & & public void run() {& & & & & & & & &
System.out.println(this.numLuntai+ "个轮子的" +this.color + "轿车在马路上行驶着");& & & &
public class ClassTest {& & & &
public static void main(String[] args){& & & & & & & & &
Car bmw = new Car("黑色", 4);& & & // 创建一个轿车对象,名字为bmw& & & & & & & & &
bmw.run();& & & &
运行结果:
4个轮子的黑色轿车在马路上行驶着
& & & 其中color和numLuntai就称为Car 类的成员变量,这个属性能够用来描述一个类的属性,否则,它就应该定义为局部变量。
& & & 例如一个for循环中的i即是局部变量。
& & & & & & & & &
for(int i = 0; i & args. i++) {& & & & & & & & & & & & &
......& & & & & & & & &
又例如写在成员方法中变量是局部变量。
publicclass Car {& & & &
private S // 定义汽车颜色,全局变量& & & &
private int numL // 定义汽车轮胎数,全局变量& & & &
public Car(String color, int numLuntai){& & & & & & & & &
super();& & & & & & & & &
this.color =& & & & & & & & &
this.numLuntai = numL& & & &
}public void run() {& & & & & & & & &
String carName=&宝马牌&;& & //这个就是局部变量& & & & & & & & &
System.out.println(this.numLuntai+ "个轮子的" +this.color + carName+"轿车在马路上行驶着");& & & &
}}publicclass ClassTest {& & & &
public static void main(String[] args){& & & & & & & & &
Car bmw = new Car("黑色", 4);& & & // 创建一个轿车对象,名字为bmw& & & & & & & & &
bmw.run();& & & &
4个轮子的黑色宝马牌轿车在马路上行驶着&
成员变量和局部变量的区别
& & & &成员变量:
& & & & & ①成员变量定义在类中,在整个类中都可以被访问。
& & & & & ②成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。
& & & & & ③成员变量有默认初始化值。
& & & 局部变量:
& & & & & ①局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。
& & & & & ②局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。
& & & & & ③局部变量没有默认初始化值&
& & & 在使用变量时需要遵循的原则为:就近原则
& & & 首先在局部范围找,有就使用;接着在成员位置找。
& & & 由static修饰的变量称为静态变量,其实质上就是一个全局变量。如果某个内容是被所有对象所共享,那么该内容就应该用静态修饰;没有被静态修饰的内容,其实是属于对象的特殊描述。
class Person{& & &
//成员变量,实例变量& & &
//静态变量,类变量& & &
//所有对象共享的属性用static修饰& & &
static String country = "CN";& & &
public void show(){& & & & & & System. out.println(country + ":" + name);& & & & & &
//等效语句:System.out.println(Person.country+ ":" + this.name);& & & }}class StaticDemo{& & &
public static void main(String[]args){& & & & & & Personp = new Person();& & & & & & System. out.println(p.country);& & & & & &
//可以用类名直接调用& & & & & & System. out.println(Person.country);& & & }}
成员变量和静态变量的区别
& & & 1、两个变量的生命周期不同
& & & & & & 成员变量随着对象的创建而存在,随着对象被回收而释放。
& & & & & & 静态变量随着类的加载而存在,随着类的消失而消失。
& & & 2、调用方式不同
& & & & & & 成员变量只能被对象调用。
& & & & & & 静态变量可以被对象调用,还可以被类名调用。
& & & 3、别名不同
& & & & & & 成员变量也称为实例变量。
& & & & & & 静态变量也称为类变量。
& & & 4、数据存储位置不同
& & & & & & 成员变量存储在堆内存的对象中,所以也叫对象的特有数据。
& & & & & & 静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。
列表对比:
& & & &成员变量、局部变量、静态变量的区别&
&在类中,方法外
方法中,或者方法的形式参数
在类中,方法外
有默认初始化值
无,先定义,赋值后才能使用
有默认初始化值
对象调用,类名调用
与对象共存亡
与方法共存亡
与类共存亡
& & & & 尽管三者的本质都是变量,可是使用时却有相当大的区别,稍不留神就可能陷入陷阱。且先记住:在一个类中,如果一个变量能够用来描述一个类的属性,那就定义为成员变量,否则,它就应该定义为局部变量。而如果一个变量在全局中都能使用(某个内容是被所有对象所共享),那么我们就可以把这个变量用static来修饰,即为静态变量。(还要注意它与静态方法的紧密联系,这里且不细述了)
本文永久更新链接地址:
相关资讯 & & &
& (08月02日)
& (03月29日)
& (02/23/:24)
& (07月15日)
& (02/23/:44)
& (02/23/:36)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款全局变量和局部变量在内存里的区别_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
全局变量和局部变量在内存里的区别
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩2页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
追求真实生活,喜欢在生活中的幸福,并为生活努力
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(2477)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'全局变量、局部变量、静态全局变量、静态局部变量在内存里的区别',
blogAbstract:'一、程序的内存分配
一个由C/C++编译的程序占用的内存分为以下几个部分: 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。 3、全局区(静态区)(static)— 全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:2,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'追求真实生活,喜欢在生活中的幸福,并为生活努力',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}JS里面全局变量和局部变量有什么区别?
16-08-28 &

我要回帖

更多关于 js全局变量和局部变量 的文章

 

随机推荐