详解 Java 中的变量(java变量的概念)
yund56 2025-05-06 16:33 31 浏览
网上罗列了很多关于变量的理解,良莠不齐,不知道哪些是对的,哪些是错的。所以笔者索性就这些博客和自己的理解写出这篇文章,如果有不对的地方,希望读者能够指正,感谢。
变量是我们经常用到的一种,我在刚学 Java 的时候,也经常被各种变量的概念折磨,当时并没有细抠,但是我在写一篇类似的文章中,想把变量作为一种小标题来简述一下,但是发现,变量这个概念还是比较繁琐的,本篇文章就来深入认识一下 Java 中这些变量的概念。
变量汇总
所以,到底有哪些变量的概念呢?距今为止,目前已知的变量主要有
- 实例变量
- 全局变量
- 静态变量
- 类变量
- 局部变量
- 成员变量
- 常量
下面我们就采用各个击破的方式来认识每个概念
实例变量
实例变量又被称为Instance variables。不使用 static 关键字定义,并且在任何方法、构造方法、块之外的变量都是实例变量。实例变量都是基于特定实例的,实例变量不会在实例之间共享,也就是说,每一个对象的实例都有自己的一个实例变量。下面是实例变量的一个例子
class Fruits {
public String fruitName; // 具有公共访问权限的 fruitName;
private int fruitNum; // 具有私有访问权限的 fruitNum;
}
你可以使用下面这种方式进行实例变量的调用
public class Fruits {
public String fruitName;
private int fruitNum;
public static void main(String[] args) {
Fruits fruits = new Fruits();
fruits.fruitName = "strawberry";
fruits.fruitNum = 100;
}
}
如何识别实例变量
那么我如何知道一个变量它是实例变量呢?下面是一些关于实例变量的定义规则
- 实例变量可以使用四种访问修饰符进行修饰:public、protected、default、private
- 实例变量可以使用 transient、final 关键字进行修饰
- 实例变量不可以使用 abstract、synchronized、strictfp、native、static关键字进行修饰
实例变量带有默认值,也就是说,实例变量不用初始化就能使用。下面是常用实例变量的初始值
实例变量的特点
上面我们了解了实例变量的基本特征和如何区分实例变量,下面我们来讲一下实例变量的特点。
- 实例变量的只能在类中声明,但是在方法、构造函数或任何块之外。
- 当在为堆中对象分配空间时,将为每个实例变量分配一块区域。
- 实例变量只能通过创建对象来使用,当使用 new 关键字进行创建对象时,实例变量同时也被创建,当垃圾回收器回收对象时,实例变量也会被销毁。
- 实例变量可以使用访问修饰符来修饰
- 实例变量不用强制初始化,它有自己的默认值。
- 每个对象都有自己的一个实例变量的副本,因此在一个对象中修改变量不会对其他对象中的实例变量造成影响
- 实例变量只能通过创建对象引用来使用。
全局变量
全局变量又被称为Global variables。如果你有其他语言的编程经验,比如 C、C++ 的话,你会接触到全局变量这个概念,你可以使用下面代码来创建全局变量
#include<stdio.h>
// 全局变量
int A;
int B;
int Add()
{
return A + B;
}
但是在 Java 中,是不存在全局变量的。因为 Java 是一门面向对象的编程语言,所有的内容都是属于类的一部分。Java 这么做的原因是为了防止数据和类成员被其他程序的其他部分有意或者无意的修改。所以在 Java 中,使用 静态变量 来起到全局访问的目的。
静态变量
静态变量又被称为Static variables。静态变量的定义比较简单,静态变量是属于该类的变量,它是由 static 关键字来修饰的。static 修饰的变量属于静态变量,它只能定义在类的内部、方法的外部。
静态变量的特点
- 静态变量只能使用 static 关键字进行修饰,它不能在方法中进行声明,不论是静态方法还是非静态方法。
- 静态变量会在程序运行前进行初始化,并且只初始化一次。静态变量会有一个初始化顺序,我们后面说。
- 静态变量的所有实例共享同一个副本。也就是说,静态变量只有一个,它不会随着对象实例的创建而进行副本拷贝
- 静态变量可以通过类名.变量名 进行访问,并且不需要创建任何对象就能访问。
public class Fruits {
public String fruitName;
private int fruitNum;
static String fruitType;
public static void main(String[] args) {
Fruits.fruitType = "apple"; // 类名.变量名
System.out.println(fruitType);
}
}
- 可以在非静态方法 中使用静态变量
类变量
类变量又被称为 Class variables在 Java 中,类变量就是静态变量,它们都用 static 关键字进行修饰,所以,如果你再听到说静态变量的时候,它也就是类变量。
局部变量
还有一种说法,说 Java 中只有类变量、实例变量和局部变量。这么分也没有问题,可能有人会问到,你把成员变量和常量放在哪了?别着急我们后面会说
先来说一下什么是局部变量
局部变量又称为 Local variables。它指的是在方法中、构造器中或者块代码中定义的变量。局部变量的生命周期随方法、构造器、代码块的执行完毕而销毁。
不管上面的一些变量概念如何变换、局部变量都站如松,坐如钟,行如风,卧如弓,从容应对各种不同文章的比较。真是一个省事的变量。
那么这么好的东西我们可要仔细研究一下其特点是啥
- 根据定义可知,局部变量定义在方法、构造器或者代码块中;
- 然后局部变量的生命周期随方法、构造器、代码块的执行完毕而销毁;
- 局部变量不能使用访问修饰符,例如如下代码
- 局部变量仅在方法的声明、构造函数或者块内可见,局部变量只能在调用这些方法、构造函数或者块的内部使用
- 局部变量没有默认值,所以局部变量应该在第一次使用或者声明的时候就应该初始化完成
成员变量
什么?成员变量在 Java 中就是实例变量?这个结论对吗?
常量
验证过程
为了验证这个结论,我们求助于 stackoverflow 网站
我们搜索 java member variable and instance variable 就帮我们定位到了这个标题
大致意思是:什么是成员变量?成员变量和实例变量是否相同呢?我们下面有个回答
第一句就给出,实例变量和类变量都称为成员变量,然后给出了 JDK 官网手册对变量的定义。意思是在 Java 中,只有三种类型的变量
- 定义在类中的成员变量 --- 被称为属性
- 定义在方法(包含构造方法)或者块代码中的变量 --- 被称为局部变量
- 定义在方法定义中的变量 --- 被称为参数
嗯。。。或许还不是很好解决我们的问题,我带着问题再次求助 JDK 官网手册,又看到了关于 Variables 的定义
意思是在 Java 中,只有下面几种类型的变量(别扯别的了,莫非你比官网还靠谱?)
- 实例变量(非静态属性) :大致意思就是说
非静态属性也就被称为实例变量,因为它们的值是相对于每个实例来说的。换句话说,对于每个对象来讲,实例变量的值都是唯一的;
- 类变量(静态属性):类变量就是使用 static 修饰符声明的字段,这就会告诉编译器:无论该类被实例化了多少次,该变量只存在一个副本。另外,可以添加关键字 final 来表示常量。
- 局部变量:没有特殊的关键字将制定的变量声明为局部变量、确定其声明的完全取决于声明变量的位置。
- 参数:想一下我们平常用到最多的方法是什么方法?当然是 main 方法啊,main 方法是怎么定义的?
public static void main(String[] args) {}
其中的 args 是不是就是 String 的数组的变量,我们也称其为参数,所以参数也没有关键字进行声明,标识其为参数也只是取决于其声明位置。
bilibili
所以
我写了一篇文章为了给你讲清楚,现在你应该知道 Java 中到底有哪些变量了吧。
如果你用 static 来定义变量,只能是类变量、或者说静态变量、而且其定义位置只能在类中,方法或代码块外,变量的副本只有一个。
如果你不用 static 来声明变量,那么就会有三种变量的叫法
- 定义在构造方法、代码块、方法外的变量被称为实例变量,实例变量的副本数量和实例的数量一样。
- 定义在方法、构造方法、代码块内的变量被称为局部变量;
- 定义在方法参数中的变量被称为参数。
也就是下面代码所描述的这样
public class VariablesInJava {
int instanceVariable; // 实例变量
static String staticVariable; // 类变量
public void method() {
String localVariable = "localVariable"; // 局部变量
System.out.println(localVariable);
}
public static void main(String args[]) {} //参数
}
好了小伙伴们,我 bibi 太多,被踢出群聊了。
关注我,带你更好的学习编程。
相关推荐
- Excel表格带单位求和不用愁!2个高效小技巧,轻松搞定!
-
我是【桃大喵学习记】,欢迎大家关注哟~,每天为你分享职场办公软件使用技巧干货!——首发于微信号:桃大喵学习记最近有小伙伴私信提问了个问题:“Excel表格数据带单位,如何快速求和?”。相信很多新手小伙...
- [office] Excel中Sumproduct函数的使用方法-
-
Excel中Sumproduct函数的使用方法-SUMPRODUCT和SUMIFS是Excel的两个最强大的函数,用于从表中返回过滤的数据。SUMPRODUCT功能更强大,但SUMIFS更快。您可以...
- SUMPRODUCT函数:关于多条件求和,不仅仅是SUMIFS,我也行!
-
文章最后有彩蛋!好礼相送!SUMPRODUCT函数,作为excel函数公式中的常用功能之一,运用及其广泛。结合它能够处理数据的功能,函数哥将它称之为多条件求和的函数,你可能有疑问了。SUMIF和SUM...
- Excel函数公式大全之利用MMULT函数计算两个数组矩阵的乘积
-
各位Excel天天学的小伙伴们大家好,欢迎收看Excel天天学出品的excel2019函数公式大全课程。今天我们依旧要学习的是Excel函数中的数学函数MMULT函数,计算两个数组的矩阵乘积。今天这个...
- Excel中的这个“万能函数”你用过吗?一个顶四个,简单又实用
-
Hello,大家好,今天跟大家分享一个Excel中的最强大的求和函数,它就是——SUMPRODUCT函数,很多人都将其称之为“万能函数”,条件求和,条件计数等一些常用的功能他就能轻松搞定,逻辑也非常的...
- 根据关键字条件求和,SUMPRODUCT函数思路清晰!
-
1职场实例小伙伴们大家好,今天我们来讲解一个关于根据关键字进行条件求和的职场真实案例,这是公众号粉丝后台留言咨询的一个问题,下面我们来通过几组简单的数据还原一下真实的办公情景。如下图所示:A列为一列地...
- Excel-万能PRODUCT函数
-
sumproduct除了可以计算乘积之和,还可以实现单条件求和(代替sumif),多条件求和(代替sumifs),单条件计数(代替countif),多条件计数(代替countifs)我总结了一个通用的...
- Excel“王者”级求和函数SUMPRODUCT,职场必学!
-
我是【桃大喵学习记】,欢迎大家关注哟~,每天为你分享职场办公软件使用技巧干货!日常工作中我们经常需要对Excel数据求和、计数,今天就跟大家分享一下Excel“王者”级求和函数SUMPRODUCT,灵...
- SUMPRODUCT函数满足“或”的要求,实现多条件求和!
-
1职场实例小伙伴们大家好,今天我们来继续讲解Excel使用中非常实用且强大的函数:SUMPRODUCT函数,上一次我们讲到了SUMPRODUCT函数实现类似SUMIFS函数多条件求和的功能。而今天我们...
- 整列数据相乘再相加sumproduct函数#excel技巧
-
今天分享一下像这种表格,我想求它的消费,也就是用它的数量去乘以单价去加上。下一个的数量乘以单价要加上,下一个数量乘以单价。如果小白会这样一步一步的去算,去单价去乘以数量,然后加上单价去乘以数量,一个一...
- 双向多条件求和,sumifs彻底不行了,但是sumproduct却能轻松搞定
-
今天我们来解决一个困扰很多Excel新手的问题,它就双向求和,所谓的双向,就是两个方向,如下图所示,我们想要根据【项目】与【费用类别】来实现动态求和效果。【项目】与【费用类别】在数据源中,一个是纵横的...
- Excel函数之Sumproduct,7个经典用法,你真的都了解吗?
-
什么是sumproduct函数以及其基本操作原理?sumproduct函数主要用于对数组中的数值进行相乘后再求和,。该函数最多支持255个参数(数组),这些数组可以是数字单元格引用或区域。它的工作流程...
- WPS-Excel表格sumproduct函数一次性算出相乘相加总额
-
excel表格单纯相加或者相乘大家都会应用,但是有时候我们需要算出相乘相加的总额,这种计算也是可以一次性算出的。今天来教大家怎样在WPS表格中,让数据一次性算出相乘相加的总额,会了这个小技巧,会方便很...
- 大神级Sumproduct公式这么好用,1分钟学会!
-
在工作中,一般用不到Sumprodct函数公式,但是真的好用,我们举工作中的3个场景来说明。1、快速相乘相加如下所示,我们各种商品有一个单价,然后对应有一些数量,我们现在需要快速汇总总金额数据有没有小...
- 万能函数Sumproduct,除了求和和计数外,还可以排名
-
在众多的Excel函数中,能同时完成求和、计数以及排名功能的函数不多,其中Sumproduct就是其中一个。一、万能函数Sumproduct:功能及语法结构。功能:返回相应区域数组乘积的和。语法结...
- 一周热门
- 最近发表
-
- Excel表格带单位求和不用愁!2个高效小技巧,轻松搞定!
- [office] Excel中Sumproduct函数的使用方法-
- SUMPRODUCT函数:关于多条件求和,不仅仅是SUMIFS,我也行!
- Excel函数公式大全之利用MMULT函数计算两个数组矩阵的乘积
- Excel中的这个“万能函数”你用过吗?一个顶四个,简单又实用
- 根据关键字条件求和,SUMPRODUCT函数思路清晰!
- Excel-万能PRODUCT函数
- Excel“王者”级求和函数SUMPRODUCT,职场必学!
- SUMPRODUCT函数满足“或”的要求,实现多条件求和!
- 整列数据相乘再相加sumproduct函数#excel技巧
- 标签列表
-
- filter函数js (37)
- filter函数excel用不了 (73)
- 商城开发 (40)
- 影视网站免费源码最新版 (57)
- 影视资源api接口 (46)
- 网站留言板代码大全 (56)
- java版软件下载 (52)
- java教材电子课本下载 (48)
- java技术的电子书去哪看 (33)
- 0基础编程从什么开始学 (50)
- java是用来干嘛的 (51)
- it入门应该学什么 (55)
- java线上课程 (55)
- 学java的软件叫什么软件 (38)
- 程序开发软件有哪些 (53)
- 软件培训 (59)
- 机器人编程代码大全 (50)
- 少儿编程教程免费 (45)
- 新代系统编程教学 (61)
- 共创世界编程网站 (38)
- 亲测源码 (36)
- 三角函数积分公式表 (35)
- 函数的表示方法 (34)
- 表格乘法的公式怎么设置 (34)
- sumif函数的例子 (34)