java变量,常量和作用域

Java 基础知识之--变量的作用域 Java 基础知识中变量的作用域介绍 阅读详情

Java 中的变量、常量与作用域详解


一、变量(Variables)

变量是程序中存储数据的基本单元,其值在程序运行过程中可以改变。

1. 变量的声明与初始化

• 声明语法:数据类型 变量名;

int age;       // 声明一个整型变量
double price;  // 声明一个双精度浮点型变量

• 初始化:变量可以在声明时直接赋值,或后续赋值。

int age = 25;           // 声明并初始化
String name = "Alice";  // 字符串变量
2. 变量的分类
  1. 成员变量(实例变量)
    • 定义在类内部、方法外部,属于对象实例的变量。
    • 生命周期:随对象创建而存在,对象被回收时销毁。
    • 默认值:未显式初始化时,系统自动赋予默认值(如 int 为 0,boolean 为 false)。

    public class Person {
        String name;  // 成员变量,默认值为 null
        int age;      // 默认值为 0
    }
    
  2. 局部变量
    • 定义在方法、代码块或构造函数内,仅在当前作用域有效。
    • 生命周期:方法/块执行时存在,执行完毕销毁。
    • 必须显式初始化:未赋值的局部变量会编译报错。

    void calculate() {
        int result;      // 错误!局部变量未初始化
        int sum = 10;    // 正确
    }
    
  3. 静态变量(类变量)
    • 使用 static 修饰,属于类本身,所有对象共享。
    • 生命周期:随类的加载而存在,程序结束时销毁。
    • 默认值:同成员变量。

    public class Counter {
        static int count = 0;  // 静态变量
    }
    

二、常量(Constants)

常量是不可变的值,一旦赋值后不可修改。

1. 常量的定义

• 使用 final 关键字声明,通常全大写命名,单词间用下划线分隔。

final double PI = 3.14159;          // 常量PI
final int MAX_SIZE = 100;            // 常量MAX_SIZE
final String DEFAULT_NAME = "John";  // 字符串常量
2. 常量的初始化

• 声明时赋值:

final int DAYS_IN_WEEK = 7;

• 构造方法/静态块中赋值(针对类常量):

public class Config {
    final int MAX_USERS;
    public Config() {
        MAX_USERS = 100;  // 在构造方法中初始化
    }
}
3. 静态常量

• 使用 static final 修饰,表示类级别的不可变值。

public class MathConstants {
    static final double PI = 3.14159;  // 静态常量
}

三、作用域(Scope)

作用域指变量/常量在代码中的可见范围。

1. 类作用域

• 成员变量:在整个类内部可见,可被所有方法访问。
• 静态变量:通过类名直接访问(如 ClassName.staticVar)。

2. 方法作用域

• 局部变量:仅在声明它的方法内部可见。

void methodA() {
    int x = 5;  // 仅在methodA中可见
}
void methodB() {
    // System.out.println(x);  // 错误!x不可见
}
3. 块作用域

• 代码块(如循环、条件语句):变量仅在该块内可见。

for (int i = 0; i < 10; i++) {
    System.out.println(i);  // i仅在循环体内可见
}
// System.out.println(i);  // 错误!i超出作用域
4. 作用域覆盖规则

• 内部块覆盖外部同名变量:

int x = 10;
{
    int x = 20;  // 编译错误!同一作用域不可重复定义
}

• 不同作用域允许同名变量:

void func1() {
    int x = 5;
}
void func2() {
    int x = 10;  // 合法,不同作用域
}

四、关键注意事项
  1. 局部变量必须显式初始化:

    void test() {
        int a;       // 错误!未初始化
        int b = 10;  // 正确
    }
    
  2. 常量只能赋值一次:

    final int MAX;
    MAX = 100;  // 正确
    MAX = 200;  // 错误!不可二次赋值
    
  3. 避免作用域冲突:
    • 避免在同一作用域内重复定义变量。
    • 避免在内部块中定义与外部块同名的变量(除非必要)。

  4. 参数的作用域:
    • 方法参数在整个方法体内有效。

    void printMessage(String message) {  // message在方法内可见
        System.out.println(message);
    }
    

五、示例代码
public class ScopeExample {
    static final int MAX = 100;           // 静态常量
    int instanceVar = 20;                 // 成员变量

