首页

文章

在java语言中,静态变量和普通变量有什么区别?

发布网友 发布时间:2022-04-19 18:21

我来回答

1个回答

热心网友 时间:2023-07-05 16:13

成员变量

我们来研究一个事物:

属性:外在特征;例如人的身高,体重

行为:能够做什么;例如人有说话,打球等行为。

而在Java语言中,最基本的单位是类,类就是用来体现事物的。

用类class来描述事物也是如此:

属性:对应类中的成员变量

行为:对应类中的成员函数

定义类其实就是在定义类中的成员(成员变量和成员函数)

拓展:类是一个抽象的概念,而对象就是类的具体的存在,体现。例如:生活中的汽车,可以看做一个类,我们称之为汽车类,每一台车都有颜色和轮胎数(可以定
义为属性,即成员变量),每一台车都可以跑(即车的行为,对应类总的成员函数),我们把汽车实例化一下,即会产生一个对象,比如奔驰、宝马(BMW)。

Demo1:

[java] view plain copy
public class Car {
private String color; // 定义汽车颜色,全局变量
private int numLuntai; // 定义汽车轮胎数,全局变量

public Car(String color, int numLuntai){
super();
this.color = color;
this.numLuntai = numLuntai;
}
public void run() {
System.out.println(this.numLuntai+ "个轮子的" +this.color + "轿车在马路上行驶着");
}
}
[java] view plain copy
public class ClassTest {
public static void main(String[] args){
Car bmw = new Car("黑色", 4); // 创建一个轿车对象,名字为bmw
bmw.run();
}
}

运行结果:

4个轮子的黑色轿车在马路上行驶着

其中color和numLuntai就称为Car 类的成员变量,这个属性能够用来描述一个类的属性,否则,它就应该定义为局部变量。

例如一个for循环中的i即是局部变量。

[java] view plain copy
for(int i = 0; i < args.length; i++) {
......
}

又例如写在成员方法中变量是局部变量。
[java] view plain copy
publicclass Car {
private String color; // 定义汽车颜色,全局变量
private int numLuntai; // 定义汽车轮胎数,全局变量
public Car(String color, int numLuntai){
super();
this.color = color;
this.numLuntai = numLuntai;
}
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修饰的变量称为静态变量,其实质上就是一个全局变量。如果某个内容是被所有对象所共享,那么该内容就应该用静态修饰;没有被静态修饰的内容,其实是属于对象的特殊描述。

示例:

[java] view plain copy
class Person{
//成员变量,实例变量
String name;
//静态变量,类变量
//所有对象共享的属性用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);
}
}

结果:

CN

CN

成员变量和静态变量的区别

1、两个变量的生命周期不同

成员变量随着对象的创建而存在,随着对象被回收而释放。

静态变量随着类的加载而存在,随着类的消失而消失。

2、调用方式不同

成员变量只能被对象调用。

静态变量可以被对象调用,还可以被类名调用。

3、别名不同

成员变量也称为实例变量。

静态变量也称为类变量。

4、数据存储位置不同

成员变量存储在堆内存的对象中,所以也叫对象的特有数据。

静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。

小结:

尽管三者的本质都是变量,可是使用时却有相当大的区别,稍不留神就可能陷入陷阱。且先记住:在一个类中,如果一个变量能够用来描述一个类的属性,那就定义
为成员变量,否则,它就应该定义为局部变量。而如果一个变量在全局中都能使用(某个内容是被所有对象所共享),那么我们就可以把这个变量用static来
修饰,即为静态变量。(还要注意它与静态方法的紧密联系,这里且不细述了)
//我复制别人的,都懒得打字!
逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 高分!换显卡nvidia控制面板被我卸了,重新安装显卡驱动后没了nvidia控... 我的nvidia控制面板被卸载了 怎么找回啊 卸载后 这个画面看着很奇怪_百 ... 李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 “君不见巴丘古城如培塿”的出处是哪里 带“奈何”的诗句大全(229句) 里翁行()拼音版、注音及读音 带“不虑”的诗句 “鲁肃当年万人守”的出处是哪里 无尘防尘棚 进出口报关流程,越详细越好。谢谢大家指教。 双线桥不是看化合价升多少就标多少的吗?为什么CL2+2KI=2KCL+I2中I失... 出师表高锰酸钾有画面了吗 2021年幼儿园新学期致家长一封信 电脑屏幕一条黑线怎么办? 销售代理商销售代理商的特点 java中成员变量和静态变量的区别是什么 java中静态变量和静态方法分别有什么特 java中静态变量的默认值是0? JAVA中静态变量如何动态赋值? java 静态变量和静态常量 java静态变量的基本介绍 java中一个类中的静态变量有什么用 在Java中,到底什么是静态变量呢? 车辆过户第一年交平安保险商业险和100万座位险加一... 乌审旗平安汽车出租有限责任公司怎么样? 请设计2条安全交通标语 交通安全谚语 平安车险赔付伤者的护理费 误工费 营养费的标准是多少 交通安全最短顺口溜大全 有车必下的贷款口子 平安的车辆交强险如何过户? 保险公司事故车内部有个拍卖平台,有知道怎么弄的么? 投保平安电话车险要注意什么 交通安全标语 在哪里卖车比较放心? java中,静态变量存储在哪个区啊,堆还是栈啊,或... java中什么是静态变量,什么是常量? java静态变量怎么声明? java中静态常量和静态变量的区别 Java中静态和动态变量怎么区分啊 java为什么要使用静态变量或静态方法 java中静态变量和静态方法的优缺点 JAVA中静态变量和实例变量的区别 java 类变量 静态变量 苹果手机怎么换主卡副卡号码 乐视X65这个电视怎么样 不知道乐视超级电视X65怎么样?值得买么? 乐视电视X65怎样恢复出厂设置 乐视超级电视X65S怎么样? 乐视电视x65恢复出厂设置怎么按 乐视超级电视X65L怎么样? 乐视x65怎么连接手机? 乐视电视X65突然就不显示图像,但有声音,想问一下... 为什么我才买的乐视超级电视X65不能用了怎么办,总... 想要购买乐视超级电视X65L这款电视怎么样?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com