    public static void main(String[] args) {
        int localVar = 30;                // 局部变量
        final int MIN = 1;                // 局部常量

        if (localVar > MIN) {
            int blockVar = 40;            // 块作用域变量
            System.out.println(blockVar); // 输出40
        }
        // System.out.println(blockVar);  // 错误!blockVar不可见

        ScopeExample obj = new ScopeExample();
        System.out.println(obj.instanceVar); // 输出20
        System.out.println(MAX);             // 输出100
    }
}

六、总结

• 变量:分成员变量、局部变量、静态变量,作用域和生命周期不同。
• 常量:用 final 定义,不可修改,命名全大写。
• 作用域:类、方法、块三级,遵循“就近访问”原则。
• 关键规则:局部变量必须初始化,常量仅一次赋值,避免作用域冲突。

实测对比:DeepSeek、豆包、千问三大AI模型生成测试用例谁更强?(附完整代码) 本文通过实测对比了DeepSeek、豆包、千问三大AI模型在生成测试用例方面的表现。文章提供了完整的Python代码实现,详细分析了各模型在用例完整性、准确性、边界覆盖及幻觉控制等维度的差异,并分享了工程化集成与多模型融合等优化策略,旨在帮助测试团队选择合适工具以提升工作效率。 阅读详情

相关推荐

Linux系统杀毒软件深度评测:8款主流工具对比(2025最新版)

本文针对Linux服务器/桌面环境,实测8款杀毒软件,涵盖开源免费、企业级防护、轻量级工具等类型,附保姆级安装教程和避坑指南,新手也能5分钟选对工具!

awei0916的专栏 1万+

java中四大作用域

范围最小的一个域,可以获取其他八大内置对象,可以认为是一个入口对象,能够获取其他所有域中的数据。能跳转到其他资源,其身上提供forward和sendRedirect方法,简化了转发和重定向的操作,代表页面上下文,该对象主要用于访问jsp之间的共享数据,当对jsp的请求时开始,当响应结束时销毁。:所有作用域中范围最大的域,由于所有servlet共享一个servletcontext对象,所有多个servlet通过servletcontext可以实现数据在不同servlet之间的共享,是一个全局变量。

m0_68322975的博客 2391

从稀疏表示到低秩表示(一)

确定研究方向后一直在狂补理论,最近看了一些文章,有了些想法,顺便也总结了representation系列的文章,由于我刚接触,可能会有些不足,愿大家共同指正。 从稀疏表示到低秩表示系列文章包括如下内容: 一、 sparse representation 二、 一、 sparse representation 1  sparsity  一个线性表示解决的问题如下图所示:

彼岸花 3万+

Java——变量作用域和生命周期

在Java中,作用域(Scope)指的是变量、方法和类在代码中的可见性和生命周期。理解作用域有助于编写更清晰、更高效的代码。

Stewie Lee的博客 3207

泛微Ecology9接口调用全流程:从配置到实战Java代码解析

本文详细解析了泛微Ecology9系统接口的完整调用流程,涵盖安全架构、服务端配置与客户端Java实战代码。重点阐述了基于RSA加密的认证机制、Token管理策略,并提供了企业级集成的核心代码示例与生产环境调优建议,帮助开发者安全、高效地实现系统对接。

m9n0o的博客 840

伯德图详解:从传递函数到系统稳定性的频域分析

在自动控制与控制系统设计中,理解系统对不同频率输入信号的响应特性,是分析和设计稳定系统的核心基础。频率响应描述了系统对正弦输入的幅值增益与相位变化规律,而伯德图作为最直观的频域分析工具,通过对数坐标将宽频带特性压缩成一条清晰曲线,让工程师无需复杂计算即可快速评估系统性能。从典型环节的渐近线绘制,到相位裕度、幅值裕度的读取,伯德图贯穿了系统稳定性判断、控制器参数整定及噪声抑制等关键场景。本文结合实际调试经验,系统讲解伯德图的绘制原理与读图方法,帮助读者快速掌握从传递函数到工程应用的核心技能。

weixin_34535286的博客 344

Java学习 --- 作用域

1、在Java编程中,主要的变量就是属性(成员方法)和局部变量。2、局部变量一般是指在成员方法中定义的变量。3、作用域的分类:①、全局变量:属性,作用于整个类体。②、局部变量:除了属性之外的其他变量,作用域为定义它的代码块中。这里直接编译就报错:4、全局变量可以赋值,直接使用,有默认值,局部变量必须赋值后,才能使用,没有默认值。......

qq_46093575的博客 2649

红外图像和可见光图像异源图像配准问题研究

本文旨在研究一种具有高准确率和鲁棒性的融合图像障碍物检测技术,通过把红外和可见光图像进行图像配准和融合,获取高质量的异源融合图像,根据融合图像的特点采用有效的障碍物检测算法,将图像中的障碍物准确检出。......

G_redsky的博客 1万+

java中的作用域

局部变量,生命周期较短,伴随着它的代码块的执行而创建,伴随着代码块的结束而死亡,即 在 一次方法调用过程中。3、java中作用域的分类全局变量: 也就是属性,作用域为整个类体 Cat类: cry eat 等方法使用属性 【举例】2、在同一个作用域中,比如在同一个成员方法中,两个局部变量,不能重名。1、在java编程中,主要的变量就是属性(成员变量/全局变量)和局部变量。3、属性生命周期较长,伴随着对象的创建而创建,伴随着对象的死亡而死亡。4、全局变量可以不赋值,直接使用,因为有默认值,

lmd187的博客 968

pt100和max31865测室温跳变比较大,会从23.04跳到23.47,23.75反复跳变超过了0.5的误差范围,在VDD和GND之间加上0.1和10的滤波电容也不行,如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 2088

AI大模型入门到实战系列(二十一)命名实体识别(NER)

命名实体识别(NER)是自然语言处理中的关键任务,旨在从文本中识别并分类预定义类别的实体(如人名、地点、组织等)。其核心步骤包括文本预处理、实体边界检测和类型分类。主流技术方法经历了从基于规则、统计机器学习到深度学习的演进,当前主要采用预训练语言模型(如BERT)和序列标注技术(如BiLSTM-CRF)。关键技术挑战包括实体边界模糊、嵌套实体和领域适应等问题。NER广泛应用于信息抽取、搜索引擎优化和知识图谱构建等领域,常用精确率、召回率和F1值作为评估指标。实际应用中通常采用BIO标注体系,并通过标签对齐处

echo的博客 1625

Java 变量与作用域、常量与作用域

Java的变量与作用域、常量与作用域

2401_87141991的博客 738

YOLO126优化:损失篇 | AAAI 2025 | 一种基于尺度的动态(SD)损失,根据目标大小动态调整尺度和位置损失的影响,提高了网络检测不同尺度目标的能力

提出了一种基于尺度的动态(SD)损失,它根据目标大小动态调整尺度和位置损失的影响,提高了网络检测不同尺度目标的能力。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 448

java代码中变量,变量作用域,常量的相关介绍以及使用

/类成员变量:首字母小写和驼峰原则,除了第一个单词以外,后面的单词首字母大写,例:montjSalary。//final修饰的只能赋值这一次,指它是一个静态的常量,不能修改,游戏里设置宽高的时候可以使用。//修饰符,不存在先后顺序,所以static和final可以随意调换位置不影响代码跑,/*java 变量是程序中最基本的存储单位,其中包括变量名,变量类型和作用域。//实例变量:从属于对象;//方法名:首字母小写和驼峰原则:run(),runRun()//变量类型 变量名字 =new Demo07();

2401_87682199的博客 1400

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Java 变量,常量,作用域

Java 变量 常量 作用域 ◆变量是什么就是可以变化的量! ◆Java是-种强类型语言,每个变量都必须声明其类型。 ◆Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。 type varName [=value] [{, varName[=value]}] ; //数据类型变量名 =值;可以使用逗号隔开来声明多个同类型变量。 ◆注意事项: ●每个变量都有类型,类型可以是基...

qq_44500569的博客 308

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

java基础 变量 常量 作用域

int a,b,c;int a=1;int b=2;int c=3;// 属性: 变量//main 方法//变量类型 变量名字= new Demo01();final 的位置是可以随意更换的,变量类型前面都是代码修饰符的,修饰符是不存在先后顺序的,我们在定义常量后是可以随时使用的 ,还是很简单的哈最后我们来看一下变量的命名规范。

weixin_71161796的博客 801

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Java变量、变量作用域、常量

Java变量、变量作用域、常量

qq_45677189的博客 739

Java中的变量、常量、作用域

Java基础02:变量、常量、作用域 变量 变量是什么:就是可以变化的量! Java是一种强类型语言,每个变量都必须声明其类型。 Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。 注意事项: 每个变量都有类型,类型可以是基本类型,也可以是引用类型。 变量名必须是合法的标识符。 变量声明是一条完整的语句,因此每一个声明都必须以分号结束。 变量作用域 类变量、实例变量、局部变量 public class Demo08 { //类变量 static static

丿涛哥哥的博客 402

JAVA变量、常量、作用域

变量、常量、作用域 变量: 变量即可变化的量。 JAVA是一种强类型语言,每个变量必须声明其类型。 JAVA变量是程序中最基本的存储单位,其要素包括变量名,变量类型和作用域。 // 变量类型 变量名 = 值; int number = 10; 每个变量都有类型,可以是基本类型,可以是引用类型 变量作用域: 类变量 实例变量 局部变量 public class Hello{ static int a = 0;//类变量 从属于类 String str = "hello"

qq_33956536的博客 204

java基础06:变量、常量、作用域

常量(Constant):初始化(initialize)后不能在改变值!所谓常量可理解为一种特殊的变量,它的式被设定后,在程序运行过程中不允许被改变。Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型。Java是一种强类型语言,每个变量都必须声明其类型。变量是什么:就是可以变化的量!常量名一般使用大写字符。

2301_77129712的博客 683

Java变量 常量 作用域

Java变量 常量 作用域 变量定义 变量是什么:就是可以变化的量 java是一种强类型语言,每个变量都必须声明其类型 java变量是程序中最基本的储存单元,其要素包括变量名,变量类型和作用域 程序结构 //程序结构 public class hello2 { //属性:变量 int age; //实例变量;从属于对象;如果不自行初始化,这个类型的默认值 0 0.0 //main方法 public static void main(String[] arg

sun_hentai的博客 261

JAVA基础:变量、常量、作用域

变量是程序中可以改变值的标识符。它们用于存储数据,以便在程序执行过程中可以对其进行操作。**补充:**可以在一行声明并初始化多个变量也可以在一行声明多个变量这里的a,b,c中只有c是被初始化了的,a和b都没有被初始化,因此不能使用。**作用域:**作用域(Scope)指的是一个变量或实体在代码中可见的区域。局部变量:是指在一个方法中定义的变量,仅可以在这个方法中使用。也就是说,局部变量的作用域仅在当前的代码块。上述代码中,test是另一个方法,却调用了,main方法中的局部变量,所以报错。实例变量。

LHY的博客 124

Java的变量、常量、作用域

变量、常量、作用域 变量 变量是什么:就是可以变化的量! Java是一种强类型语言,每个变量都必须声明其类型。 Java变量是程序中最基本的存储单元,其要素包含变量名,变量类型和 作用域。 type varName [=value] [{,varName[=value]}]; int a,b,c; //数据类型 变量名 = 值; 可以使用逗号隔开来声明多个同类型变量。 //不建议在一行定义多个变量!!!很麻烦 注意事项: 每个变量都有类型,类型可以是基本类型,也可以是引用类型。 变量名必须是合法

gh404的博客 131

Java-变量、常量、作用域

Java学习-变量、常量、作用域

weixin_44704687的博客 161

java中的变量 常量 作用域

Java里的变量 常量 和作用域的介绍

qq_61572771的博客 234

java 常量的作用域_Java变量、常量、作用域

变量、常量、作用域变量变量:变量就是可以变化的值。变量可以理解为内存中的一个空间,这个空间的位置是固定的,但是空间内部的数据是不确定可以变化的。Java是一中强类型语言,每个变量都必须声明其类型。Java变量是程序中最基本的存储单元,其要素包括变量类型、变量名和作用域。type varName =value ,varName =value;//数据类型+变量名=值;可以用逗号隔开多个同类型的变量。...

weixin_26814683的博客 203
上一篇: java数据类型
下一篇: java运算符
小李不秃头♛
博客等级 码龄2年 619粉丝 102原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值